From 00f8deb8f2dd6f0871e1ab628bf06ad420c6201a Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 6 Oct 2023 16:01:15 -0700 Subject: [PATCH 01/34] Rewrite based on code from the GitHub Dependency Graph Gradle Plugin --- COPYING | 23 +- LICENSE | 177 +++ app/build.gradle.kts | 71 +- app/gradle.lockfile | 38 - .../kotlin/org/nixos/gradle2nix/Artifact.kt | 9 + .../main/kotlin/org/nixos/gradle2nix/Env.kt | 50 - .../org/nixos/gradle2nix/GradleRunner.kt | 40 +- .../kotlin/org/nixos/gradle2nix/Logger.kt | 5 +- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 205 ++- .../kotlin/org/nixos/gradle2nix/Process.kt | 207 +++ .../kotlin/org/nixos/gradle2nix/Projects.kt | 11 - .../dependency/ComponentArtifactIdentifier.kt | 31 + .../dependency/ComponentIdentifier.kt | 28 + .../ModuleComponentArtifactIdentifier.kt | 40 + .../dependency/ModuleComponentIdentifier.kt | 76 + .../gradle2nix/dependency/ModuleIdentifier.kt | 40 + .../metadata/ArtifactVerificationMetadata.kt | 6 + .../org/nixos/gradle2nix/metadata/Checksum.kt | 43 + .../nixos/gradle2nix/metadata/ChecksumKind.kt | 30 + .../metadata/ComponentVerificationMetadata.kt | 8 + .../DependencyVerificationConfiguration.kt | 98 ++ .../metadata/DependencyVerificationXmlTags.kt | 48 + .../DependencyVerificationsXmlReader.kt | 421 ++++++ .../gradle2nix/metadata/DependencyVerifier.kt | 23 + .../metadata/DependencyVerifierBuilder.kt | 162 +++ .../org/nixos/gradle2nix/BuildSrcTest.kt | 19 - .../kotlin/org/nixos/gradle2nix/GoldenTest.kt | 40 + .../kotlin/org/nixos/gradle2nix/TestUtil.kt | 152 +- assets/gradle2nix.svg | 29 +- build.gradle.kts | 36 +- .../basic-java-project/groovy/build.gradle | 1 - .../groovy/settings.gradle} | 0 .../kotlin/build.gradle.kts | 1 - .../kotlin/settings.gradle.kts} | 0 .../kotlin/build.gradle.kts | 54 +- .../kotlin/settings.gradle.kts} | 0 .../kotlin/build.gradle.kts | 4 +- .../kotlin/buildSrc/build.gradle.kts | 3 +- .../apply-plugin-publish.gradle.kts | 5 + .../com.example/custom-spotless.gradle.kts | 11 - .../classifier/groovy/settings.gradle} | 0 .../classifier/kotlin/build.gradle.kts | 2 +- .../classifier/kotlin/settings.gradle.kts | 0 .../maven-bom/kotlin/build.gradle.kts | 4 +- .../maven-bom/kotlin/settings.gradle.kts | 0 .../snapshot-dynamic/groovy/build.gradle | 4 +- .../snapshot-dynamic/groovy/settings.gradle | 0 .../snapshot-dynamic/kotlin/build.gradle.kts | 3 +- .../kotlin/settings.gradle.kts | 0 .../snapshot-redirect/groovy/build.gradle | 3 +- .../snapshot-redirect/groovy/settings.gradle | 0 .../dependency/snapshot/groovy/build.gradle | 4 +- .../snapshot/groovy/settings.gradle | 0 .../snapshot/kotlin/build.gradle.kts | 3 +- .../snapshot/kotlin/settings.gradle.kts | 0 .../basic/basic-java-project.groovy.json | 72 + .../basic/basic-java-project.kotlin.json | 72 + .../basic/basic-kotlin-project.kotlin.json | 1258 +++++++++++++++++ .../buildsrc/plugin-in-buildsrc.kotlin.json | 576 ++++++++ .../golden/dependency/classifier.groovy.json | 16 + .../golden/dependency/classifier.kotlin.json | 16 + .../golden/dependency/maven-bom.kotlin.json | 38 + .../dependency/snapshot-dynamic.groovy.json | 2 + .../dependency/snapshot-dynamic.kotlin.json | 2 + .../dependency/snapshot-redirect.groovy.json | 16 + .../golden/dependency/snapshot.groovy.json | 2 + .../golden/dependency/snapshot.kotlin.json | 2 + .../settings-buildscript.groovy.json | 128 ++ fixtures/golden/ivy/basic.kotlin.json | 30 + .../resolves-from-default-repo.groovy.json | 494 +++++++ .../resolves-from-default-repo.kotlin.json | 494 +++++++ fixtures/golden/s3/maven-snapshot.groovy.json | 2 + fixtures/golden/s3/maven-snapshot.kotlin.json | 2 + fixtures/golden/s3/maven.groovy.json | 2 + fixtures/golden/s3/maven.kotlin.json | 2 + .../golden/settings/buildscript.groovy.json | 16 + ...pendency-resolution-management.kotlin.json | 16 + .../subprojects/multi-module.groovy.json | 114 ++ .../subprojects/multi-module.kotlin.json | 114 ++ fixtures/ivy/basic/kotlin/build.gradle.kts | 6 +- fixtures/ivy/basic/kotlin/settings.gradle.kts | 0 .../groovy/build.gradle | 4 +- .../groovy/settings.gradle | 0 .../kotlin/build.gradle.kts | 5 +- .../kotlin/settings.gradle.kts | 0 .../s3/maven-snapshot/kotlin/build.gradle.kts | 3 +- fixtures/s3/maven/kotlin/build.gradle.kts | 2 +- .../buildscript/groovy/settings.gradle | 2 +- .../kotlin/build.gradle.kts | 3 +- .../kotlin/settings.gradle.kts | 4 +- .../dependent-subprojects/groovy/build.gradle | 15 - .../groovy/settings.gradle | 1 - .../multi-module/groovy/build.gradle | 4 +- .../multi-module/kotlin/build.gradle.kts | 2 +- .../kotlin/child-a/build.gradle.kts | 1 + .../kotlin/child-b/build.gradle.kts | 1 + gradle.properties | 5 +- gradle/libs.versions.toml | 43 + gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 61574 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 269 ++-- gradlew.bat | 15 +- ivy/build.gradle.kts | 24 - ivy/gradle.lockfile | 123 -- .../main/kotlin/org/nixos/gradle2nix/S3.kt | 294 ---- .../kotlin/org/nixos/gradle2nix/S3Test.kt | 113 -- model/build.gradle.kts | 22 +- model/gradle.lockfile | 13 - .../nixos/gradle2nix/DependencyCoordinates.kt | 6 + .../org/nixos/gradle2nix/DependencySource.kt | 13 + .../main/kotlin/org/nixos/gradle2nix/Impl.kt | 139 -- .../main/kotlin/org/nixos/gradle2nix/Model.kt | 51 - .../org/nixos/gradle2nix/PluginParameters.kt | 7 + .../kotlin/org/nixos/gradle2nix/Repository.kt | 20 + .../nixos/gradle2nix/ResolvedConfiguration.kt | 19 + .../nixos/gradle2nix/ResolvedDependency.kt | 32 + plugin/.stutter/java11.lock | 5 - plugin/.stutter/java8.lock | 7 - plugin/build.gradle.kts | 97 +- plugin/buildscript-gradle.lockfile | 36 - plugin/gradle.lockfile | 170 --- .../kotlin/org/nixos/gradle2nix/BasicTest.kt | 74 - .../org/nixos/gradle2nix/DependencyTest.kt | 102 -- .../kotlin/org/nixos/gradle2nix/IvyTest.kt | 34 - .../kotlin/org/nixos/gradle2nix/PluginTest.kt | 25 - .../kotlin/org/nixos/gradle2nix/S3Test.kt | 52 - .../org/nixos/gradle2nix/SettingsTest.kt | 39 - .../org/nixos/gradle2nix/SubprojectsTest.kt | 152 -- .../kotlin/org/nixos/gradle2nix/TestUtil.kt | 300 ---- .../org/nixos/gradle2nix/WrapperTest.kt | 27 - .../java/org/nixos/gradle2nix/ApiHack.java | 15 - .../nixos/gradle2nix/ConfigurationResolver.kt | 303 ---- .../org/nixos/gradle2nix/Gradle2NixPlugin.kt | 283 +--- .../org/nixos/gradle2nix/ModelProperties.kt | 20 - .../gradle2nix/NixDependencyGraphRenderer.kt | 21 + .../org/nixos/gradle2nix/PluginResolver.kt | 31 - .../nixos/gradle2nix/RepositoriesCollector.kt | 37 - .../nixos/gradle2nix/RepositoryResolver.kt | 317 ----- .../main/kotlin/org/nixos/gradle2nix/Util.kt | 24 - .../AbstractDependencyExtractorPlugin.kt | 128 ++ .../DependencyGraphRenderer.kt | 11 + .../extractor/DependencyExtractor.kt | 342 +++++ .../DependencyExtractorBuildService.kt | 19 + .../extractor/LegacyDependencyExtractor.kt | 10 + .../extractor/ResolvedConfigurationFilter.kt | 16 + .../dependencygraph/util/GradleExtensions.kt | 19 + .../dependencygraph/util/PluginParameters.kt | 6 + .../ForceDependencyResolutionPlugin.kt | 65 + .../LegacyResolveProjectDependenciesTask.kt | 20 + .../ResolveProjectDependenciesTask.kt | 31 + settings.gradle.kts | 44 +- 151 files changed, 6417 insertions(+), 3483 deletions(-) create mode 100644 LICENSE delete mode 100644 app/gradle.lockfile create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/Artifact.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/Env.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/Process.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentArtifactIdentifier.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentIdentifier.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentArtifactIdentifier.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentIdentifier.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleIdentifier.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/ArtifactVerificationMetadata.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/Checksum.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/ChecksumKind.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/ComponentVerificationMetadata.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationConfiguration.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationXmlTags.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationsXmlReader.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifier.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifierBuilder.kt delete mode 100644 app/src/test/kotlin/org/nixos/gradle2nix/BuildSrcTest.kt create mode 100644 app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt rename fixtures/{subprojects/dependent-subprojects/groovy/child-a/build.gradle => basic/basic-java-project/groovy/settings.gradle} (100%) rename fixtures/{subprojects/dependent-subprojects/groovy/child-b/build.gradle => basic/basic-java-project/kotlin/settings.gradle.kts} (100%) rename fixtures/{subprojects/dependent-subprojects/groovy/child-c/build.gradle => basic/basic-kotlin-project/kotlin/settings.gradle.kts} (100%) create mode 100644 fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/apply-plugin-publish.gradle.kts delete mode 100644 fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/custom-spotless.gradle.kts rename fixtures/{subprojects/dependent-subprojects/groovy/child-d/build.gradle => dependency/classifier/groovy/settings.gradle} (100%) create mode 100644 fixtures/dependency/classifier/kotlin/settings.gradle.kts create mode 100644 fixtures/dependency/maven-bom/kotlin/settings.gradle.kts create mode 100644 fixtures/dependency/snapshot-dynamic/groovy/settings.gradle create mode 100644 fixtures/dependency/snapshot-dynamic/kotlin/settings.gradle.kts create mode 100644 fixtures/dependency/snapshot-redirect/groovy/settings.gradle create mode 100644 fixtures/dependency/snapshot/groovy/settings.gradle create mode 100644 fixtures/dependency/snapshot/kotlin/settings.gradle.kts create mode 100644 fixtures/golden/basic/basic-java-project.groovy.json create mode 100644 fixtures/golden/basic/basic-java-project.kotlin.json create mode 100644 fixtures/golden/basic/basic-kotlin-project.kotlin.json create mode 100644 fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json create mode 100644 fixtures/golden/dependency/classifier.groovy.json create mode 100644 fixtures/golden/dependency/classifier.kotlin.json create mode 100644 fixtures/golden/dependency/maven-bom.kotlin.json create mode 100644 fixtures/golden/dependency/snapshot-dynamic.groovy.json create mode 100644 fixtures/golden/dependency/snapshot-dynamic.kotlin.json create mode 100644 fixtures/golden/dependency/snapshot-redirect.groovy.json create mode 100644 fixtures/golden/dependency/snapshot.groovy.json create mode 100644 fixtures/golden/dependency/snapshot.kotlin.json create mode 100644 fixtures/golden/integration/settings-buildscript.groovy.json create mode 100644 fixtures/golden/ivy/basic.kotlin.json create mode 100644 fixtures/golden/plugin/resolves-from-default-repo.groovy.json create mode 100644 fixtures/golden/plugin/resolves-from-default-repo.kotlin.json create mode 100644 fixtures/golden/s3/maven-snapshot.groovy.json create mode 100644 fixtures/golden/s3/maven-snapshot.kotlin.json create mode 100644 fixtures/golden/s3/maven.groovy.json create mode 100644 fixtures/golden/s3/maven.kotlin.json create mode 100644 fixtures/golden/settings/buildscript.groovy.json create mode 100644 fixtures/golden/settings/dependency-resolution-management.kotlin.json create mode 100644 fixtures/golden/subprojects/multi-module.groovy.json create mode 100644 fixtures/golden/subprojects/multi-module.kotlin.json create mode 100644 fixtures/ivy/basic/kotlin/settings.gradle.kts create mode 100644 fixtures/plugin/resolves-from-default-repo/groovy/settings.gradle create mode 100644 fixtures/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts delete mode 100644 fixtures/subprojects/dependent-subprojects/groovy/build.gradle delete mode 100644 fixtures/subprojects/dependent-subprojects/groovy/settings.gradle create mode 100644 gradle/libs.versions.toml delete mode 100644 ivy/build.gradle.kts delete mode 100644 ivy/gradle.lockfile delete mode 100644 ivy/src/main/kotlin/org/nixos/gradle2nix/S3.kt delete mode 100644 ivy/src/test/kotlin/org/nixos/gradle2nix/S3Test.kt delete mode 100644 model/gradle.lockfile create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/DependencySource.kt delete mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/Impl.kt delete mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/Model.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/PluginParameters.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/Repository.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/ResolvedConfiguration.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt delete mode 100644 plugin/.stutter/java11.lock delete mode 100644 plugin/.stutter/java8.lock delete mode 100644 plugin/buildscript-gradle.lockfile delete mode 100644 plugin/gradle.lockfile delete mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/BasicTest.kt delete mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/DependencyTest.kt delete mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/IvyTest.kt delete mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/PluginTest.kt delete mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/S3Test.kt delete mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SettingsTest.kt delete mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SubprojectsTest.kt delete mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/TestUtil.kt delete mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/WrapperTest.kt delete mode 100644 plugin/src/main/java/org/nixos/gradle2nix/ApiHack.java delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/ConfigurationResolver.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/ModelProperties.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/PluginResolver.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoriesCollector.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoryResolver.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/Util.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/LegacyDependencyExtractor.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/ResolvedConfigurationFilter.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/PluginParameters.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt diff --git a/COPYING b/COPYING index 22a0345..3a6e355 100644 --- a/COPYING +++ b/COPYING @@ -1,20 +1,7 @@ -Copyright © Tad Fisher and the gradle2nix contributors +Copyright © Tad Fisher and the gradle2nix contributors, and licensed +under the Apache License 2.0. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +Based on substantial portions of the GitHub Dependency Graph Gradle Plugin, +Copyright © Gradle, Inc and licensed under the Apache License 2.0. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +See LICENSE for the full text of the Apache License 2.0. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f433b1a --- /dev/null +++ b/LICENSE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6efa4c6..3f194ea 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,27 +1,28 @@ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - plugins { - kotlin("jvm") - kotlin("kapt") + id("org.jetbrains.kotlin.jvm") + id("org.jetbrains.kotlin.plugin.serialization") application } +configurations { + register("share") +} + dependencies { - implementation(project(":model")) implementation(kotlin("reflect")) - implementation("org.gradle:gradle-tooling-api:${gradle.gradleVersion}") - implementation("com.github.ajalt:clikt:latest.release") - implementation("org.slf4j:slf4j-api:latest.release") - runtimeOnly("org.slf4j:slf4j-simple:latest.release") - implementation("com.squareup.moshi:moshi-adapters:latest.release") - implementation("com.squareup.moshi:moshi-kotlin:latest.release") - kapt("com.squareup.moshi:moshi-kotlin-codegen:latest.release") - implementation("com.squareup.okio:okio:latest.release") + implementation(project(":model")) + implementation(libs.clikt) + implementation(libs.gradle.toolingApi) + implementation(libs.serialization.json) + implementation(libs.slf4j.api) + runtimeOnly(libs.slf4j.simple) + implementation(libs.okio) + + "share"(project(":plugin", configuration = "shadow")) testRuntimeOnly(kotlin("reflect")) - testImplementation("org.spekframework.spek2:spek-dsl-jvm:latest.release") - testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:latest.release") - testImplementation("io.strikt:strikt-core:latest.release") + testImplementation(libs.kotest.assertions) + testImplementation(libs.kotest.runner) } application { @@ -29,11 +30,15 @@ application { applicationName = "gradle2nix" applicationDefaultJvmArgs += "-Dorg.nixos.gradle2nix.share=@APP_HOME@/share" applicationDistribution - .from(tasks.getByPath(":plugin:shadowJar"), "$rootDir/gradle-env.nix") + .from(configurations.named("share")) .into("share") .rename("plugin.*\\.jar", "plugin.jar") } +kotlin { + jvmToolchain(11) +} + sourceSets { test { resources { @@ -42,6 +47,8 @@ sourceSets { } } +val updateGolden = providers.gradleProperty("update-golden") + tasks { (run) { dependsOn(installDist) @@ -52,28 +59,32 @@ tasks { startScripts { doLast { - unixScript.writeText(unixScript.readText().replace("@APP_HOME@", "\$APP_HOME")) + unixScript.writeText( + unixScript.readText() + .replace("@APP_HOME@", "\\\"\$APP_HOME\\\"") + .replace(Regex("DEFAULT_JVM_OPTS=\'(.*)\'")) { match -> + "DEFAULT_JVM_OPTS=${match.groupValues[1]}" + } + ) windowsScript.writeText(windowsScript.readText().replace("@APP_HOME@", "%APP_HOME%")) } } - test { + withType { + notCompatibleWithConfigurationCache("huh?") dependsOn(installDist) doFirst { - systemProperties("org.nixos.gradle2nix.share" to installDist.get().destinationDir.resolve("share")) - } - useJUnitPlatform { - includeEngines("spek2") + if (updateGolden.isPresent) { + systemProperty("org.nixos.gradle2nix.update-golden", "") + } + systemProperties( + "org.nixos.gradle2nix.share" to installDist.get().destinationDir.resolve("share"), + "org.nixos.gradle2nix.m2" to rootDir.resolve("fixtures/repositories/m2").toURI().toString() + ) } + useJUnitPlatform() testLogging { events("passed", "skipped", "failed") } } - - withType { - kotlinOptions { - jvmTarget = "1.8" - freeCompilerArgs = listOf("-Xopt-in=kotlin.RequiresOptIn") - } - } } diff --git a/app/gradle.lockfile b/app/gradle.lockfile deleted file mode 100644 index 968ee4b..0000000 --- a/app/gradle.lockfile +++ /dev/null @@ -1,38 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.christophsturm:filepeek:0.1.2=testRuntimeClasspath -com.github.ajalt:clikt:2.8.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.squareup.moshi:moshi-adapters:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.squareup.moshi:moshi-kotlin:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.squareup.moshi:moshi:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.squareup.okio:okio:3.0.0-alpha.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.github.classgraph:classgraph:4.8.37=testRuntimeClasspath -io.strikt:strikt-core:0.28.2=testCompileClasspath,testRuntimeClasspath -net.swiftzer.semver:semver:1.1.1=runtimeClasspath,testRuntimeClasspath -org.apiguardian:apiguardian-api:1.1.0=testRuntimeClasspath -org.gradle:gradle-tooling-api:6.8.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-reflect:1.4.20=compileClasspath,runtimeClasspath,testCompileClasspath -org.jetbrains.kotlin:kotlin-reflect:1.4.21-2=testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.4.21-2=testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.21-2=testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.20=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.21-2=testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.4.20=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.4.21-2=testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3=testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.4.2=testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2=testRuntimeClasspath -org.jetbrains:annotations:13.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-commons:1.6.0=testRuntimeClasspath -org.junit.platform:junit-platform-engine:1.6.0=testRuntimeClasspath -org.junit:junit-bom:5.6.0=testRuntimeClasspath -org.opentest4j:opentest4j:1.2.0=testCompileClasspath,testRuntimeClasspath -org.slf4j:slf4j-api:2.0.0-alpha1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.slf4j:slf4j-simple:2.0.0-alpha1=runtimeClasspath,testRuntimeClasspath -org.spekframework.spek2:spek-dsl-jvm:2.0.15=testCompileClasspath,testRuntimeClasspath -org.spekframework.spek2:spek-runner-junit5:2.0.15=testRuntimeClasspath -org.spekframework.spek2:spek-runtime-jvm:2.0.15=testRuntimeClasspath -empty= diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Artifact.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Artifact.kt new file mode 100644 index 0000000..efa0d1c --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Artifact.kt @@ -0,0 +1,9 @@ +package org.nixos.gradle2nix + +import kotlinx.serialization.Serializable + +@Serializable +data class Artifact( + val urls: List, + val hash: String, +) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Env.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Env.kt deleted file mode 100644 index 6c4135a..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Env.kt +++ /dev/null @@ -1,50 +0,0 @@ -package org.nixos.gradle2nix - -import com.squareup.moshi.JsonClass - -@JsonClass(generateAdapter = true) -data class NixGradleEnv( - val name: String, - val version: String, - val path: String, - val gradle: DefaultGradle, - val dependencies: Map> -) - -fun buildEnv(builds: Map): Map = - builds.mapValues { (path, build) -> - NixGradleEnv( - name = build.rootProject.name, - version = build.rootProject.version, - path = path, - gradle = build.gradle, - dependencies = mapOf( - "settings" to build.settingsDependencies, - "plugin" to build.pluginDependencies, - "buildscript" to build.rootProject.collectDependencies(DefaultProject::buildscriptDependencies), - "project" to build.rootProject.collectDependencies(DefaultProject::projectDependencies) - ) - ) - } - -private fun DefaultProject.collectDependencies( - chooser: DefaultProject.() -> List -): List { - val result = mutableMapOf() - mergeRepo(result, chooser()) - for (child in children) { - mergeRepo(result, child.collectDependencies(chooser)) - } - return result.values.toList() -} - -private fun mergeRepo( - base: MutableMap, - extra: List -) { - extra.forEach { artifact -> - base.merge(artifact.id, artifact) { old, new -> - old.copy(urls = old.urls.union(new.urls).toList()) - } - } -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt index 4978ebe..a0368e8 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt @@ -13,19 +13,31 @@ fun connect(config: Config): ProjectConnection = .forProjectDirectory(config.projectDir) .connect() -@Suppress("UnstableApiUsage") -fun ProjectConnection.getBuildModel(config: Config, path: String): DefaultBuild { - return model(Build::class.java).apply { - addArguments( - "--init-script=$shareDir/init.gradle", - "-Porg.nixos.gradle2nix.configurations=${config.configurations.joinToString(",")}", - "-Porg.nixos.gradle2nix.subprojects=${config.subprojects.joinToString(",")}" - ) - if (config.gradleArgs != null) addArguments(config.gradleArgs) - if (path.isNotEmpty()) addArguments("--project-dir=$path") - if (!config.quiet) { - setStandardOutput(System.err) - setStandardError(System.err) +fun ProjectConnection.build( + config: Config, +) { + newBuild() + .apply { + if (config.tasks.isNotEmpty()) { + forTasks(*config.tasks.toTypedArray()) + } else { + forTasks(RESOLVE_ALL_TASK) + } + addArguments(config.gradleArgs) + addArguments( + "--init-script=${config.appHome}/init.gradle", + "--write-verification-metadata", "sha256" + ) + if (config.projectFilter != null) { + addArguments("-D${PARAM_INCLUDE_PROJECTS}") + } + if (config.configurationFilter != null) { + addArguments("-D${PARAM_INCLUDE_CONFIGURATIONS}") + } + if (config.logger.verbose) { + setStandardOutput(System.err) + setStandardError(System.err) + } } - }.get().let { DefaultBuild(it) } + .run() } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt index 949249a..9191481 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt @@ -1,6 +1,7 @@ package org.nixos.gradle2nix import java.io.PrintStream +import kotlin.system.exitProcess class Logger( val out: PrintStream = System.err, @@ -9,9 +10,9 @@ class Logger( val log: (String) -> Unit = { if (verbose) out.println(it) } val warn: (String) -> Unit = { out.println("Warning: $it")} - val error: (String) -> Unit = { + val error: (String) -> Nothing = { out.println("Error: $it") - System.exit(1) + exitProcess(1) } operator fun component1() = log diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index afe4c1b..921ac1b 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -1,102 +1,97 @@ package org.nixos.gradle2nix -import com.github.ajalt.clikt.completion.CompletionCandidates import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.core.context import com.github.ajalt.clikt.output.CliktHelpFormatter -import com.github.ajalt.clikt.parameters.arguments.ProcessedArgument import com.github.ajalt.clikt.parameters.arguments.argument -import com.github.ajalt.clikt.parameters.arguments.convert -import com.github.ajalt.clikt.parameters.arguments.default +import com.github.ajalt.clikt.parameters.arguments.multiple import com.github.ajalt.clikt.parameters.options.default import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.multiple import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.options.validate import com.github.ajalt.clikt.parameters.types.file -import com.squareup.moshi.Moshi -import com.squareup.moshi.Types -import okio.buffer -import okio.sink import java.io.File - -val shareDir: String = System.getProperty("org.nixos.gradle2nix.share") +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.encodeToStream data class Config( + val appHome: File, + val gradleHome: File, val gradleVersion: String?, - val gradleArgs: String?, - val configurations: List, + val gradleArgs: List, + val projectFilter: String?, + val configurationFilter: String?, val projectDir: File, - val includes: List, - val subprojects: List, - val buildSrc: Boolean, - val quiet: Boolean -) { - val allProjects = listOf(projectDir) + includes + val tasks: List, + val logger: Logger, +) + +@OptIn(ExperimentalSerializationApi::class) +private val JsonFormat = Json { + prettyPrint = true + prettyPrintIndent = " " } -class Main : CliktCommand( +class Gradle2Nix : CliktCommand( name = "gradle2nix" ) { - private val gradleVersion: String? by option("--gradle-version", "-g", + private val gradleVersion: String? by option( + "--gradle-version", "-g", metavar = "VERSION", - help = "Use a specific Gradle version") - - private val gradleArgs: String? by option("--gradle-args", "-a", - metavar = "ARGS", - help = "Extra arguments to pass to Gradle") - - private val configurations: List by option("--configuration", "-c", - metavar = "NAME", - help = "Add a configuration to resolve (default: all configurations)") - .multiple() - - private val includes: List by option("--include", "-i", - metavar = "DIR", - help = "Add an additional project to include") - .file(mustExist = true, canBeFile = false, canBeDir = true, mustBeReadable = true) - .multiple() - .validate { files -> - val failures = files.filterNot { it.isProjectRoot() } - if (failures.isNotEmpty()) { - val message = failures.joinToString("\n ") - fail("Included builds are not Gradle projects:\n$message\n" + - "Gradle projects must contain a settings.gradle or settings.gradle.kts script.") - } - } - - private val subprojects: List by option("--project", "-p", - metavar = "PATH", - help = "Only resolve these subproject paths, e.g. ':', or ':sub:project' (default: all projects)") - .multiple() - .validate { paths -> - val failures = paths.filterNot { it.startsWith(":") } - if (failures.isNotEmpty()) { - val message = failures.joinToString("\n ") - fail("Subproject paths must be absolute:\n$message\n" + - "Paths are in the form ':parent:child'.") - } - } - - val outDir: File? by option("--out-dir", "-o", + help = "Use a specific Gradle version" + ) + + private val projectFilter: String? by option( + "--projects", "-p", + metavar = "REGEX", + help = "Regex to filter Gradle projects (default: include all projects)" + ) + + private val configurationFilter: String? by option( + "--configurations", "-c", + metavar = "REGEX", + help = "Regex to filter Gradle configurations (default: include all configurations)") + + val outDir: File? by option( + "--out-dir", "-o", metavar = "DIR", help = "Path to write generated files (default: PROJECT-DIR)") .file(canBeFile = false, canBeDir = true) - val envFile: String by option("--env", "-e", + val envFile: String by option( + "--env", "-e", metavar = "FILENAME", help = "Prefix for environment files (.json and .nix)") .default("gradle-env") - private val buildSrc: Boolean by option("--build-src", "-b", help = "Include buildSrc project (default: true)") - .flag("--no-build-src", "-nb", default = true) - private val quiet: Boolean by option("--quiet", "-q", help = "Disable logging") .flag(default = false) - private val projectDir: File by argument("PROJECT-DIR", help = "Path to the project root (default: .)") - .projectDir() - .default(File(".")) + private val projectDir: File by option( + "--projectDir", "-d", + metavar = "PROJECT-DIR", + help = "Path to the project root (default: .)") + .file() + .default(File("."), "Current directory") + .validate { file -> + if (!file.exists()) fail("Directory \"$file\" does not exist.") + if (file.isFile) fail("Directory \"$file\" is a file.") + if (!file.canRead()) fail("Directory \"$file\" is not readable.") + if (!file.isProjectRoot()) fail("Directory \"$file\" is not a Gradle project.") + } + + private val tasks: List by option( + "--tasks", "-t", + metavar = "TASKS", + help = "Gradle tasks to run" + ).multiple() + + private val gradleArgs: List by argument( + name = "ARGS", + help = "Extra arguments to pass to Gradle" + ).multiple() init { context { @@ -107,65 +102,59 @@ class Main : CliktCommand( // Visible for testing lateinit var config: Config + @OptIn(ExperimentalSerializationApi::class) override fun run() { + val appHome = System.getProperty("org.nixos.gradle2nix.share") + if (appHome == null) { + System.err.println("Error: could not locate the /share directory in the gradle2nix installation") + } + val gradleHome = System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") + val logger = Logger(verbose = !quiet) + config = Config( + File(appHome), + gradleHome, gradleVersion, gradleArgs, - configurations, + projectFilter, + configurationFilter, projectDir, - includes, - subprojects, - buildSrc, - quiet + tasks, + logger ) - val (log, _, _) = Logger(verbose = !config.quiet) - val paths = resolveProjects(config).map { p -> - p.toRelativeString(config.projectDir) - } + val (log, _, error) = logger - val models = connect(config).use { connection -> - paths.associateWith { project -> - log("Resolving project model: ${project.takeIf { it.isNotEmpty() } ?: "root project"}...") - connection.getBuildModel(config, project) + val metadata = File("$projectDir/gradle/verification-metadata.xml") + if (metadata.exists()) { + val backup = metadata.resolveSibling("verification-metadata.xml.bak") + if (metadata.renameTo(backup)) { + Runtime.getRuntime().addShutdownHook(Thread { + metadata.delete() + backup.renameTo(metadata) + }) } } - log("Building environment...") - val nixGradleEnv = buildEnv(models) + connect(config).use { connection -> + connection.build(config) + } + + val dependencies = try { + processDependencies(config) + } catch (e: Throwable) { + error("Dependency parsing failed: ${e.message}") + } val outDir = outDir ?: projectDir - val json = outDir.resolve("$envFile.json") log("Writing environment to $json") - - json.sink().buffer().use { out -> - Moshi.Builder().build() - .adapter>( - Types.newParameterizedType(Map::class.java, String::class.java, NixGradleEnv::class.java) - ) - .indent(" ") - .toJson(out, nixGradleEnv) - out.flush() + json.outputStream().buffered().use { output -> + JsonFormat.encodeToStream(dependencies, output) } - - val nix = outDir.resolve("$envFile.nix") - log("Writing Nix script to $nix") - - File(shareDir).resolve("gradle-env.nix").copyTo(nix, overwrite = true) } } -fun ProcessedArgument.projectDir(): ProcessedArgument { - return convert(completionCandidates = CompletionCandidates.Path) { - File(it).also { file -> - if (!file.exists()) fail("Directory \"$file\" does not exist.") - if (file.isFile) fail("Directory \"$file\" is a file.") - if (!file.canRead()) fail("Directory \"$file\" is not readable.") - if (!file.isProjectRoot()) fail("Directory \"$file\" is not a Gradle project.") - } - } +fun main(args: Array) { + Gradle2Nix().main(args) } - -fun main(args: Array) = Main().main(args) - diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt new file mode 100644 index 0000000..1b6b1e2 --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -0,0 +1,207 @@ +package org.nixos.gradle2nix + +import java.io.File +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.decodeFromStream +import okio.ByteString.Companion.decodeHex +import okio.HashingSource +import okio.blackholeSink +import okio.buffer +import okio.source +import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier +import org.nixos.gradle2nix.dependencygraph.model.DependencyCoordinates +import org.nixos.gradle2nix.dependencygraph.model.Repository +import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration +import org.nixos.gradle2nix.metadata.ArtifactVerificationMetadata +import org.nixos.gradle2nix.metadata.Checksum +import org.nixos.gradle2nix.metadata.ChecksumKind +import org.nixos.gradle2nix.metadata.ComponentVerificationMetadata +import org.nixos.gradle2nix.metadata.DependencyVerificationsXmlReader +import org.nixos.gradle2nix.metadata.DependencyVerifier + +// Local Maven repository for testing +private val m2 = System.getProperty("org.nixos.gradle2nix.m2") + +private fun shouldSkipRepository(repository: Repository): Boolean { + return repository.artifactResources.all { it.startsWith("file:") && (m2 == null || !it.startsWith(m2)) } || + repository.metadataResources.all { it.startsWith("file:") && (m2 == null || !it.startsWith(m2)) } +} + +fun processDependencies(config: Config): Map> { + val verifier = readVerificationMetadata(config) + val configurations = readDependencyGraph(config) + + val repositories = configurations + .flatMap { it.repositories } + .associateBy { it.id } + .filterNot { (id, repo) -> + if (shouldSkipRepository(repo)) { + config.logger.warn("$id: all URLs are files; skipping") + true + } else { + false + } + } + if (repositories.isEmpty()) { + config.logger.warn("no repositories found in any configuration") + return emptyMap() + } + + return configurations.asSequence() + .flatMap { it.allDependencies.asSequence() } + .groupBy { it.id } + .mapNotNull { (id, dependencies) -> + val deps = dependencies.toSet() + if (deps.isEmpty()) { + config.logger.warn("$id: no resolved dependencies in dependency graph") + return@mapNotNull null + } + val coordinates = deps.first().coordinates + val componentId = ModuleComponentIdentifier( + coordinates.group, + coordinates.module, + coordinates.version + ) + val metadata = verifier.verificationMetadata[componentId] + ?: verifyComponentFilesInCache(config, componentId) + if (metadata == null) { + config.logger.warn("$id: not present in metadata or cache; skipping") + return@mapNotNull null + } + + val repoIds = dependencies.mapNotNull { it.repository } + if (repoIds.isEmpty()) { + config.logger.warn("$id: no repository ids in dependency graph; skipping") + return@mapNotNull null + } + val repos = repoIds.mapNotNull(repositories::get) + if (repos.isEmpty()) { + config.logger.warn("$id: no repositories found for repository ids $repoIds; skipping") + return@mapNotNull null + } + + id to metadata.artifactVerifications.associate { meta -> + meta.artifactName to Artifact( + urls = repos + .flatMap { repository -> artifactUrls(coordinates, meta, repository) } + .distinct(), + hash = meta.checksums.maxBy { c -> c.kind.ordinal }.toSri() + ) + } + } + .toMap() +} + +private fun readVerificationMetadata(config: Config): DependencyVerifier { + return config.projectDir.resolve("gradle/verification-metadata.xml") + .inputStream() + .buffered() + .use { input -> DependencyVerificationsXmlReader.readFromXml(input) } +} + +@OptIn(ExperimentalSerializationApi::class) +private fun readDependencyGraph(config: Config): List { + return config.projectDir.resolve("build/reports/nix-dependency-graph/dependency-graph.json") + .inputStream() + .buffered() + .use { input -> Json.decodeFromStream(input) } +} + +private fun verifyComponentFilesInCache( + config: Config, + component: ModuleComponentIdentifier +): ComponentVerificationMetadata? { + val cacheDir = config.gradleHome.resolve("caches/modules-2/files-2.1/${component.group}/${component.module}/${component.version}") + if (!cacheDir.exists()) { + return null + } + val verifications = cacheDir.walkBottomUp().filter { it.isFile }.map { f -> + ArtifactVerificationMetadata( + f.name, + listOf(Checksum(ChecksumKind.sha256, f.sha256())) + ) + } + config.logger.log("$component: obtained artifact hashes from Gradle cache.") + return ComponentVerificationMetadata(component, verifications.toList()) +} + +private fun File.sha256(): String { + val source = HashingSource.sha256(source()) + source.buffer().readAll(blackholeSink()) + return source.hash.hex() +} + +private fun Checksum.toSri(): String { + val hash = value.decodeHex().base64() + return when (kind) { + ChecksumKind.md5 -> "md5-$hash" + ChecksumKind.sha1 -> "sha1-$hash" + ChecksumKind.sha256 -> "sha256-$hash" + ChecksumKind.sha512 -> "sha512-$hash" + } +} + +private fun artifactUrls( + coordinates: DependencyCoordinates, + metadata: ArtifactVerificationMetadata, + repository: Repository +): List { + val groupAsPath = coordinates.group.replace(".", "/") + + val attributes = mutableMapOf( + "organisation" to if (repository.m2Compatible) groupAsPath else coordinates.group, + "module" to coordinates.module, + "revision" to coordinates.version, + ) + fileAttributes(metadata.artifactName, coordinates.version) + + val resources = when (attributes["ext"]) { + "pom" -> if ("mavenPom" in repository.metadataSources) repository.metadataResources else repository.artifactResources + "xml" -> if ("ivyDescriptor" in repository.metadataSources) repository.metadataResources else repository.artifactResources + "module" -> if ("gradleMetadata" in repository.metadataSources || "ignoreGradleMetadataRedirection" !in repository.metadataSources) { + repository.metadataResources + } else { + repository.artifactResources + } + else -> repository.artifactResources + } + + val urls = mutableListOf() + + for (resource in resources) { + val location = attributes.entries.fold(fill(resource, attributes)) { acc, (key, value) -> + acc.replace("[$key]", value) + } + if (location.none { it == '[' || it == ']' }) { + urls.add(location) + } + } + + return urls +} + +private val optionalRegex = Regex("\\(([^)]+)\\)") +private val attrRegex = Regex("\\[([^]]+)]") + +private fun fill(template: String, attributes: Map): String { + return optionalRegex.replace(template) { match -> + attrRegex.find(match.value)?.groupValues?.get(1)?.let { attr -> + attributes[attr]?.takeIf { it.isNotBlank() }?.let { value -> + match.groupValues[1].replace("[$attr]", value) + } + } ?: "" + } +} + +// Gradle persists artifacts with the Maven artifact pattern, which may not match the repository's pattern. +private fun fileAttributes(file: String, version: String): Map { + val parts = Regex("(.+)-$version(-([^.]+))?(\\.(.+))?").matchEntire(file) ?: return emptyMap() + + val (artifact, _, classifier, _, ext) = parts.destructured + + return buildMap { + put("artifact", artifact) + put("classifier", classifier) + put("ext", ext) + } +} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Projects.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Projects.kt index f112991..7beba7f 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Projects.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Projects.kt @@ -2,16 +2,5 @@ package org.nixos.gradle2nix import java.io.File -fun resolveProjects(config: Config) = config.allProjects.run { - if (config.buildSrc) { - flatMap { listOfNotNull(it, it.findBuildSrc()) } - } else { - this - } -} - -fun File.findBuildSrc(): File? = - resolve("buildSrc").takeIf { it.isDirectory } - fun File.isProjectRoot(): Boolean = isDirectory && (resolve("settings.gradle").isFile || resolve("settings.gradle.kts").isFile) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentArtifactIdentifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentArtifactIdentifier.kt new file mode 100644 index 0000000..e4788ee --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentArtifactIdentifier.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2014 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.dependency + +/** + * An opaque immutable identifier for an artifact that belongs to some component instance. + */ +interface ComponentArtifactIdentifier { + /** + * Returns the id of the component that this artifact belongs to. + */ + val componentIdentifier: ComponentIdentifier + + /** + * Returns some human-consumable display name for this artifact. + */ + val displayName: String +} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentIdentifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentIdentifier.kt new file mode 100644 index 0000000..83b0bfc --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentIdentifier.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2013 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.dependency + +/** + * An opaque immutable identifier for a component instance. There are various sub-interfaces that expose specific details about the identifier. + */ +interface ComponentIdentifier { + /** + * Returns a human-consumable display name for this identifier. + * + * @return Component identifier display name + */ + val displayName: String +} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentArtifactIdentifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentArtifactIdentifier.kt new file mode 100644 index 0000000..298284a --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentArtifactIdentifier.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2013 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.dependency + +/** + * An immutable identifier for an artifact that belongs to some module version. + */ +interface ModuleComponentArtifactIdentifier : ComponentArtifactIdentifier { + /** + * Returns the id of the component that this artifact belongs to. + */ + override val componentIdentifier: ModuleComponentIdentifier + + /** + * Returns a file base name that can be used for this artifact. + */ + val fileName: String +} + +data class DefaultModuleComponentArtifactIdentifier( + override val componentIdentifier: ModuleComponentIdentifier, + override val fileName: String, +) : ModuleComponentArtifactIdentifier { + override val displayName: String get() = "$fileName ($componentIdentifier)" + + override fun toString(): String = displayName +} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentIdentifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentIdentifier.kt new file mode 100644 index 0000000..8be353b --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentIdentifier.kt @@ -0,0 +1,76 @@ +/* + * Copyright 2013 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.dependency + +/** + * An identifier for a component instance which is available as a module version. + */ +interface ModuleComponentIdentifier : ComponentIdentifier { + /** + * The module group of the component. + * + * @return Component group + */ + val group: String + + /** + * The module name of the component. + * + * @return Component module + */ + val module: String + + /** + * The module version of the component. + * + * @return Component version + */ + val version: String + + /** + * The module identifier of the component. Returns the same information + * as [group] and [module]. + * + * @return the module identifier + */ + val moduleIdentifier: ModuleIdentifier +} + +data class DefaultModuleComponentIdentifier( + override val moduleIdentifier: ModuleIdentifier, + override val version: String, +) : ModuleComponentIdentifier { + override val group: String + get() = moduleIdentifier.group + + override val module: String + get() = moduleIdentifier.name + + override val displayName: String + get() = "$group:$module:$version" + + override fun toString(): String = displayName +} + + +fun ModuleComponentIdentifier( + group: String, + module: String, + version: String +): ModuleComponentIdentifier = DefaultModuleComponentIdentifier( + DefaultModuleIdentifier(group, module), + version +) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleIdentifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleIdentifier.kt new file mode 100644 index 0000000..5457f3f --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleIdentifier.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2012 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.dependency + +/** + * The identifier of a module. + */ +interface ModuleIdentifier { + /** + * The group of the module. + * + * @return module group + */ + val group: String + + /** + * The name of the module. + * + * @return module name + */ + val name: String +} + +data class DefaultModuleIdentifier( + override val group: String, + override val name: String, +) : ModuleIdentifier diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ArtifactVerificationMetadata.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ArtifactVerificationMetadata.kt new file mode 100644 index 0000000..ae67531 --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ArtifactVerificationMetadata.kt @@ -0,0 +1,6 @@ +package org.nixos.gradle2nix.metadata + +data class ArtifactVerificationMetadata( + val artifactName: String, + val checksums: List +) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/Checksum.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/Checksum.kt new file mode 100644 index 0000000..a5c84ef --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/Checksum.kt @@ -0,0 +1,43 @@ +/* + * Copyright 2019 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.metadata + +/** + * Internal representation of a checksum, aimed at *verification*. + * A checksum consists of a kind (md5, sha1, ...), a value, but also + * provides *alternatives*. Alternatives are checksums which are + * deemed trusted, because sometimes in a single build we can see different + * checksums for the same module, because they are sourced from different + * repositories. + * + * In theory, this shouldn't be allowed. However, it's often the case that + * an artifact, in particular _metadata artifacts_ (POM files, ...) differ + * from one repository to the other (either by end of lines, additional line + * at the end of the file, ...). Because they are different doesn't mean that + * they are compromised, so this is a facility for the user to declare "I know + * I should use a single source of truth but the infrastructure is hard or + * impossible to fix so let's trust this source". + * + * In addition to the list of alternatives, a checksum also provides a source, + * which is documentation to explain where a checksum was found. + */ +data class Checksum( + val kind: ChecksumKind, + val value: String, + val alternatives: Set = emptySet(), + val origin: String? = null, + val reason: String? = null +) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ChecksumKind.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ChecksumKind.kt new file mode 100644 index 0000000..6469cf7 --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ChecksumKind.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2019 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.metadata + +enum class ChecksumKind(val algorithm: String) { + md5("MD5"), + sha1("SHA1"), + sha256("SHA-256"), + sha512("SHA-512"); + + companion object { + private val SORTED_BY_SECURITY: List = listOf(sha512, sha256, sha1, md5) + fun mostSecureFirst(): List { + return SORTED_BY_SECURITY + } + } +} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ComponentVerificationMetadata.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ComponentVerificationMetadata.kt new file mode 100644 index 0000000..54e454c --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ComponentVerificationMetadata.kt @@ -0,0 +1,8 @@ +package org.nixos.gradle2nix.metadata + +import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier + +data class ComponentVerificationMetadata( + val componentId: ModuleComponentIdentifier, + val artifactVerifications: List, +) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationConfiguration.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationConfiguration.kt new file mode 100644 index 0000000..8bfbf18 --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationConfiguration.kt @@ -0,0 +1,98 @@ +/* + * Copyright 2019 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.metadata + +import org.nixos.gradle2nix.dependency.ModuleComponentArtifactIdentifier +import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier + +class DependencyVerificationConfiguration( + val trustedArtifacts: List = emptyList(), +) { + data class TrustCoordinates internal constructor( + val group: String?, + val name: String?, + val version: String?, + val fileName: String?, + val isRegex: Boolean, + val reason: String? + ) : Comparable { + + fun matches(id: ModuleComponentArtifactIdentifier): Boolean { + val moduleComponentIdentifier: ModuleComponentIdentifier = id.componentIdentifier + return (matches(group, moduleComponentIdentifier.group) + && matches(name, moduleComponentIdentifier.module) + && matches(version, moduleComponentIdentifier.version) + && matches(fileName, id.fileName)) + } + + private fun matches(value: String?, expr: String): Boolean { + if (value == null) { + return true + } + return if (!isRegex) { + expr == value + } else expr.matches(value.toRegex()) + } + + override fun compareTo(other: TrustCoordinates): Int { + val regexComparison = isRegex.compareTo(other.isRegex) + if (regexComparison != 0) { + return regexComparison + } + val groupComparison = compareNullableStrings( + group, other.group + ) + if (groupComparison != 0) { + return groupComparison + } + val nameComparison = compareNullableStrings( + name, other.name + ) + if (nameComparison != 0) { + return nameComparison + } + val versionComparison = compareNullableStrings( + version, other.version + ) + if (versionComparison != 0) { + return versionComparison + } + val fileNameComparison = compareNullableStrings( + fileName, other.fileName + ) + return if (fileNameComparison != 0) { + fileNameComparison + } else compareNullableStrings( + reason, other.reason + ) + } + } + + companion object { + private fun compareNullableStrings(first: String?, second: String?): Int { + if (first == null) { + return if (second == null) { + 0 + } else { + -1 + } + } else if (second == null) { + return 1 + } + return first.compareTo(second) + } + } +} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationXmlTags.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationXmlTags.kt new file mode 100644 index 0000000..b6e019a --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationXmlTags.kt @@ -0,0 +1,48 @@ +/* + * Copyright 2019 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.metadata + +internal object DependencyVerificationXmlTags { + const val ALSO_TRUST = "also-trust" + const val ARTIFACT = "artifact" + const val COMPONENT = "component" + const val COMPONENTS = "components" + const val CONFIG = "configuration" + const val ENABLED = "enabled" + const val FILE = "file" + const val GROUP = "group" + const val ID = "id" + const val IGNORED_KEY = "ignored-key" + const val IGNORED_KEYS = "ignored-keys" + const val KEY_SERVER = "key-server" + const val KEY_SERVERS = "key-servers" + const val NAME = "name" + const val ORIGIN = "origin" + const val PGP = "pgp" + const val REASON = "reason" + const val REGEX = "regex" + const val TRUST = "trust" + const val TRUSTED_ARTIFACTS = "trusted-artifacts" + const val TRUSTED_KEY = "trusted-key" + const val TRUSTED_KEYS = "trusted-keys" + const val TRUSTING = "trusting" + const val URI = "uri" + const val VALUE = "value" + const val VERIFICATION_METADATA = "verification-metadata" + const val VERIFY_METADATA = "verify-metadata" + const val VERIFY_SIGNATURES = "verify-signatures" + const val VERSION = "version" +} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationsXmlReader.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationsXmlReader.kt new file mode 100644 index 0000000..2976931 --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationsXmlReader.kt @@ -0,0 +1,421 @@ +/* + * Copyright 2019 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.metadata + +import java.io.IOException +import java.io.InputStream +import javax.xml.parsers.ParserConfigurationException +import javax.xml.parsers.SAXParser +import javax.xml.parsers.SAXParserFactory +import org.gradle.internal.UncheckedException +import org.nixos.gradle2nix.dependency.DefaultModuleComponentArtifactIdentifier +import org.nixos.gradle2nix.dependency.DefaultModuleComponentIdentifier +import org.nixos.gradle2nix.dependency.DefaultModuleIdentifier +import org.nixos.gradle2nix.dependency.ModuleComponentArtifactIdentifier +import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier +import org.nixos.gradle2nix.dependency.ModuleIdentifier +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.ALSO_TRUST +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.ARTIFACT +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.COMPONENT +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.COMPONENTS +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.CONFIG +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.IGNORED_KEY +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.IGNORED_KEYS +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.KEY_SERVER +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.KEY_SERVERS +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.PGP +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.TRUST +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.TRUSTED_ARTIFACTS +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.TRUSTED_KEY +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.TRUSTED_KEYS +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.TRUSTING +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.VALUE +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.VERIFICATION_METADATA +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.VERIFY_METADATA +import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.VERIFY_SIGNATURES +import org.xml.sax.Attributes +import org.xml.sax.InputSource +import org.xml.sax.SAXException +import org.xml.sax.ext.DefaultHandler2 + +object DependencyVerificationsXmlReader { + fun readFromXml( + input: InputStream, + builder: DependencyVerifierBuilder + ) { + try { + val saxParser = createSecureParser() + val xmlReader = saxParser.xmlReader + val handler = VerifiersHandler(builder) + xmlReader.setProperty("http://xml.org/sax/properties/lexical-handler", handler) + xmlReader.contentHandler = handler + xmlReader.parse(InputSource(input)) + } catch (e: Exception) { + throw IllegalStateException( + "Unable to read dependency verification metadata", + e + ) + } finally { + try { + input.close() + } catch (e: IOException) { + throw UncheckedException.throwAsUncheckedException(e) + } + } + } + + fun readFromXml(input: InputStream): DependencyVerifier { + val builder = DependencyVerifierBuilder() + readFromXml(input, builder) + return builder.build() + } + + @Throws(ParserConfigurationException::class, SAXException::class) + private fun createSecureParser(): SAXParser { + val spf = SAXParserFactory.newInstance() + spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false) + spf.setFeature("http://xml.org/sax/features/namespaces", false) + spf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true) + return spf.newSAXParser() + } + + private class VerifiersHandler(private val builder: DependencyVerifierBuilder) : DefaultHandler2() { + private var inMetadata = false + private var inComponents = false + private var inConfiguration = false + private var inVerifyMetadata = false + private var inVerifySignatures = false + private var inTrustedArtifacts = false + private var inKeyServers = false + private var inIgnoredKeys = false + private var inTrustedKeys = false + private var inTrustedKey = false + private var currentTrustedKey: String? = null + private var currentComponent: ModuleComponentIdentifier? = null + private var currentArtifact: ModuleComponentArtifactIdentifier? = + null + private var currentChecksum: ChecksumKind? = null + + override fun startElement(uri: String, localName: String, qName: String, attributes: Attributes) { + when (qName) { + CONFIG -> inConfiguration = + true + + VERIFICATION_METADATA -> inMetadata = + true + + COMPONENTS -> { + assertInMetadata() + inComponents = true + } + + COMPONENT -> { + assertInComponents() + currentComponent = createComponentId(attributes) + } + + ARTIFACT -> { + assertValidComponent() + currentArtifact = createArtifactId(attributes) + } + + VERIFY_METADATA -> { + assertInConfiguration(VERIFY_METADATA) + inVerifyMetadata = true + } + + VERIFY_SIGNATURES -> { + assertInConfiguration(VERIFY_SIGNATURES) + inVerifySignatures = true + } + + TRUSTED_ARTIFACTS -> { + assertInConfiguration(TRUSTED_ARTIFACTS) + inTrustedArtifacts = true + } + + TRUSTED_KEY -> { + assertContext( + inTrustedKeys, + TRUSTED_KEY, + TRUSTED_KEYS + ) + inTrustedKey = true + } + + TRUSTED_KEYS -> { + assertInConfiguration(TRUSTED_KEYS) + inTrustedKeys = true + } + + TRUST -> { + assertInTrustedArtifacts() + addTrustedArtifact(attributes) + } + + TRUSTING -> { + assertContext( + inTrustedKey, + TRUSTING, + TRUSTED_KEY + ) + } + + KEY_SERVERS -> { + assertInConfiguration(KEY_SERVERS) + inKeyServers = true + } + + KEY_SERVER -> { + assertContext( + inKeyServers, + KEY_SERVER, + KEY_SERVERS + ) + } + + IGNORED_KEYS -> { + if (currentArtifact == null) { + assertInConfiguration(IGNORED_KEYS) + } + inIgnoredKeys = true + } + + IGNORED_KEY -> { + assertContext( + inIgnoredKeys, + IGNORED_KEY, + IGNORED_KEYS + ) + } + + else -> if (currentChecksum != null && ALSO_TRUST == qName) { + builder.addChecksum( + currentArtifact!!, + currentChecksum!!, + getAttribute(attributes, VALUE), + null, + null + ) + } else if (currentArtifact != null) { + if (PGP != qName) { + currentChecksum = enumValueOf(qName) + builder.addChecksum( + currentArtifact!!, + currentChecksum!!, + getAttribute( + attributes, + VALUE + ), + getNullableAttribute( + attributes, + DependencyVerificationXmlTags.ORIGIN + ), + getNullableAttribute( + attributes, + DependencyVerificationXmlTags.REASON + ) + ) + } + } + } + } + + private fun assertInTrustedArtifacts() { + assertContext( + inTrustedArtifacts, + TRUST, + TRUSTED_ARTIFACTS + ) + } + + private fun addTrustedArtifact(attributes: Attributes) { + var regex = false + val regexAttr = getNullableAttribute( + attributes, + DependencyVerificationXmlTags.REGEX + ) + if (regexAttr != null) { + regex = regexAttr.toBoolean() + } + builder.addTrustedArtifact( + getNullableAttribute( + attributes, + DependencyVerificationXmlTags.GROUP + ), + getNullableAttribute( + attributes, + DependencyVerificationXmlTags.NAME + ), + getNullableAttribute( + attributes, + DependencyVerificationXmlTags.VERSION + ), + getNullableAttribute( + attributes, + DependencyVerificationXmlTags.FILE + ), + regex, + getNullableAttribute( + attributes, + DependencyVerificationXmlTags.REASON + ) + ) + } + + private fun readBoolean(ch: CharArray, start: Int, length: Int): Boolean { + return String(ch, start, length).toBoolean() + } + + private fun assertInConfiguration(tag: String) { + assertContext( + inConfiguration, + tag, + DependencyVerificationXmlTags.CONFIG + ) + } + + private fun assertInComponents() { + assertContext( + inComponents, + DependencyVerificationXmlTags.COMPONENT, + DependencyVerificationXmlTags.COMPONENTS + ) + } + + private fun assertInMetadata() { + assertContext( + inMetadata, + DependencyVerificationXmlTags.COMPONENTS, + DependencyVerificationXmlTags.VERIFICATION_METADATA + ) + } + + private fun assertValidComponent() { + assertContext( + currentComponent != null, + ARTIFACT, + DependencyVerificationXmlTags.COMPONENT + ) + } + + override fun endElement(uri: String, localName: String, qName: String) { + when (qName) { + DependencyVerificationXmlTags.CONFIG -> inConfiguration = + false + + VERIFY_METADATA -> inVerifyMetadata = + false + + VERIFY_SIGNATURES -> inVerifySignatures = + false + + DependencyVerificationXmlTags.VERIFICATION_METADATA -> inMetadata = + false + + DependencyVerificationXmlTags.COMPONENTS -> inComponents = + false + + DependencyVerificationXmlTags.COMPONENT -> currentComponent = + null + + TRUSTED_ARTIFACTS -> inTrustedArtifacts = + false + + TRUSTED_KEYS -> inTrustedKeys = + false + + TRUSTED_KEY -> { + inTrustedKey = false + currentTrustedKey = null + } + + KEY_SERVERS -> inKeyServers = + false + + ARTIFACT -> { + currentArtifact = null + currentChecksum = null + } + + IGNORED_KEYS -> inIgnoredKeys = + false + } + } + + private fun createArtifactId(attributes: Attributes): ModuleComponentArtifactIdentifier { + return DefaultModuleComponentArtifactIdentifier( + currentComponent!!, + getAttribute( + attributes, + DependencyVerificationXmlTags.NAME + ) + ) + } + + private fun createComponentId(attributes: Attributes): ModuleComponentIdentifier { + return DefaultModuleComponentIdentifier( + createModuleId(attributes), + getAttribute( + attributes, + DependencyVerificationXmlTags.VERSION + ) + ) + } + + private fun createModuleId(attributes: Attributes): ModuleIdentifier { + return DefaultModuleIdentifier( + getAttribute( + attributes, + DependencyVerificationXmlTags.GROUP + ), + getAttribute( + attributes, + DependencyVerificationXmlTags.NAME + ) + ) + } + + private fun getAttribute(attributes: Attributes, name: String): String { + val value = attributes.getValue(name) + assertContext( + value != null, + "Missing attribute: $name" + ) + return value.intern() + } + + private fun getNullableAttribute(attributes: Attributes, name: String): String? { + val value = attributes.getValue(name) ?: return null + return value.intern() + } + + companion object { + private fun assertContext(test: Boolean, innerTag: String, outerTag: String) { + assertContext( + test, + "<$innerTag> must be found under the <$outerTag> tag" + ) + } + + private fun assertContext(test: Boolean, message: String) { + if (!test) { + throw IllegalStateException("Invalid dependency verification metadata file: $message") + } + } + } + } +} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifier.kt new file mode 100644 index 0000000..d2639c0 --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifier.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2019 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.metadata + +import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier + +class DependencyVerifier internal constructor( + val verificationMetadata: Map, + val configuration: DependencyVerificationConfiguration, +) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifierBuilder.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifierBuilder.kt new file mode 100644 index 0000000..2eeaa58 --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifierBuilder.kt @@ -0,0 +1,162 @@ +/* + * Copyright 2019 the original author or authors. + * + * Licensed 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.nixos.gradle2nix.metadata + +import org.nixos.gradle2nix.dependency.ModuleComponentArtifactIdentifier +import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier + +class DependencyVerifierBuilder { + private val byComponent: MutableMap = mutableMapOf() + private val trustedArtifacts: MutableList = mutableListOf() + + fun addChecksum( + artifact: ModuleComponentArtifactIdentifier, + kind: ChecksumKind, + value: String, + origin: String?, + reason: String? + ) { + val componentIdentifier: ModuleComponentIdentifier = artifact.componentIdentifier + byComponent.getOrPut(componentIdentifier) { + ComponentVerificationsBuilder(componentIdentifier) + }.addChecksum(artifact, kind, value, origin, reason) + } + + @JvmOverloads + fun addTrustedArtifact( + group: String?, + name: String?, + version: String?, + fileName: String?, + regex: Boolean, + reason: String? = null + ) { + validateUserInput(group, name, version, fileName) + trustedArtifacts.add(DependencyVerificationConfiguration.TrustCoordinates(group, name, version, fileName, regex, reason)) + } + + private fun validateUserInput( + group: String?, + name: String?, + version: String?, + fileName: String? + ) { + // because this can be called from parsing XML, we need to perform additional verification + if (group == null && name == null && version == null && fileName == null) { + throw IllegalStateException("A trusted artifact must have at least one of group, name, version or file name not null") + } + } + + fun build(): DependencyVerifier { + return DependencyVerifier( + byComponent + .toSortedMap( + compareBy { it.group } + .thenBy { it.module } + .thenBy { it.version } + ) + .mapValues { it.value.build() }, + DependencyVerificationConfiguration(trustedArtifacts), + ) + } + + private class ComponentVerificationsBuilder(private val component: ModuleComponentIdentifier) { + private val byArtifact: MutableMap = mutableMapOf() + + fun addChecksum( + artifact: ModuleComponentArtifactIdentifier, + kind: ChecksumKind, + value: String, + origin: String?, + reason: String? + ) { + byArtifact.computeIfAbsent(artifact.fileName) { ArtifactVerificationBuilder() } + .addChecksum(kind, value, origin, reason) + } + + fun build(): ComponentVerificationMetadata { + return ComponentVerificationMetadata( + component, + byArtifact + .map { ArtifactVerificationMetadata(it.key, it.value.buildChecksums()) } + .sortedBy { it.artifactName } + ) + } + } + + protected class ArtifactVerificationBuilder { + private val builder: MutableMap = mutableMapOf() + + fun addChecksum(kind: ChecksumKind, value: String, origin: String?, reason: String?) { + val builder = builder.getOrPut(kind) { + ChecksumBuilder(kind) + } + builder.addChecksum(value) + if (origin != null) { + builder.withOrigin(origin) + } + if (reason != null) { + builder.withReason(reason) + } + } + + fun buildChecksums(): List { + return builder.values + .map(ChecksumBuilder::build) + .sortedBy { it.kind } + } + } + + private class ChecksumBuilder(private val kind: ChecksumKind) { + private var value: String? = null + private var origin: String? = null + private var reason: String? = null + private var alternatives: MutableSet = mutableSetOf() + + /** + * Sets the origin, if not set already. This is + * mostly used for automatic generation of checksums + */ + fun withOrigin(origin: String?) { + this.origin = this.origin ?: origin + } + + /** + * Sets the reason, if not set already. + */ + fun withReason(reason: String?) { + this.reason = this.reason ?: reason + } + + fun addChecksum(checksum: String) { + if (value == null) { + value = checksum + } else if (value != checksum) { + alternatives.add(checksum) + } + } + + fun build(): Checksum { + return Checksum( + kind, + checkNotNull(value) { "Checksum is null" }, + alternatives, + origin, + reason + ) + } + } +} diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/BuildSrcTest.kt b/app/src/test/kotlin/org/nixos/gradle2nix/BuildSrcTest.kt deleted file mode 100644 index cd82130..0000000 --- a/app/src/test/kotlin/org/nixos/gradle2nix/BuildSrcTest.kt +++ /dev/null @@ -1,19 +0,0 @@ -package org.nixos.gradle2nix - -import org.spekframework.spek2.Spek -import org.spekframework.spek2.style.specification.describe -import strikt.api.expectThat -import strikt.assertions.containsKey - -object BuildSrcTest : Spek({ - fixture("buildsrc/plugin-in-buildsrc/kotlin") - val fixture: Fixture by memoized() - - describe("project with plugin in buildSrc") { - fixture.run() - - it("should include buildSrc in gradle env", timeout = 0) { - expectThat(fixture.env()).containsKey("buildSrc") - } - } -}) \ No newline at end of file diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt b/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt new file mode 100644 index 0000000..7beaf76 --- /dev/null +++ b/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt @@ -0,0 +1,40 @@ +package org.nixos.gradle2nix + +import io.kotest.core.spec.style.FunSpec + +class GoldenTest : FunSpec({ + context("basic") { + golden("basic/basic-java-project") + golden("basic/basic-kotlin-project") + } + context("buildsrc") { + golden("buildsrc/plugin-in-buildsrc") + } + context("dependency") { + golden("dependency/classifier") + golden("dependency/maven-bom") + golden("dependency/snapshot") + golden("dependency/snapshot-dynamic") + golden("dependency/snapshot-redirect") + } + context("integration") { + golden("integration/settings-buildscript") + } + context("ivy") { + golden("ivy/basic") + } + context("plugin") { + golden("plugin/resolves-from-default-repo") + } + context("s3") { + golden("s3/maven") + golden("s3/maven-snapshot") + } + context("settings") { + golden("settings/buildscript") + golden("settings/dependency-resolution-management") + } + context("subprojects") { + golden("subprojects/multi-module") + } +}) diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt index 99d620c..49b6b07 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt @@ -1,60 +1,126 @@ package org.nixos.gradle2nix -import com.squareup.moshi.Moshi -import com.squareup.moshi.Types -import okio.buffer -import okio.source -import org.spekframework.spek2.dsl.Root -import strikt.api.expectThat -import strikt.assertions.exists -import strikt.assertions.isNotNull -import strikt.assertions.toPath +import io.kotest.assertions.fail +import io.kotest.common.ExperimentalKotest +import io.kotest.common.KotestInternal +import io.kotest.core.names.TestName +import io.kotest.core.source.sourceRef +import io.kotest.core.spec.style.scopes.ContainerScope +import io.kotest.core.spec.style.scopes.RootScope +import io.kotest.core.test.NestedTest +import io.kotest.core.test.TestScope +import io.kotest.core.test.TestType +import io.kotest.extensions.system.withEnvironment +import io.kotest.matchers.equals.beEqual +import io.kotest.matchers.equals.shouldBeEqual +import io.kotest.matchers.file.shouldBeAFile +import io.kotest.matchers.paths.shouldBeAFile +import io.kotest.matchers.should +import java.io.File +import java.io.FileFilter import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths -import kotlin.io.path.ExperimentalPathApi import kotlin.io.path.createTempDirectory +import kotlin.io.path.inputStream +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerializationException +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.decodeFromStream +import kotlinx.serialization.json.encodeToStream +import okio.use -private val moshi = Moshi.Builder().build() +private val app = Gradle2Nix() -class Fixture(val project: Path) { - private val app = Main() +@OptIn(ExperimentalSerializationApi::class) +private val json = Json { + prettyPrint = true + prettyPrintIndent = " " +} - fun run(vararg args: String) { - app.main(args.toList() + project.toString()) +@OptIn(ExperimentalKotest::class, ExperimentalSerializationApi::class, KotestInternal::class) +suspend fun TestScope.fixture( + project: String, + vararg args: String, + test: suspend TestScope.(Map>) -> Unit +) { + val tmp = Paths.get("build/tmp/gradle2nix").apply { toFile().mkdirs() } + val baseDir = Paths.get("../fixtures", project).toFile() + val children = baseDir.listFiles(FileFilter { it.isDirectory && (it.name == "groovy" || it.name == "kotlin") }) + ?.toList() + val cases = if (children.isNullOrEmpty()) { + listOf(project to baseDir) + } else { + children.map { "$project.${it.name}" to it } } + for (case in cases) { + registerTestCase( + NestedTest( + name = TestName(case.first), + disabled = false, + config = null, + type = TestType.Dynamic, + source = sourceRef() + ) { + var dirName = case.second.toString().replace("/", ".") + while (dirName.startsWith(".")) dirName = dirName.removePrefix(".") + while (dirName.endsWith(".")) dirName = dirName.removeSuffix(".") - fun env(): Map { - val file = (app.outDir ?: project.toFile()).resolve("${app.envFile}.json") - expectThat(file).toPath().exists() - val env = file.source().buffer().use { source -> - moshi - .adapter>( - Types.newParameterizedType(Map::class.java, String::class.java, NixGradleEnv::class.java) - ).fromJson(source) - } - expectThat(env).isNotNull() - return env!! + val tempDir = File(tmp.toFile(), dirName) + tempDir.deleteRecursively() + case.second.copyRecursively(tempDir) + + if (!tempDir.resolve("settings.gradle").exists() && !tempDir.resolve("settings.gradle.kts").exists()) { + Files.createFile(tempDir.resolve("settings.gradle").toPath()) + } + app.main(listOf("-d", tempDir.toString()) + args.withM2()) + val file = tempDir.resolve("${app.envFile}.json") + file.shouldBeAFile() + val env: Map> = file.inputStream().buffered().use { input -> + Json.decodeFromStream(input) + } + test(env) + } + ) } } -@OptIn(ExperimentalPathApi::class) -fun Root.fixture(name: String) { - val fixture by memoized( - factory = { - val url = checkNotNull(Thread.currentThread().contextClassLoader.getResource(name)?.toURI()) { - "$name: No test fixture found" +val updateGolden = System.getProperty("org.nixos.gradle2nix.update-golden") != null + +@OptIn(ExperimentalSerializationApi::class) +suspend fun TestScope.golden( + project: String, + vararg args: String, +) { + fixture(project, *args) { env -> + val filename = "${testCase.name.testName}.json" + val goldenFile = File("../fixtures/golden/$filename") + if (updateGolden) { + goldenFile.parentFile.mkdirs() + goldenFile.outputStream().buffered().use { output -> + json.encodeToStream(env, output) + } + } else { + if (!goldenFile.exists()) { + fail("Golden file '$filename' doesn't exist. Run with --update-golden to generate.") } - val fixtureRoot = Paths.get(url) - val dest = createTempDirectory("gradle2nix") - val src = checkNotNull(fixtureRoot.takeIf { Files.exists(it) }) { - "$name: Test fixture not found: $fixtureRoot" + val goldenData: Map> = try { + goldenFile.inputStream().buffered().use { input -> + json.decodeFromStream(input) + } + } catch (e: SerializationException) { + fail("Failed to load golden data from '$filename'. Run with --update-golden to regenerate.") } - src.toFile().copyRecursively(dest.toFile()) - Fixture(dest) - }, - destructor = { - it.project.toFile().deleteRecursively() + env should beEqual(goldenData) } - ) -} \ No newline at end of file + } +} + +val m2 = System.getProperty("org.nixos.gradle2nix.m2") + +private fun Array.withM2(): List { + val args = toMutableList() + if (args.indexOf("--") < 0) args.add("--") + args.add("-Dorg.nixos.gradle2nix.m2=$m2") + return args +} diff --git a/assets/gradle2nix.svg b/assets/gradle2nix.svg index 0569dea..4a642c4 100644 --- a/assets/gradle2nix.svg +++ b/assets/gradle2nix.svg @@ -2,21 +2,20 @@ + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1280" + height="640" + viewBox="0 0 338.66666 169.33334" + version="1.1" + id="svg8" + inkscape:version="0.92.4 (5da689c313, 2019-01-14)" + sodipodi:docname="gradle2nix.svg"> { - this@allprojects.withConvention(JavaPluginConvention::class) { - sourceSets.all { - configurations { - named(compileClasspathConfigurationName) { - resolutionStrategy.activateDependencyLocking() - } - named(runtimeClasspathConfigurationName) { - resolutionStrategy.activateDependencyLocking() - } - } - } - - tasks.register("lock") { - doFirst { - assert(gradle.startParameter.isWriteDependencyLocks) - file("buildscript-gradle.lockfile").delete() - file("gradle.lockfile").delete() - } - doLast { - configurations.matching { it.isCanBeResolved }.all { resolve() } - } - } - } - } -} - tasks { wrapper { - gradleVersion = "6.8.1" + gradleVersion = "8.3" distributionType = Wrapper.DistributionType.ALL } } diff --git a/fixtures/basic/basic-java-project/groovy/build.gradle b/fixtures/basic/basic-java-project/groovy/build.gradle index e0f793a..b3fef8a 100644 --- a/fixtures/basic/basic-java-project/groovy/build.gradle +++ b/fixtures/basic/basic-java-project/groovy/build.gradle @@ -3,7 +3,6 @@ plugins { } repositories { - jcenter() mavenCentral() } diff --git a/fixtures/subprojects/dependent-subprojects/groovy/child-a/build.gradle b/fixtures/basic/basic-java-project/groovy/settings.gradle similarity index 100% rename from fixtures/subprojects/dependent-subprojects/groovy/child-a/build.gradle rename to fixtures/basic/basic-java-project/groovy/settings.gradle diff --git a/fixtures/basic/basic-java-project/kotlin/build.gradle.kts b/fixtures/basic/basic-java-project/kotlin/build.gradle.kts index 59670f1..02b6753 100644 --- a/fixtures/basic/basic-java-project/kotlin/build.gradle.kts +++ b/fixtures/basic/basic-java-project/kotlin/build.gradle.kts @@ -3,7 +3,6 @@ plugins { } repositories { - jcenter() mavenCentral() } diff --git a/fixtures/subprojects/dependent-subprojects/groovy/child-b/build.gradle b/fixtures/basic/basic-java-project/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/subprojects/dependent-subprojects/groovy/child-b/build.gradle rename to fixtures/basic/basic-java-project/kotlin/settings.gradle.kts diff --git a/fixtures/basic/basic-kotlin-project/kotlin/build.gradle.kts b/fixtures/basic/basic-kotlin-project/kotlin/build.gradle.kts index c776334..d47e7c4 100644 --- a/fixtures/basic/basic-kotlin-project/kotlin/build.gradle.kts +++ b/fixtures/basic/basic-kotlin-project/kotlin/build.gradle.kts @@ -1,30 +1,30 @@ - val kotlinVersion = "1.3.61" - val spekVersion = "2.0.9" +val kotlinVersion = "1.6.21" +val spekVersion = "2.0.9" - plugins { - application - kotlin("jvm") version "1.3.61" - } +plugins { + application + kotlin("jvm") version "1.6.21" +} - dependencies { - compile(kotlin("stdlib")) - implementation("com.natpryce:konfig:1.6.10.0") - implementation("com.github.pengrad:java-telegram-bot-api:4.6.0") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3") - implementation("org.jetbrains.exposed:exposed-core:0.21.1") - implementation("org.jetbrains.exposed", "exposed-dao", "0.21.1") - implementation("org.jetbrains.exposed", "exposed-jdbc", "0.21.1") - implementation("org.jetbrains.exposed", "exposed-jodatime", "0.21.1") - implementation("io.javalin:javalin:3.7.0") - implementation("org.slf4j:slf4j-simple:1.8.0-beta4") - implementation(group = "org.xerial", name = "sqlite-jdbc", version = "3.30.1") - implementation("org.postgresql:postgresql:42.2.2") - implementation("com.fasterxml.jackson.core:jackson-databind:2.10.1") - testImplementation("org.spekframework.spek2:spek-dsl-jvm:$spekVersion") - testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:$spekVersion") - testCompile("com.winterbe:expekt:0.5.0") - } +dependencies { + compileOnly(kotlin("stdlib")) + implementation("com.natpryce:konfig:1.6.10.0") + implementation("com.github.pengrad:java-telegram-bot-api:4.6.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3") + implementation("org.jetbrains.exposed:exposed-core:0.21.1") + implementation("org.jetbrains.exposed", "exposed-dao", "0.21.1") + implementation("org.jetbrains.exposed", "exposed-jdbc", "0.21.1") + implementation("org.jetbrains.exposed", "exposed-jodatime", "0.21.1") + implementation("io.javalin:javalin:3.7.0") + implementation("org.slf4j:slf4j-simple:1.8.0-beta4") + implementation(group = "org.xerial", name = "sqlite-jdbc", version = "3.30.1") + implementation("org.postgresql:postgresql:42.2.2") + implementation("com.fasterxml.jackson.core:jackson-databind:2.10.1") + testImplementation("org.spekframework.spek2:spek-dsl-jvm:$spekVersion") + testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:$spekVersion") + testCompileOnly("com.winterbe:expekt:0.5.0") +} - repositories { - jcenter() - } +repositories { + mavenCentral() +} diff --git a/fixtures/subprojects/dependent-subprojects/groovy/child-c/build.gradle b/fixtures/basic/basic-kotlin-project/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/subprojects/dependent-subprojects/groovy/child-c/build.gradle rename to fixtures/basic/basic-kotlin-project/kotlin/settings.gradle.kts diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/build.gradle.kts b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/build.gradle.kts index 62f05d4..c9641cd 100644 --- a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/build.gradle.kts +++ b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/build.gradle.kts @@ -1,4 +1,4 @@ plugins { `java-library` - id("com.example.custom-spotless") -} \ No newline at end of file + id("com.example.apply-plugin-publish") +} diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts index cbd39da..a77804b 100644 --- a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts +++ b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts @@ -3,10 +3,9 @@ plugins { } repositories { - jcenter() gradlePluginPortal() } dependencies { - implementation("com.diffplug.spotless:spotless-plugin-gradle:3.28.1") + implementation("com.gradle.publish:plugin-publish-plugin:1.2.1") } diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/apply-plugin-publish.gradle.kts b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/apply-plugin-publish.gradle.kts new file mode 100644 index 0000000..7c0993e --- /dev/null +++ b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/apply-plugin-publish.gradle.kts @@ -0,0 +1,5 @@ +package com.example + +plugins { + id("com.gradle.plugin-publish") +} diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/custom-spotless.gradle.kts b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/custom-spotless.gradle.kts deleted file mode 100644 index 518ad01..0000000 --- a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/custom-spotless.gradle.kts +++ /dev/null @@ -1,11 +0,0 @@ -package com.example - -plugins { - com.diffplug.gradle.spotless -} - -spotless { - kotlin { - ktlint() - } -} \ No newline at end of file diff --git a/fixtures/subprojects/dependent-subprojects/groovy/child-d/build.gradle b/fixtures/dependency/classifier/groovy/settings.gradle similarity index 100% rename from fixtures/subprojects/dependent-subprojects/groovy/child-d/build.gradle rename to fixtures/dependency/classifier/groovy/settings.gradle diff --git a/fixtures/dependency/classifier/kotlin/build.gradle.kts b/fixtures/dependency/classifier/kotlin/build.gradle.kts index e195487..524aa43 100644 --- a/fixtures/dependency/classifier/kotlin/build.gradle.kts +++ b/fixtures/dependency/classifier/kotlin/build.gradle.kts @@ -8,4 +8,4 @@ repositories { dependencies { implementation("com.badlogicgames.gdx:gdx-platform:1.9.9:natives-desktop") -} \ No newline at end of file +} diff --git a/fixtures/dependency/classifier/kotlin/settings.gradle.kts b/fixtures/dependency/classifier/kotlin/settings.gradle.kts new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/dependency/maven-bom/kotlin/build.gradle.kts b/fixtures/dependency/maven-bom/kotlin/build.gradle.kts index 9ad9517..2734242 100644 --- a/fixtures/dependency/maven-bom/kotlin/build.gradle.kts +++ b/fixtures/dependency/maven-bom/kotlin/build.gradle.kts @@ -3,10 +3,10 @@ plugins { } repositories { - maven { url = uri("http://localhost:9999") } + maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } } dependencies { implementation(platform("io.micrometer:micrometer-bom:1.5.1")) implementation("io.micrometer:micrometer-core") -} \ No newline at end of file +} diff --git a/fixtures/dependency/maven-bom/kotlin/settings.gradle.kts b/fixtures/dependency/maven-bom/kotlin/settings.gradle.kts new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/dependency/snapshot-dynamic/groovy/build.gradle b/fixtures/dependency/snapshot-dynamic/groovy/build.gradle index 5b137e1..83d134f 100644 --- a/fixtures/dependency/snapshot-dynamic/groovy/build.gradle +++ b/fixtures/dependency/snapshot-dynamic/groovy/build.gradle @@ -3,9 +3,9 @@ plugins { } repositories { - maven { url = uri("http://localhost:9999") } + maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } } dependencies { implementation "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT" -} \ No newline at end of file +} diff --git a/fixtures/dependency/snapshot-dynamic/groovy/settings.gradle b/fixtures/dependency/snapshot-dynamic/groovy/settings.gradle new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/dependency/snapshot-dynamic/kotlin/build.gradle.kts b/fixtures/dependency/snapshot-dynamic/kotlin/build.gradle.kts index 805f99e..695191a 100644 --- a/fixtures/dependency/snapshot-dynamic/kotlin/build.gradle.kts +++ b/fixtures/dependency/snapshot-dynamic/kotlin/build.gradle.kts @@ -1,9 +1,10 @@ + plugins { java } repositories { - maven { url = uri("http://localhost:9999") } + maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } } dependencies { diff --git a/fixtures/dependency/snapshot-dynamic/kotlin/settings.gradle.kts b/fixtures/dependency/snapshot-dynamic/kotlin/settings.gradle.kts new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/dependency/snapshot-redirect/groovy/build.gradle b/fixtures/dependency/snapshot-redirect/groovy/build.gradle index a2a9953..70cfd52 100644 --- a/fixtures/dependency/snapshot-redirect/groovy/build.gradle +++ b/fixtures/dependency/snapshot-redirect/groovy/build.gradle @@ -3,10 +3,9 @@ plugins { } repositories { - jcenter() maven { url 'https://jitpack.io' } } dependencies { implementation 'com.github.anuken:packr:-SNAPSHOT' -} \ No newline at end of file +} diff --git a/fixtures/dependency/snapshot-redirect/groovy/settings.gradle b/fixtures/dependency/snapshot-redirect/groovy/settings.gradle new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/dependency/snapshot/groovy/build.gradle b/fixtures/dependency/snapshot/groovy/build.gradle index e0a1b63..a752a63 100644 --- a/fixtures/dependency/snapshot/groovy/build.gradle +++ b/fixtures/dependency/snapshot/groovy/build.gradle @@ -3,9 +3,9 @@ plugins { } repositories { - maven { url = uri("http://localhost:9999") } + maven { url = uri("file:/../../../../") } } dependencies { implementation "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT" -} \ No newline at end of file +} diff --git a/fixtures/dependency/snapshot/groovy/settings.gradle b/fixtures/dependency/snapshot/groovy/settings.gradle new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/dependency/snapshot/kotlin/build.gradle.kts b/fixtures/dependency/snapshot/kotlin/build.gradle.kts index ed66d2a..5fdce81 100644 --- a/fixtures/dependency/snapshot/kotlin/build.gradle.kts +++ b/fixtures/dependency/snapshot/kotlin/build.gradle.kts @@ -1,9 +1,10 @@ + plugins { java } repositories { - maven { url = uri("http://localhost:9999") } + maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } } dependencies { diff --git a/fixtures/dependency/snapshot/kotlin/settings.gradle.kts b/fixtures/dependency/snapshot/kotlin/settings.gradle.kts new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/golden/basic/basic-java-project.groovy.json b/fixtures/golden/basic/basic-java-project.groovy.json new file mode 100644 index 0000000..83d14c1 --- /dev/null +++ b/fixtures/golden/basic/basic-java-project.groovy.json @@ -0,0 +1,72 @@ +{ + "com.squareup.okio:okio:2.2.2": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + } + }, + "com.squareup.moshi:moshi:1.8.0": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/basic/basic-java-project.kotlin.json b/fixtures/golden/basic/basic-java-project.kotlin.json new file mode 100644 index 0000000..83d14c1 --- /dev/null +++ b/fixtures/golden/basic/basic-java-project.kotlin.json @@ -0,0 +1,72 @@ +{ + "com.squareup.okio:okio:2.2.2": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + } + }, + "com.squareup.moshi:moshi:1.8.0": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/basic/basic-kotlin-project.kotlin.json b/fixtures/golden/basic/basic-kotlin-project.kotlin.json new file mode 100644 index 0000000..cf9a936 --- /dev/null +++ b/fixtures/golden/basic/basic-kotlin-project.kotlin.json @@ -0,0 +1,1258 @@ +{ + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.6.21": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.6.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom" + ], + "hash": "sha256-hKJnm90W1DkKJmp58Gzaix+iq38XlowYk0l84ZWOHEQ=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21": { + "kotlin-gradle-plugin-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.jar" + ], + "hash": "sha256-Z1Oi4RJtP5k6lRryrcBrHsTKJxdulsj2Mnd5kBBNFa0=" + }, + "kotlin-gradle-plugin-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.pom" + ], + "hash": "sha256-7RX0N/j1aW6NU7mszIYS6cas9Wfbau0E/ymq3F4DpC4=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.6.21": { + "kotlin-gradle-plugin-api-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.jar" + ], + "hash": "sha256-x0wfF5FsrG1ygGJkmI0V4yGa8kYJB5E3Tq6cua8ufLM=" + }, + "kotlin-gradle-plugin-api-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.pom" + ], + "hash": "sha256-JL0R1cjnNGMHSBUXnPuyYCAJIxyEE5aTr3ydVtzU3z8=" + } + }, + "org.jetbrains.kotlin:kotlin-native-utils:1.6.21": { + "kotlin-native-utils-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.jar" + ], + "hash": "sha256-a9hyJOVq4V/+IQTTx2M9cq9sezWCRa08SnbG1f0NNr8=" + }, + "kotlin-native-utils-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.pom" + ], + "hash": "sha256-92q9t+TzvxouyTxiqybO/lKg7UlBAY53w/74BrCXvq8=" + } + }, + "org.jetbrains.kotlin:kotlin-util-io:1.6.21": { + "kotlin-util-io-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.jar" + ], + "hash": "sha256-wCxUcFYyGLcDvh5xbi0M6leH01y+tryUbfAMAM1CrNI=" + }, + "kotlin-util-io-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.pom" + ], + "hash": "sha256-52nyybmRQIYlhKLAoRLIQ3P0fkryrxbQHOSThRMZMhk=" + } + }, + "org.jetbrains.kotlin:kotlin-project-model:1.6.21": { + "kotlin-project-model-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.jar" + ], + "hash": "sha256-FLaE+Kc+IpZ4ASS/OB3eAT9YLqIzZ6zgGEWAo4Sa6Ng=" + }, + "kotlin-project-model-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.pom" + ], + "hash": "sha256-dgKHUWgMZJAf76wyN5AmtNC9I3rdfw873ujtXH51LG4=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.6.21": { + "kotlin-gradle-plugin-model-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.jar" + ], + "hash": "sha256-YFmxxhMI+4WaAedYsrj9Ctr/dBs9+AI1+t6VrWq4loc=" + }, + "kotlin-gradle-plugin-model-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.pom" + ], + "hash": "sha256-QkLJzsOQLX21n4OMupPDDnMeC10yzDnQ5Ft1gKZUBOo=" + } + }, + "org.jetbrains.kotlin:kotlin-util-klib:1.6.21": { + "kotlin-util-klib-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.jar" + ], + "hash": "sha256-7iGKnoGAwbNIwawc+K1xj2qseLp+JrUIEyNIT2Q8YbI=" + }, + "kotlin-util-klib-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.pom" + ], + "hash": "sha256-EsegqvZnLbHXgxxHGWV/+b9rEXGbD8h9iNcnXzl/lKs=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.6.21": { + "kotlin-klib-commonizer-api-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.jar" + ], + "hash": "sha256-0s9pUu7ziUqs+KnYzx6MZ78hW075AmioyQMYNFMKOHQ=" + }, + "kotlin-klib-commonizer-api-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.pom" + ], + "hash": "sha256-FICJ7qPCUPClDqxomfFFq5D1mJM8GrT5qsldYXKHJfQ=" + } + }, + "org.jetbrains.kotlin:kotlin-tooling-metadata:1.6.21": { + "kotlin-tooling-metadata-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.jar" + ], + "hash": "sha256-Tsk9BRYGawtki6mHxtPWX2+wZ9wLu6lcHs5h4EKEiOU=" + }, + "kotlin-tooling-metadata-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.pom" + ], + "hash": "sha256-uwYH34aI9gLBwvTQmWMz/YsDtpMoaGpud15S9/sNFxg=" + } + }, + "com.google.code.gson:gson:2.8.9": { + "gson-2.8.9.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar" + ], + "hash": "sha256-05mSkYVd5JXJTHQ3YbirUXbP6r4oGlqw2OjUUyb9cD4=" + }, + "gson-2.8.9.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom" + ], + "hash": "sha256-r97W5qaQ+/OtSuZa2jl/CpCl9jCzA9G3QbnJeSb91N4=" + } + }, + "com.google.guava:guava:29.0-jre": { + "guava-29.0-jre.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.jar" + ], + "hash": "sha256-sixftm1h57lSJTHQSy+RW1FY6AqgtA7nKCyL+wew2iU=" + }, + "guava-29.0-jre.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.pom" + ], + "hash": "sha256-kCfpNAmJA9KH8bphyLZfAdHR4dp6b7zAS/PeBUQBRCY=" + } + }, + "com.google.guava:failureaccess:1.0.1": { + "failureaccess-1.0.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" + ], + "hash": "sha256-oXHuTHNN0tqDfksWvp30Zhr6typBra8x64Tf2vk2yiY=" + }, + "failureaccess-1.0.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom" + ], + "hash": "sha256-6WBCznj+y6DaK+lkUilHyHtAopG1/TzWcqQ0kkEDxLk=" + } + }, + "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava": { + "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" + ], + "hash": "sha256-s3KgN9QjCqV/vv/e8w/WEj+cDC24XQrO0AyRuXTzP5k=" + }, + "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom" + ], + "hash": "sha256-GNSx2yYVPU5VB5zh92ux/gXNuGLvmVSojLzE/zi4Z5s=" + } + }, + "com.google.code.findbugs:jsr305:3.0.2": { + "jsr305-3.0.2.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" + ], + "hash": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=" + }, + "jsr305-3.0.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom" + ], + "hash": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4=" + } + }, + "org.checkerframework:checker-qual:2.11.1": { + "checker-qual-2.11.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar" + ], + "hash": "sha256-AVIkpLHcbebaBTJz1Np9Oc/qIOYwOBafxFrA0dycWTg=" + }, + "checker-qual-2.11.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom" + ], + "hash": "sha256-zy4MkNj3V0VfSiWOpglzkFNmO9XaannZvVP5NaR955w=" + } + }, + "com.google.errorprone:error_prone_annotations:2.3.4": { + "error_prone_annotations-2.3.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar" + ], + "hash": "sha256-uvfW6pfOYGxT4RtoVLpfLOfvXCTd3wr6GNEmC9JbACw=" + }, + "error_prone_annotations-2.3.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.pom" + ], + "hash": "sha256-EyZziktPfMrPYHuGahH7hRk+9g9qWUYRh85yZfm+W+0=" + } + }, + "com.google.j2objc:j2objc-annotations:1.3": { + "j2objc-annotations-1.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" + ], + "hash": "sha256-Ia8wySJnvWEiwOC00gzMtmQaN+r5VsZUDsRx1YTmSns=" + }, + "j2objc-annotations-1.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom" + ], + "hash": "sha256-X6yoJLoRW+5FhzAzff2y/OpGui/XdNQwTtvzD6aj8FU=" + } + }, + "de.undercouch:gradle-download-task:4.1.1": { + "gradle-download-task-4.1.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.jar" + ], + "hash": "sha256-6wi1cOQI1GRnBecKlJYU1DnqKxFFXxZSqwMw3olU2rk=" + }, + "gradle-download-task-4.1.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.pom" + ], + "hash": "sha256-EQnx9xpUJU1ZAzfYudRD+d/AhyjJwdgzVlXMHcyIwLk=" + } + }, + "com.github.gundy:semver4j:0.16.4": { + "semver4j-0.16.4-nodeps.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4-nodeps.jar" + ], + "hash": "sha256-P1nspRY3TM1P01UWJb9Q+KSxkfcAUI985IZkYKYSivA=" + }, + "semver4j-0.16.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom" + ], + "hash": "sha256-MgAdskQ7M53SH1t5/ynRreci0boIDCFL3oGfD3LRYE0=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.21": { + "kotlin-compiler-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar" + ], + "hash": "sha256-X5ZQPNgiqmwg7abHFqVTxBTYAO0Mbn1lX6Gx+/1P7Cs=" + }, + "kotlin-compiler-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom" + ], + "hash": "sha256-wpULrWEPTie9iidbgcDoPIUfGD1gTuH7iRJV9DRa9EE=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.6.21": { + "kotlin-daemon-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar" + ], + "hash": "sha256-UcPsHDLDbWVw2DFC6v4qJCk08WXwt4w4YTdpBfkPLhI=" + }, + "kotlin-daemon-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom" + ], + "hash": "sha256-tFZZFoP6YHGHAFr0sx0x1DYE4CHWBFUf8PIubdpWK5o=" + } + }, + "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + }, + "net.java.dev.jna:jna:5.6.0": { + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" + } + }, + "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.6.21": { + "kotlin-annotation-processing-gradle-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.jar" + ], + "hash": "sha256-tA86gSFVnlAjnFXvh2Z6IYBRG7GTQfzIYZh+T4TOYog=" + }, + "kotlin-annotation-processing-gradle-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.pom" + ], + "hash": "sha256-MImLOrD3X6VZjABz0qoqV9yctWnJ6Mb/O6UXUopMEHE=" + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions:1.6.21": { + "kotlin-android-extensions-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.jar" + ], + "hash": "sha256-QY25MO/hevs27AnooGI1615PYAsrXKFIeEIsn5lEbPs=" + }, + "kotlin-android-extensions-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.pom" + ], + "hash": "sha256-oWU+E091vwu2aNklZdd/Qy3lGijcUcNK9eOBS53tCsQ=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner:1.6.21": { + "kotlin-compiler-runner-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.jar" + ], + "hash": "sha256-IGGw47e3Uwv2cg2LBBC+Eyb7Fs1NrcN+d8Aqz+/loLM=" + }, + "kotlin-compiler-runner-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.pom" + ], + "hash": "sha256-b0Ofb0jeG+QltfdQlLbqpICL6hG8LjzmtUTG4zOQtSU=" + } + }, + "org.jetbrains.kotlin:kotlin-build-common:1.6.21": { + "kotlin-build-common-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.jar" + ], + "hash": "sha256-Y+6kBdNeNOggJcL0FW49R1fLjyWUmWIzVspma9IQAZ0=" + }, + "kotlin-build-common-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.pom" + ], + "hash": "sha256-LRDfBINfB7h6qBoOf+xAbSwawRxU5+CPCOtRGv5btI8=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client:1.6.21": { + "kotlin-daemon-client-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.jar" + ], + "hash": "sha256-ZHawBzZPVFzmd6ObkzG8IbVqvXtWbwOfUfIVCKOQL6c=" + }, + "kotlin-daemon-client-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.pom" + ], + "hash": "sha256-Q8EnIKTydrNdwEOWEo6bf7Goq9B6FstAnGwNZwaiMWs=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.21": { + "kotlin-scripting-compiler-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar" + ], + "hash": "sha256-XJNzrzrkC3PW12JLJOjOEXIUSV2GLebSz7YYpxGRBrE=" + }, + "kotlin-scripting-compiler-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom" + ], + "hash": "sha256-C32qtju7PFTd0+NF6wzLI3aAv9TDh7Zfzllt/0uEe9s=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.6.21": { + "kotlin-scripting-compiler-impl-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar" + ], + "hash": "sha256-5ARLjeAehGM5I3BvQ82oDTfYu++M6ahm+dlZYt3SBIA=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom" + ], + "hash": "sha256-gIxqOEi7Xk9sYWmKxYkxIVc8Q9s4FCNW6D3q0EyzhjQ=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common:1.6.21": { + "kotlin-scripting-common-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar" + ], + "hash": "sha256-v79fA2I3zTPCX7oz1IlI2ZXbgYbOPwnDGvnCnIDOnK4=" + }, + "kotlin-scripting-common-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom" + ], + "hash": "sha256-qgWvDyJWUokIeXiduzo6UY4XdWqFsT1UCo3P3wPL+5w=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.6.21": { + "kotlin-scripting-jvm-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar" + ], + "hash": "sha256-ksA/6r9L3ZLVoixRp0i9NAJ0Z8PY9MZftbV0uGsH0QQ=" + }, + "kotlin-scripting-jvm-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom" + ], + "hash": "sha256-i5q1hXoYheSL2uAPqosix0sNPkCmNPyeCadG+op1fTI=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.6.21": { + "kotlin-stdlib-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.jar" + ], + "hash": "sha256-c5xSZnK7M3Vzso9jr6gwbrCIsMOgln9W1sifSjASpJI=" + }, + "kotlin-stdlib-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.pom" + ], + "hash": "sha256-zkJyW6Ab2DbNqmZ9l032hL9vjxXng5JjMgraf/quHzQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21": { + "kotlin-stdlib-common-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.jar" + ], + "hash": "sha256-GDvsWc2fOhSVexkOjIec8RlL0fEGsKe24cu4eQ0kI2M=" + }, + "kotlin-stdlib-common-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom" + ], + "hash": "sha256-W8FW7nP9PC2sil7FSNWBtjMzNUfC/r7Zz2VH//FSa6I=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "com.natpryce:konfig:1.6.10.0": { + "konfig-1.6.10.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.jar" + ], + "hash": "sha256-1Va6vANYRVP1/TzEaJTF6jMxCSv7qufqYm1bjUznk7s=" + }, + "konfig-1.6.10.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.pom" + ], + "hash": "sha256-1NTlAHxEbyBlnbIqc2WXwLCFOLy6FL1HEND4VNxxFYg=" + } + }, + "com.github.pengrad:java-telegram-bot-api:4.6.0": { + "java-telegram-bot-api-4.6.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.jar" + ], + "hash": "sha256-w4H/cErewM/mZbrnUYtwiT5Czf83Smb0qYxGfeG/TdU=" + }, + "java-telegram-bot-api-4.6.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.pom" + ], + "hash": "sha256-nZxF//5qwbIbZffUK0k2T/gnnX5pLU9wF0BLLhC+YsE=" + } + }, + "com.google.code.gson:gson:2.8.5": { + "gson-2.8.5.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar" + ], + "hash": "sha256-IzoBSfw2XJ9u29aDz+JmsZvcdzvpjqva9rPJJLSOfYE=" + }, + "gson-2.8.5.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom" + ], + "hash": "sha256-uDCFV6f8zJLZ/nyM0FmSWLNhKF0uzedontqYhDJVoJI=" + } + }, + "com.squareup.okhttp3:okhttp:3.12.3": { + "okhttp-3.12.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.jar" + ], + "hash": "sha256-gUWW1U7f2Ut9nYcSvzeYZ9ObCQQo3TjFEG0N7V2jVv8=" + }, + "okhttp-3.12.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.pom" + ], + "hash": "sha256-xXZHCTgwkLDEfEiizwh2OTvt1Ihmv83hk0NJf/oXuEQ=" + } + }, + "com.squareup.okio:okio:1.15.0": { + "okio-1.15.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.jar" + ], + "hash": "sha256-aT+jGafohDMAYCsgQCO3Z08Qbry1d/LdWAchK2YRi9I=" + }, + "okio-1.15.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom" + ], + "hash": "sha256-8cELFIDRq3X7BRoHsnPjfNolJel+Fgfug+aDO3Dhv84=" + } + }, + "com.squareup.okhttp3:logging-interceptor:3.12.3": { + "logging-interceptor-3.12.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.jar" + ], + "hash": "sha256-NNEihOBDYkI+VFe03a74xNhLyNgN1K0ZQ+Y8hQf4FXY=" + }, + "logging-interceptor-3.12.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.pom" + ], + "hash": "sha256-H/YmwXE+Itb1bpLtvctOnBRMszSoT6gAsHAfmW+xp/I=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3": { + "kotlinx-coroutines-core-1.3.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.jar" + ], + "hash": "sha256-91+LDzJgcX1FNZ+elv9mYT+gY+QGUSCwZ8yQcleghmo=" + }, + "kotlinx-coroutines-core-1.3.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom" + ], + "hash": "sha256-KZmeUobJiKm3K3xt/rmE2fohxRcY9bb5P1Yh5wClN/4=" + } + }, + "io.javalin:javalin:3.7.0": { + "javalin-3.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.jar" + ], + "hash": "sha256-YGYQPPI2In7IacUllknrErvlwFyH8MHp9y86RGYOZ3I=" + }, + "javalin-3.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.pom" + ], + "hash": "sha256-11U3Www5qZiAEH3sDAzdMgDx7qi2npxtFkYdyuR050M=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61": { + "kotlin-stdlib-jdk8-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar" + ], + "hash": "sha256-ODm6fet5g3XaGAe8Rp0c8xXbemJ1WZ9zMYQ3R3LsOyE=" + }, + "kotlin-stdlib-jdk8-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom" + ], + "hash": "sha256-4wGH5XIMpkC45oaG8g3QJQ3O8Bk9VuVWnDxKYSdzErY=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61": { + "kotlin-stdlib-jdk7-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar" + ], + "hash": "sha256-EfSlfj59gfPxUtXc7+Ob13YUtalBJf87EVJrChmsOYk=" + }, + "kotlin-stdlib-jdk7-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom" + ], + "hash": "sha256-xBYICuq9uRGKCO54wo4oVgOM2FhYQipx98Rr8nb2Z6c=" + } + }, + "org.slf4j:slf4j-api:1.8.0-beta4": { + "slf4j-api-1.8.0-beta4.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar" + ], + "hash": "sha256-YCtxIynIS0qDxARk9P39D+QjjFPvOXE5qGcGRznb9OA=" + }, + "slf4j-api-1.8.0-beta4.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.pom" + ], + "hash": "sha256-+DFtKKzyUrIbHp6O7ZqEwq+9yOBA9p06ELq4E9PYWoU=" + } + }, + "org.eclipse.jetty:jetty-server:9.4.25.v20191220": { + "jetty-server-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.jar" + ], + "hash": "sha256-z89tvOS+zuXwZw2bx6do0bc87wyEZj6CrMC5EN8lZfQ=" + }, + "jetty-server-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.pom" + ], + "hash": "sha256-uWOogVUMUf5hOTgJbqfwWZLoGzBBy8faXgb6+8/YZWk=" + } + }, + "javax.servlet:javax.servlet-api:3.1.0": { + "javax.servlet-api-3.1.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" + ], + "hash": "sha256-r0VrLdQcToLPVPPnQ7xniXPZ/jW9TTBx+gXH5TM7hII=" + }, + "javax.servlet-api-3.1.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom" + ], + "hash": "sha256-sxEJ4i6j8t8a15VUMucYo13vUK5sGWmANK+ooM+ekGk=" + } + }, + "org.eclipse.jetty:jetty-http:9.4.25.v20191220": { + "jetty-http-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.jar" + ], + "hash": "sha256-3JxGbw/kvzf9X02iPQFoSwZ63poWAsTzxbaUvMIIR7o=" + }, + "jetty-http-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.pom" + ], + "hash": "sha256-upIlnnZtESJEah+zuPZAXnroxcQS8i6XbLCEyoxhm4c=" + } + }, + "org.eclipse.jetty:jetty-util:9.4.25.v20191220": { + "jetty-util-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.jar" + ], + "hash": "sha256-IjeA1yTBx0Y8MjOoLAdobz/XigIvVg0BAlfb5AKODRQ=" + }, + "jetty-util-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.pom" + ], + "hash": "sha256-iEWSOTxmB1pqb6Z9iY532crIf1lIy10xDPyN5Z7wE8Y=" + } + }, + "org.eclipse.jetty:jetty-io:9.4.25.v20191220": { + "jetty-io-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.jar" + ], + "hash": "sha256-6cMdtQO2B1/UPxVTGQMAfB6Cn8JF2jQEtuQyfyTvlWk=" + }, + "jetty-io-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.pom" + ], + "hash": "sha256-q1nyQDwSIWhSvBzyhOVhETo9LgsZUmMwmLBfOQW9kYE=" + } + }, + "org.eclipse.jetty:jetty-webapp:9.4.25.v20191220": { + "jetty-webapp-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.jar" + ], + "hash": "sha256-qnWB2sNcrVdLA82aFEuibc9DeZ0k7P9enzoGiKJzLvE=" + }, + "jetty-webapp-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.pom" + ], + "hash": "sha256-HRXbctxeN+O+7iEjd1PsYkXn/sXj/ehUK5Yf/ZB9Ufw=" + } + }, + "org.eclipse.jetty:jetty-xml:9.4.25.v20191220": { + "jetty-xml-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.jar" + ], + "hash": "sha256-+xNsUWNTj8WHQuqlbfRIdlu4FvJd43Hasf6u5612tN8=" + }, + "jetty-xml-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.pom" + ], + "hash": "sha256-05fGZk1fr9j7VX7NJU4EZP16bakwG60B4C248SAFvrM=" + } + }, + "org.eclipse.jetty:jetty-servlet:9.4.25.v20191220": { + "jetty-servlet-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.jar" + ], + "hash": "sha256-LU0t1OZdCWL0/xHTycytMKYmN3fgVpwbVzE4aLNHchw=" + }, + "jetty-servlet-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.pom" + ], + "hash": "sha256-tw95bbbqAGKLv7ph5aLgMRLjJ10OaIHJN/ARwn/wXos=" + } + }, + "org.eclipse.jetty:jetty-security:9.4.25.v20191220": { + "jetty-security-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.jar" + ], + "hash": "sha256-Y3HBY7kqyNb6sIyx2rkdDmkOclZoc9j3g706d5Oj2iY=" + }, + "jetty-security-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.pom" + ], + "hash": "sha256-2j1qeYtoSPOXIPxweDTha+S8pC31qiXCWSK5Mvz+rus=" + } + }, + "org.eclipse.jetty.websocket:websocket-server:9.4.25.v20191220": { + "websocket-server-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.jar" + ], + "hash": "sha256-PjO/DwuuXX+/Rx16JWroB4UCkGoxIaCgANkU39F21bo=" + }, + "websocket-server-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.pom" + ], + "hash": "sha256-o9WaXSoxrXskMRuXh2Eog5sNeO+oH4blG6yqelb5MKQ=" + } + }, + "org.eclipse.jetty.websocket:websocket-common:9.4.25.v20191220": { + "websocket-common-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.jar" + ], + "hash": "sha256-1bvWkUvEIbKOB6MXkc2ZKgBnQX1rX9Bapkq1hDrydzw=" + }, + "websocket-common-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.pom" + ], + "hash": "sha256-ukxD7w1zKeye8StLaAa+D3rHPCQRm8vkvj1m7ebbmlQ=" + } + }, + "org.eclipse.jetty.websocket:websocket-api:9.4.25.v20191220": { + "websocket-api-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.jar" + ], + "hash": "sha256-sRCCel9HyDUQMj7hm+h+N7FUDhVTfNAhqTVJ4El0f68=" + }, + "websocket-api-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.pom" + ], + "hash": "sha256-xn/BVBQDGiWCGJri17IMVhDTUvWkf4fSi8+1lJQTWcs=" + } + }, + "org.eclipse.jetty.websocket:websocket-client:9.4.25.v20191220": { + "websocket-client-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.jar" + ], + "hash": "sha256-dIMBH4pyWNlP62P+SjZSCYG8HYXsPdGxSJlX1AcRFOw=" + }, + "websocket-client-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.pom" + ], + "hash": "sha256-AzAQdDEZ7xKiB2CXLdHAu6BwLuiVU5LtP/QdF2RMOs4=" + } + }, + "org.eclipse.jetty:jetty-client:9.4.25.v20191220": { + "jetty-client-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.jar" + ], + "hash": "sha256-qwUsaY1GjdLLjZ1bcH5VqUQDDZFfT59BrDzc+Cs9xuA=" + }, + "jetty-client-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.pom" + ], + "hash": "sha256-ixNwOlizo3BtJIiemlXDSRu+XY+DZdOoKkvvqcbp+eM=" + } + }, + "org.eclipse.jetty.websocket:websocket-servlet:9.4.25.v20191220": { + "websocket-servlet-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.jar" + ], + "hash": "sha256-nYoe6bmGzp/JJM3ai9fvzxwLZ0X3qWa1B8x3WU/vIms=" + }, + "websocket-servlet-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.pom" + ], + "hash": "sha256-WgVNHE2/17gfAqoOIR+pm7ZHZEn6T48swQGjvPtT7wY=" + } + }, + "org.slf4j:slf4j-simple:1.8.0-beta4": { + "slf4j-simple-1.8.0-beta4.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.jar" + ], + "hash": "sha256-usZqvFtEYt/2Lh4ZqzsKZcFg681WTPJZENsAOo5WnP0=" + }, + "slf4j-simple-1.8.0-beta4.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.pom" + ], + "hash": "sha256-oXrS6OU00OgZ6o0UIT3nSNRlD/8qJX0+kqE9oxAoe/c=" + } + }, + "org.xerial:sqlite-jdbc:3.30.1": { + "sqlite-jdbc-3.30.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.jar" + ], + "hash": "sha256-KAA0qJkwABBMWza8XhE5sOgt8d6c/ZUfUpva3q9vRW0=" + }, + "sqlite-jdbc-3.30.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.pom" + ], + "hash": "sha256-eGpZKh7AtwPJJVOlE37gAxGb5UmlGTM05t44WrKGb3I=" + } + }, + "org.postgresql:postgresql:42.2.2": { + "postgresql-42.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.jar" + ], + "hash": "sha256-GZZSQCajAnhT85MuhjnvgTgH0bY/4Ugy9BD/+kJ0+nA=" + }, + "postgresql-42.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.pom" + ], + "hash": "sha256-NbNCwrBu1Cf6VP/xw3GNQ2HvrcNC7DJM7DnBeKm481Y=" + } + }, + "com.fasterxml.jackson.core:jackson-databind:2.10.1": { + "jackson-databind-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar" + ], + "hash": "sha256-LSP0cAFJIjNWWt9aNPIl8q6JVkzuCAJIc+w2t4Qu3kY=" + }, + "jackson-databind-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.pom" + ], + "hash": "sha256-OGlQZeP1ILBbvY6lmC5ba1vZ+FYpZ7g9rLfQerCMauc=" + } + }, + "com.fasterxml.jackson.core:jackson-annotations:2.10.1": { + "jackson-annotations-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar" + ], + "hash": "sha256-Zz+K4Wvs6k+pN0BLOoUUF/r0LfO7xZICi74r/gzJ2Ms=" + }, + "jackson-annotations-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.pom" + ], + "hash": "sha256-7OURA2Z+iBHw/3RYmGryFxhi5UuYE8FwjPk3kESH+Vw=" + } + }, + "com.fasterxml.jackson.core:jackson-core:2.10.1": { + "jackson-core-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar" + ], + "hash": "sha256-eb/73NNJ9ppawlLitAlhMXBDhq9PoU2VOV6poOQjzzM=" + }, + "jackson-core-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.pom" + ], + "hash": "sha256-EXkJC3ILJankJmQwLwM0oiQLMMcoC0IkJeT0UZ5bLP4=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.3.61": { + "kotlin-stdlib-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.jar" + ], + "hash": "sha256-5R5RJhmn52UKMOtOs+nAPmkJx7XjwCZATgdiVMCYuTI=" + }, + "kotlin-stdlib-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom" + ], + "hash": "sha256-2+W6vNjUPpsIwoRWgLU/wbs+BRxIBYAt3Q7T6OLFCoQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61": { + "kotlin-stdlib-common-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.jar" + ], + "hash": "sha256-oufzQc8wR7XwChkX73d9MjzasqVzd0aLjtYqoxRpz38=" + }, + "kotlin-stdlib-common-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom" + ], + "hash": "sha256-4i2wCbsaYWNtlCVjWYlzbbXj/KSUgJq/JERo3EdM/AQ=" + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime:1.6.21": { + "kotlin-script-runtime-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.jar" + ], + "hash": "sha256-YGw0p+bo5DnpIIdl59dbHbz4Dzg1Pz4puydFbXs3EXE=" + }, + "kotlin-script-runtime-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.pom" + ], + "hash": "sha256-jVeQOOsdLK0DMFKOKdyMy4rozQ1WClRMXBswqT7O/t4=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.6.21": { + "kotlin-reflect-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.jar" + ], + "hash": "sha256-Hh9XIJ9yOMP9FzWhuTOaVlZVB9yiSfg3G/WdkfYBrqo=" + }, + "kotlin-reflect-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.pom" + ], + "hash": "sha256-2nHh493COI1nVkFnLi8DFtucnSEvlG8CbUoOahM2p/M=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.21": { + "kotlin-klib-commonizer-embeddable-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.jar" + ], + "hash": "sha256-1jgafq67fkj8p2v1u55fQ/pW3eb9UQXK6N4TXmMoD3A=" + }, + "kotlin-klib-commonizer-embeddable-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.pom" + ], + "hash": "sha256-bz7nSBQNsbaG5nqJehadbeQv1nQkHVVA3FK7o2Re/i4=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21": { + "kotlin-stdlib-jdk8-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.jar" + ], + "hash": "sha256-2rRUibR3NtWfzkS4BnbxlHqba8qxD9YOh4qDvYKmlUw=" + }, + "kotlin-stdlib-jdk8-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.pom" + ], + "hash": "sha256-g2oReaCNJJFGl9JhLgO4SKCHyAy0sMoj+c+rJH86dcQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21": { + "kotlin-stdlib-jdk7-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.jar" + ], + "hash": "sha256-8bBjTbuUFyA4RjAguy3UXKJoSfjOKdYlrLDxVp0R2+4=" + }, + "kotlin-stdlib-jdk7-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.pom" + ], + "hash": "sha256-ARzSjruf3oFrA1nVrhCjZ07A/yxTEMBBLCDv6Oo9oG4=" + } + }, + "com.winterbe:expekt:0.5.0": { + "expekt-0.5.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.jar" + ], + "hash": "sha256-mKJnQqgnRs1u5m7/u8PK/TInA+onhhf734u5tU3O8Xw=" + }, + "expekt-0.5.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.pom" + ], + "hash": "sha256-We03cwfzVZIPORBAQ6YBDDrnbKWfKULGxk3Ttg0pEsc=" + } + }, + "org.spekframework.spek2:spek-dsl-jvm:2.0.9": { + "spek-dsl-jvm-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.jar" + ], + "hash": "sha256-gohf+MCcJfvntBQS/IoIyCAn8kuE6gH3ZL5jm8CYGeg=" + }, + "spek-dsl-jvm-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.pom" + ], + "hash": "sha256-q3b2C4rYViJC615qA1SLpiL6xHDFpE6pzckZ34VzgQQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.0.3": { + "kotlin-stdlib-1.0.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.jar" + ], + "hash": "sha256-ZyHVKFgAZF7WgZP35t0H0srOCd6fO3XN8fMFD0Y1l4E=" + }, + "kotlin-stdlib-1.0.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.pom" + ], + "hash": "sha256-QK5yi+5hvXgSHcWjdko/vH1jRYaHuRmI2qXKMhFQNx0=" + } + }, + "org.jetbrains.kotlin:kotlin-runtime:1.0.3": { + "kotlin-runtime-1.0.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.jar" + ], + "hash": "sha256-jBkPOBLPoR0I6wFBuMh36jJC8N3Q6r/llSV0Pq5ifo4=" + }, + "kotlin-runtime-1.0.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.pom" + ], + "hash": "sha256-LaX+tSEGymCnZiDUaRgktUkbyi7ojMJVcwALCX3lRRc=" + } + }, + "org.spekframework.spek2:spek-runner-junit5:2.0.9": { + "spek-runner-junit5-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.jar" + ], + "hash": "sha256-K0ZmWbdh12OKtc2CX8yC3CrA1FPJ6yAKGUAHG4KkpYY=" + }, + "spek-runner-junit5-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.pom" + ], + "hash": "sha256-7GcxgitATmAvUWoOpzJFBWgHoMWg2Kb4SkTjqnfrSjg=" + } + }, + "org.spekframework.spek2:spek-runtime-jvm:2.0.9": { + "spek-runtime-jvm-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.jar" + ], + "hash": "sha256-dZ18fuF78XJYwySioaGwhusrz2QnnBfh+av1Xsph+nQ=" + }, + "spek-runtime-jvm-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.pom" + ], + "hash": "sha256-9o3lUgIMgh6TRueEI5uGtT5rR1+2DQRoWsdGILeiKeU=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.3.50": { + "kotlin-reflect-1.3.50.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar" + ], + "hash": "sha256-ZFgxmepaVK79G9FZUoiSX3hCJu5WLR3SeQEcYHWz16Q=" + }, + "kotlin-reflect-1.3.50.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom" + ], + "hash": "sha256-h0UYHlo+C6/v1GMJxrgQ33JT83n+uYUTHq+NTZwwJjU=" + } + }, + "io.github.classgraph:classgraph:4.8.37": { + "classgraph-4.8.37.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar" + ], + "hash": "sha256-fR0+iCjB7vVJ1B7x7Oc9LFxYz7lRs/Igzwzx3SVVgXM=" + }, + "classgraph-4.8.37.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom" + ], + "hash": "sha256-pJBV0GEleGZQvjPu13rphQCROLhNOWA7wesu08gIWzQ=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.0": { + "kotlinx-coroutines-core-common-1.3.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.jar" + ], + "hash": "sha256-Evof8J9dtFxlGJKP9HmjZPOqEXSRW6JgWkIF7GCwGMM=" + }, + "kotlinx-coroutines-core-common-1.3.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.pom" + ], + "hash": "sha256-V2kqeg3vYTmMQz4s87C0p0l4ZpQuBLFFshG1t57CoYM=" + } + }, + "org.junit.platform:junit-platform-engine:1.5.2": { + "junit-platform-engine-1.5.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.jar" + ], + "hash": "sha256-/yC6StjADvF7rvnFVRL5wC2aaHQPfxrAGppqoCOZMfg=" + }, + "junit-platform-engine-1.5.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.pom" + ], + "hash": "sha256-LUuVVVwh4IXrwd299C156x1VZA3Bk7G35hACQP0vGJ8=" + } + }, + "org.apiguardian:apiguardian-api:1.1.0": { + "apiguardian-api-1.1.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar" + ], + "hash": "sha256-qarp/4rj4XoqGPeRdegrFiZ8JG+708qd+7spCwjc/dQ=" + }, + "apiguardian-api-1.1.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom" + ], + "hash": "sha256-qUW5y1zZt3sscRhE5lnEPsBw71nZ9Qn6n0wYYbSGJxE=" + } + }, + "org.opentest4j:opentest4j:1.2.0": { + "opentest4j-1.2.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" + ], + "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" + }, + "opentest4j-1.2.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" + ], + "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" + } + }, + "org.junit.platform:junit-platform-commons:1.5.2": { + "junit-platform-commons-1.5.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.jar" + ], + "hash": "sha256-/ESv38DyDIXnGmbnlDKBrvO8Hg/WLS1po2y2kB5oLBA=" + }, + "junit-platform-commons-1.5.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.pom" + ], + "hash": "sha256-O9DU3tYyqK+MpYf7Z2QBnedxsda8uJrNViQ1oQCfqto=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json b/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json new file mode 100644 index 0000000..5be4cf3 --- /dev/null +++ b/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json @@ -0,0 +1,576 @@ +{ + "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.1.0": { + "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.1.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.1.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.1.0.pom" + ], + "hash": "sha256-PKFoMBmO4Pc//RRgknW3A5zR/seULCInsEX6JpbjV2c=" + } + }, + "org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.1.0": { + "gradle-kotlin-dsl-plugins-4.1.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.1.0/gradle-kotlin-dsl-plugins-4.1.0.jar" + ], + "hash": "sha256-jpBY+e9xNsVaJKXPKgoZKNb9oYJ2JZ0KktaxAr8m1Cc=" + }, + "gradle-kotlin-dsl-plugins-4.1.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.1.0/gradle-kotlin-dsl-plugins-4.1.0.module" + ], + "hash": "sha256-0KuS4r6L+a8iIhAL4VOLP2R7SvA0+ZA1RJGKO4dxrq8=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.0": { + "kotlin-stdlib-jdk8-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.jar" + ], + "hash": "sha256-pZ+iT98f+1lLrs2/D9EAEPl3zqECNtSH/jRkl3pzd/o=" + }, + "kotlin-stdlib-jdk8-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.pom" + ], + "hash": "sha256-ZNWY3YjiUEZnMeIDBKtvBsu7urfuMitHA7a1n4gcT5I=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.9.0": { + "kotlin-stdlib-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.jar" + ], + "hash": "sha256-Na7/vi21qkRgcs7lD87ki3+p4vxRyjfAzH19C8OdlS4=" + }, + "kotlin-stdlib-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.pom" + ], + "hash": "sha256-N3UiY/Ysw+MlCFbiiO5Kc9QQLXJqd2JwNPlIBsjBCso=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.0": { + "kotlin-stdlib-common-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.jar" + ], + "hash": "sha256-KDJ0IEvXwCB4nsRvj45yr0JE1/VQszkqV+XKAGrXqiw=" + }, + "kotlin-stdlib-common-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.pom" + ], + "hash": "sha256-NmDTanD+s6vknxG5BjPkHTYnNXbwcbDhCdqbOg3wgqU=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.0": { + "kotlin-stdlib-jdk7-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.jar" + ], + "hash": "sha256-t5eaeqyUBV8Nnx/TtHzl/+HLYDKoQrqfvnGG8IUokXg=" + }, + "kotlin-stdlib-jdk7-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.pom" + ], + "hash": "sha256-wRB08MiYqYuGPGFEcdQ409+Soewzgqbjf5NdfXGVS1o=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0": { + "kotlin-gradle-plugin-1.9.0-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.0/kotlin-gradle-plugin-1.9.0-gradle81.jar" + ], + "hash": "sha256-2UOg4ntHRuAfg0BaSfUmoi9HGx2x1GOdb84m1xHv+/4=" + }, + "kotlin-gradle-plugin-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.0/kotlin-gradle-plugin-1.9.0.module" + ], + "hash": "sha256-/mOWRe2PvcW8Et588lRopNsx52O6ea26ogahTeYP0xQ=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.0": { + "kotlin-gradle-plugin-api-1.9.0-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0-gradle81.jar" + ], + "hash": "sha256-AhbssMeA+V47EBoOlc/DZ/LvVrBvLeqqqZJaDxF8INk=" + }, + "kotlin-gradle-plugin-api-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0.jar" + ], + "hash": "sha256-AhbssMeA+V47EBoOlc/DZ/LvVrBvLeqqqZJaDxF8INk=" + }, + "kotlin-gradle-plugin-api-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0.module" + ], + "hash": "sha256-Gu1WWijZE0KsWkuhRsKFal67xjkoXFKVUhefr8dhTds=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.0": { + "kotlin-gradle-plugins-bom-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.0/kotlin-gradle-plugins-bom-1.9.0.module" + ], + "hash": "sha256-/SufabguQ8tQnwhBsYvzxd99q18eC+oDT8CypZnW4pY=" + }, + "kotlin-gradle-plugins-bom-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.0/kotlin-gradle-plugins-bom-1.9.0.pom" + ], + "hash": "sha256-XTmtkDDf0zsLrCn3UAAJzmKHYulP5h8BF3rhNL24D6E=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.0": { + "kotlin-gradle-plugin-model-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.0/kotlin-gradle-plugin-model-1.9.0.jar" + ], + "hash": "sha256-/wWqtoizSnmSp+NfncTewlhD8Tqelwrv5W3T4SKghBU=" + }, + "kotlin-gradle-plugin-model-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.0/kotlin-gradle-plugin-model-1.9.0.module" + ], + "hash": "sha256-ZvS5FEcM80bgXQP4otWenHRvpu3PZMcS8XagiBqsPkk=" + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core:1.9.0": { + "kotlin-tooling-core-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.jar" + ], + "hash": "sha256-5TmiJCi5ysZ/dbLWHytuKnGDUNe7MYI8fcqJB/kJma4=" + }, + "kotlin-tooling-core-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.pom" + ], + "hash": "sha256-KSbD/CFJWXAcjxYNjdyGn3s/pFKv3o3RdcjnwrvHBSI=" + } + }, + "org.jetbrains.kotlin:kotlin-sam-with-receiver:1.9.0": { + "kotlin-sam-with-receiver-1.9.0-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.0/kotlin-sam-with-receiver-1.9.0-gradle81.jar" + ], + "hash": "sha256-mK1U0XMRxg6FyGlDPV3TdpMTIDABJwCb5+nrsyH8xCs=" + }, + "kotlin-sam-with-receiver-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.0/kotlin-sam-with-receiver-1.9.0.module" + ], + "hash": "sha256-GTPz8nsCrr/6LnvBmWN8TKg90xgHqjgwDLHh+jGsoiU=" + } + }, + "org.jetbrains.kotlin:kotlin-assignment:1.9.0": { + "kotlin-assignment-1.9.0-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.0/kotlin-assignment-1.9.0-gradle81.jar" + ], + "hash": "sha256-mBdB+GlpwM4YQ1pcEJePJ3VGMxbOgqp/gmfsf2qfFNk=" + }, + "kotlin-assignment-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.0/kotlin-assignment-1.9.0.module" + ], + "hash": "sha256-kqBzm0y4NgSm3jddsKP+gTUDhZy8+aLtqZ++CXs8e9Y=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.0": { + "kotlin-gradle-plugin-annotations-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.0/kotlin-gradle-plugin-annotations-1.9.0.jar" + ], + "hash": "sha256-KiZbNbx8VYIUJukbajzU9LkWOKC8fIffz+TgX36IRzg=" + }, + "kotlin-gradle-plugin-annotations-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.0/kotlin-gradle-plugin-annotations-1.9.0.pom" + ], + "hash": "sha256-qjXuWp0dpZMV92nH/tsshwBWD1PFaAupKwsniBpKQnE=" + } + }, + "org.jetbrains.kotlin:kotlin-native-utils:1.9.0": { + "kotlin-native-utils-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.0/kotlin-native-utils-1.9.0.jar" + ], + "hash": "sha256-D0gF93S/tcG20UXf5g09ILGu4ACJbOjs8+7/hM5EAjs=" + }, + "kotlin-native-utils-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.0/kotlin-native-utils-1.9.0.pom" + ], + "hash": "sha256-Kazy3vkmve3Z6yBOx3Tnhq3Ek0EGqSlJAK81FVbn52o=" + } + }, + "org.jetbrains.kotlin:kotlin-util-io:1.9.0": { + "kotlin-util-io-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.0/kotlin-util-io-1.9.0.jar" + ], + "hash": "sha256-gdNtxt4/C+rwTDl6BrVoITujc6vO9Tlyt7gvYX1a9ws=" + }, + "kotlin-util-io-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.0/kotlin-util-io-1.9.0.pom" + ], + "hash": "sha256-BUBa+xn3tgbFKr6haJqi1ew9qQL+4teoV2lDOeSgQJQ=" + } + }, + "org.jetbrains.kotlin:kotlin-util-klib:1.9.0": { + "kotlin-util-klib-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.0/kotlin-util-klib-1.9.0.jar" + ], + "hash": "sha256-wtxr820zabdzdVq4k3uX5Tmk1F04Fb7xm+36FUsS0xM=" + }, + "kotlin-util-klib-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.0/kotlin-util-klib-1.9.0.pom" + ], + "hash": "sha256-acZHGaDgRjb2whMZ/lGKC1gieEu66P7YXmUfv6b4pFs=" + } + }, + "org.jetbrains.kotlin:kotlin-project-model:1.9.0": { + "kotlin-project-model-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.0/kotlin-project-model-1.9.0.jar" + ], + "hash": "sha256-rgk26bTGkh8D73eTYcrLu3XtKyIQR5+S9l8cushuNAw=" + }, + "kotlin-project-model-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.0/kotlin-project-model-1.9.0.pom" + ], + "hash": "sha256-6sHGTGAMYAJ7jmjfrTogPEFbn6IkWB1oz6Xnc+hWa3g=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.0": { + "kotlin-gradle-plugin-idea-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.0/kotlin-gradle-plugin-idea-1.9.0.jar" + ], + "hash": "sha256-C7JszuNyr7m1hPKFfofMLz9TK2Kk9/pFdVjzr8Or6ZU=" + }, + "kotlin-gradle-plugin-idea-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.0/kotlin-gradle-plugin-idea-1.9.0.module" + ], + "hash": "sha256-pVg82bC0AS6VWtlhn7kBe1saosJRsFltr1M0kExcpls=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.0": { + "kotlin-gradle-plugin-idea-proto-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.0/kotlin-gradle-plugin-idea-proto-1.9.0.jar" + ], + "hash": "sha256-54mY6iK81fVtE5gszBJMnHM3vRUHVMvcivKhSNdslwA=" + }, + "kotlin-gradle-plugin-idea-proto-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.0/kotlin-gradle-plugin-idea-proto-1.9.0.pom" + ], + "hash": "sha256-QeElaFOKOjQHBMlww6T2D/WAH/3OQlymjKLAtHIhclA=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.0": { + "kotlin-klib-commonizer-api-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.0/kotlin-klib-commonizer-api-1.9.0.jar" + ], + "hash": "sha256-hd4ulysLtvRSjB90j0PEhmMUX8hTnsqWwT0bwNo/k10=" + }, + "kotlin-klib-commonizer-api-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.0/kotlin-klib-commonizer-api-1.9.0.pom" + ], + "hash": "sha256-hE+SCI/0j4v64lYh4yStw1d5CM9lD0/bJWlhC4+vaz4=" + } + }, + "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.0": { + "kotlin-build-tools-api-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.0/kotlin-build-tools-api-1.9.0.jar" + ], + "hash": "sha256-0ZyavegKnPQtJezJLLEUjtOhXu2yZy2qHkZubaWQ7sY=" + }, + "kotlin-build-tools-api-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.0/kotlin-build-tools-api-1.9.0.pom" + ], + "hash": "sha256-iIFxmCZbm8BrPzSTWyv2qpj0gA7OvBzOQREN70m3pCE=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.0": { + "kotlin-compiler-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.0/kotlin-compiler-embeddable-1.9.0.jar" + ], + "hash": "sha256-lTtQaR103SGf8/ZkRnDD5UnYfN/AphVPFgKmoKXf43M=" + }, + "kotlin-compiler-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.0/kotlin-compiler-embeddable-1.9.0.pom" + ], + "hash": "sha256-7jyHHO39bM9A0ESUQJbihlXeL5NF2ET+7GPMqcXkt8w=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.0": { + "kotlin-daemon-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.0/kotlin-daemon-embeddable-1.9.0.jar" + ], + "hash": "sha256-lDGCoTfs1A5ikFjaUtszbO6bZm+AmWtlWELyCmNz35o=" + }, + "kotlin-daemon-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.0/kotlin-daemon-embeddable-1.9.0.pom" + ], + "hash": "sha256-OOMsu5GFenIGy/3cON1O4L5mX0CgEV/21NF348f4kq8=" + } + }, + "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions:1.9.0": { + "kotlin-android-extensions-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.0/kotlin-android-extensions-1.9.0.jar" + ], + "hash": "sha256-IGdbuyp7aYKnFEUYpRi5qJZfkK6JuMmHiJgBIkSh6jM=" + }, + "kotlin-android-extensions-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.0/kotlin-android-extensions-1.9.0.pom" + ], + "hash": "sha256-WOHIg3JukUaVIDV95u0Xw/mSnI4IsRdKJ6OtbsDrzVI=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.0": { + "kotlin-compiler-runner-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.0/kotlin-compiler-runner-1.9.0.jar" + ], + "hash": "sha256-BbWlXUlJFhpxT838ZKXwTYejZMm73IZBs7t6VVfkPqo=" + }, + "kotlin-compiler-runner-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.0/kotlin-compiler-runner-1.9.0.pom" + ], + "hash": "sha256-GIN9BlVntn5bzy4wTYWm4rbSRDz4En9AdnNKTo3yo2E=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client:1.9.0": { + "kotlin-daemon-client-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.0/kotlin-daemon-client-1.9.0.jar" + ], + "hash": "sha256-WoyXfn3H8N4tka5Yva3CBBXe9M9dST5aGD+WxZeZAyA=" + }, + "kotlin-daemon-client-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.0/kotlin-daemon-client-1.9.0.pom" + ], + "hash": "sha256-sv50dBgjzM6JMXCWkg3LnOXBa460Z5jTn9jmdwPFidc=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.0": { + "kotlin-scripting-compiler-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.0/kotlin-scripting-compiler-embeddable-1.9.0.jar" + ], + "hash": "sha256-Rp3RIGiVipevzhGIoBRFVM3tZ95aGqC/XKUwOfKdizY=" + }, + "kotlin-scripting-compiler-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.0/kotlin-scripting-compiler-embeddable-1.9.0.pom" + ], + "hash": "sha256-UJ5ikUwwvT43GcDgLk5Df8vxkRa4ouZYSPbUbFTsXJ4=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.0": { + "kotlin-scripting-compiler-impl-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.0/kotlin-scripting-compiler-impl-embeddable-1.9.0.jar" + ], + "hash": "sha256-ZcUlbiyPvdpCbAMobmomgmfXEu+V7C05yVKSlXN4sE0=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.0/kotlin-scripting-compiler-impl-embeddable-1.9.0.pom" + ], + "hash": "sha256-zaYp8KgbqcAKM95QJ/D4/7+fC45E5BlwNHdmu4WLTmM=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common:1.9.0": { + "kotlin-scripting-common-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.jar" + ], + "hash": "sha256-KFxBwO7tWaDn3LGIuJ+BVBR/vLvVNUcc9piWzNonP4Q=" + }, + "kotlin-scripting-common-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.pom" + ], + "hash": "sha256-C/MG5PRe6xrDAk4pnUybcL4J7OmsAOcLL/mLPtQA8wc=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.0": { + "kotlin-scripting-jvm-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.0/kotlin-scripting-jvm-1.9.0.jar" + ], + "hash": "sha256-Zp3SvGBBjgdRU/2K2NllvlaetlwvMIOIyxEDud8TUVk=" + }, + "kotlin-scripting-jvm-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.0/kotlin-scripting-jvm-1.9.0.pom" + ], + "hash": "sha256-Ymj4BVjTX9qSRruneTKWkrlNWJWWVQfL6KhIkSxQ5yo=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.9.0": { + "kotlin-reflect-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.0/kotlin-reflect-1.9.0.jar" + ], + "hash": "sha256-IHAVm+UU6o6jziyLHueZPm/2CpNWWimfIAYpqn339YE=" + }, + "kotlin-reflect-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.0/kotlin-reflect-1.9.0.pom" + ], + "hash": "sha256-hXFWVnbRiXIEcTBs7ppV2RbAgDgvNabaaBk6x7EvTNs=" + } + }, + "com.gradle.publish:plugin-publish-plugin:1.2.1": { + "plugin-publish-plugin-1.2.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" + ], + "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" + }, + "plugin-publish-plugin-1.2.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" + ], + "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" + } + }, + "org.apache.maven:maven-model:3.6.3": { + "maven-model-3.6.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" + ], + "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" + }, + "maven-model-3.6.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" + ], + "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime:1.9.0": { + "kotlin-script-runtime-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.0/kotlin-script-runtime-1.9.0.jar" + ], + "hash": "sha256-2E0MykEFD6wqlS0RBEc8Mpr/BMULNxMuV1SiCYCa3Z8=" + }, + "kotlin-script-runtime-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.0/kotlin-script-runtime-1.9.0.pom" + ], + "hash": "sha256-FNwHhdGUFP7sEgI91z64DIPQeIC3PlS48IqHj0I9seY=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.6.10": { + "kotlin-reflect-1.6.10.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" + ], + "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" + }, + "kotlin-reflect-1.6.10.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" + ], + "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" + } + }, + "org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.0": { + "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.0/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.jar" + ], + "hash": "sha256-o7OlA4sNEybfGz/lvyCmaQnt1C3qa2P3BgCm8k/0VYw=" + }, + "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.0/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.pom" + ], + "hash": "sha256-WdgiTXgRi2RAwdRsCRzwLOWSnQaTU0hZnxP9wrmoU88=" + } + }, + "org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.0": { + "kotlin-assignment-compiler-plugin-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.0/kotlin-assignment-compiler-plugin-embeddable-1.9.0.jar" + ], + "hash": "sha256-MBY6DUXnN9gHW0kI0PCv8DXvqGa+iFIvQ37Jbg43KZQ=" + }, + "kotlin-assignment-compiler-plugin-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.0/kotlin-assignment-compiler-plugin-embeddable-1.9.0.pom" + ], + "hash": "sha256-HDfsoLIO1JYF6lVsonWq8eyZUaKZge4TNxZYP2pD4J8=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/dependency/classifier.groovy.json b/fixtures/golden/dependency/classifier.groovy.json new file mode 100644 index 0000000..c4ee874 --- /dev/null +++ b/fixtures/golden/dependency/classifier.groovy.json @@ -0,0 +1,16 @@ +{ + "com.badlogicgames.gdx:gdx-platform:1.9.9": { + "gdx-platform-1.9.9-natives-desktop.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" + ], + "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" + }, + "gdx-platform-1.9.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" + ], + "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/dependency/classifier.kotlin.json b/fixtures/golden/dependency/classifier.kotlin.json new file mode 100644 index 0000000..c4ee874 --- /dev/null +++ b/fixtures/golden/dependency/classifier.kotlin.json @@ -0,0 +1,16 @@ +{ + "com.badlogicgames.gdx:gdx-platform:1.9.9": { + "gdx-platform-1.9.9-natives-desktop.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" + ], + "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" + }, + "gdx-platform-1.9.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" + ], + "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/dependency/maven-bom.kotlin.json b/fixtures/golden/dependency/maven-bom.kotlin.json new file mode 100644 index 0000000..9521858 --- /dev/null +++ b/fixtures/golden/dependency/maven-bom.kotlin.json @@ -0,0 +1,38 @@ +{ + "io.micrometer:micrometer-bom:1.5.1": { + "micrometer-bom-1.5.1.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom" + ], + "hash": "sha256-K/qF6ds8ck5sWvelJBYk+w+K04oQpT/4BtY57WVLRUI=" + } + }, + "io.micrometer:micrometer-core:1.5.1": { + "micrometer-core-1.5.1.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar" + ], + "hash": "sha256-DtgVYBDVGDBWMwSfeKC6O+fwqd+N2q4eTizJgQ1wfI8=" + }, + "micrometer-core-1.5.1.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom" + ], + "hash": "sha256-Cb4KaUHaOvdOz7VpDax6kJKuT2KWY5Ci73foX2xl6xw=" + } + }, + "org.hdrhistogram:HdrHistogram:2.1.12": { + "HdrHistogram-2.1.12.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar" + ], + "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" + }, + "HdrHistogram-2.1.12.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom" + ], + "hash": "sha256-f7PnkMFU0bXiMXC7jL9/cO8ICa8XIp8dywENd5llEIA=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot-dynamic.groovy.json b/fixtures/golden/dependency/snapshot-dynamic.groovy.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/fixtures/golden/dependency/snapshot-dynamic.groovy.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot-redirect.groovy.json b/fixtures/golden/dependency/snapshot-redirect.groovy.json new file mode 100644 index 0000000..cf94179 --- /dev/null +++ b/fixtures/golden/dependency/snapshot-redirect.groovy.json @@ -0,0 +1,16 @@ +{ + "com.github.anuken:packr:-SNAPSHOT:packr-1.2-g034efe5-114": { + "packr--SNAPSHOT.pom": { + "urls": [ + "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.pom" + ], + "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" + }, + "packr--SNAPSHOT.jar": { + "urls": [ + "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.jar" + ], + "hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot.groovy.json b/fixtures/golden/dependency/snapshot.groovy.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/fixtures/golden/dependency/snapshot.groovy.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot.kotlin.json b/fixtures/golden/dependency/snapshot.kotlin.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/fixtures/golden/dependency/snapshot.kotlin.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/fixtures/golden/integration/settings-buildscript.groovy.json b/fixtures/golden/integration/settings-buildscript.groovy.json new file mode 100644 index 0000000..61a1815 --- /dev/null +++ b/fixtures/golden/integration/settings-buildscript.groovy.json @@ -0,0 +1,128 @@ +{ + "gradle.plugin.net.vivin:gradle-semantic-build-versioning:4.0.0": { + "gradle-semantic-build-versioning-4.0.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar" + ], + "hash": "sha256-UTjmfOjgGUN4ALk8n2+dD8vr763Jb7xOvAl1yZomHvg=" + }, + "gradle-semantic-build-versioning-4.0.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom" + ], + "hash": "sha256-TygodBYH7RAtletfGJ1JbHhA7UY6zqifHlGmBWdxTvc=" + } + }, + "org.eclipse.jgit:org.eclipse.jgit:4.8.0.201706111038-r": { + "org.eclipse.jgit-4.8.0.201706111038-r.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar" + ], + "hash": "sha256-SdkS6NXM4N0I3KPTkBiduGkqj34zY8274YJYFGIACro=" + }, + "org.eclipse.jgit-4.8.0.201706111038-r.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom" + ], + "hash": "sha256-pVap9a38avSbKhLnLcPNfkPbj9whbA81iFlyovWton0=" + } + }, + "com.jcraft:jsch:0.1.54": { + "jsch-0.1.54.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" + ], + "hash": "sha256-kusnOjMWdiR4/dT+A6DOGELFb0lsnBL+EjXbgEUOH9s=" + }, + "jsch-0.1.54.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom" + ], + "hash": "sha256-q49RIDm+f2riDhjnQ7Sp2KIJWElEMZF9pYrlqu+KNHg=" + } + }, + "com.googlecode.javaewah:JavaEWAH:1.1.6": { + "JavaEWAH-1.1.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" + ], + "hash": "sha256-941EoeOHfxznSLSoXfUXHl6Omlw8b2O7kAPbb4TM6VI=" + }, + "JavaEWAH-1.1.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom" + ], + "hash": "sha256-f0/5GbHuF783duBYo/IOYXPbI6XkTPLRB+x1cMGGq/A=" + } + }, + "org.apache.httpcomponents:httpclient:4.3.6": { + "httpclient-4.3.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" + ], + "hash": "sha256-eYONnq73PU+FLGOkgIMMOi1LWQ8Ks66BWkiUY+RxQAQ=" + }, + "httpclient-4.3.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom" + ], + "hash": "sha256-0CY09hMekUlhwCqoNnEeuscnBLJ+JsW9Iju62JsbZMM=" + } + }, + "org.apache.httpcomponents:httpcore:4.3.3": { + "httpcore-4.3.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" + ], + "hash": "sha256-UoXegK8WUcSJMTuRqfQMZaTNy2s73nFvzAKNFoaaWpM=" + }, + "httpcore-4.3.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom" + ], + "hash": "sha256-tCf3z2fHWk4/niEI01v0UwNXPBRex3j8rc/6zvF6EmQ=" + } + }, + "commons-logging:commons-logging:1.1.3": { + "commons-logging-1.1.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" + ], + "hash": "sha256-cJA/b8gumQjI2p8gRD9h2Q8IcKMSZCmR/oRioLk5F4Q=" + }, + "commons-logging-1.1.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom" + ], + "hash": "sha256-MlCsOsa9YO0GMfXNAzUDKymT1j5AWmrgVV0np+SGWEk=" + } + }, + "commons-codec:commons-codec:1.6": { + "commons-codec-1.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" + ], + "hash": "sha256-VLNOlBuOFBS9PkDXNu/TSBdy3CbbMpb2qkXOyfYgPYY=" + }, + "commons-codec-1.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom" + ], + "hash": "sha256-oG410//zprgT2UiU6/PkmPlUDIZMWzmueDkH46bHKIk=" + } + }, + "org.slf4j:slf4j-api:1.7.2": { + "slf4j-api-1.7.2.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" + ], + "hash": "sha256-O654m0ATM7Kh0WA7f6Vz4ZkIYoGRcHID9utwjN7iwFI=" + }, + "slf4j-api-1.7.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom" + ], + "hash": "sha256-LqynGv4KFRb0q9jp/5B4ONJo84yBw6VCzOjX87h8XUw=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/ivy/basic.kotlin.json b/fixtures/golden/ivy/basic.kotlin.json new file mode 100644 index 0000000..4e61434 --- /dev/null +++ b/fixtures/golden/ivy/basic.kotlin.json @@ -0,0 +1,30 @@ +{ + "org.opendof.core-java:dof-cipher-sms4:1.0": { + "dof-cipher-sms4-1.0.jar": { + "urls": [ + "https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/dof-cipher-sms4-1.0.jar" + ], + "hash": "sha256-/Joo51NA6nBPEwFuFcnDc10JQZDE8P3jF3P4gl0vpMA=" + }, + "ivy-1.0.xml": { + "urls": [ + "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" + ], + "hash": "sha256-rh+pQpXqPP/cmBD8slvwMrKlWCUb3JNzW3l58hd7oJ8=" + } + }, + "org.opendof.core-java:dof-oal:7.0.2": { + "dof-oal-7.0.2.jar": { + "urls": [ + "https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/dof-oal-7.0.2.jar" + ], + "hash": "sha256-u+FUhQGBA8MRl28mXMTSnZ2HY2ysPHq7h9lANmHBK40=" + }, + "ivy-7.0.2.xml": { + "urls": [ + "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml" + ], + "hash": "sha256-KZoUVyoDcfH/B/9V1SVqNiA/XIb3zlwoJkjb/jD+xig=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json new file mode 100644 index 0000000..58789dd --- /dev/null +++ b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json @@ -0,0 +1,494 @@ +{ + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.21": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" + ], + "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21": { + "kotlin-gradle-plugin-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" + ], + "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" + }, + "kotlin-gradle-plugin-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" + ], + "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.21": { + "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" + ], + "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" + } + }, + "org.jetbrains.kotlin:kotlin-native-utils:1.7.21": { + "kotlin-native-utils-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" + ], + "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" + }, + "kotlin-native-utils-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" + ], + "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" + } + }, + "org.jetbrains.kotlin:kotlin-util-io:1.7.21": { + "kotlin-util-io-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" + ], + "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" + }, + "kotlin-util-io-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" + ], + "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" + } + }, + "org.jetbrains.kotlin:kotlin-project-model:1.7.21": { + "kotlin-project-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" + ], + "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" + }, + "kotlin-project-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" + ], + "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core:1.7.21": { + "kotlin-tooling-core-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" + ], + "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" + }, + "kotlin-tooling-core-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" + ], + "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.7.21": { + "kotlin-gradle-plugin-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" + ], + "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" + }, + "kotlin-gradle-plugin-model-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" + ], + "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.7.21": { + "kotlin-gradle-plugin-idea-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" + ], + "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" + }, + "kotlin-gradle-plugin-idea-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" + ], + "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.7.21": { + "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" + ], + "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" + }, + "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" + ], + "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" + } + }, + "org.jetbrains.kotlin:kotlin-util-klib:1.7.21": { + "kotlin-util-klib-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" + ], + "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" + }, + "kotlin-util-klib-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" + ], + "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.7.21": { + "kotlin-klib-commonizer-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" + ], + "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" + }, + "kotlin-klib-commonizer-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" + ], + "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21": { + "kotlin-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" + }, + "kotlin-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.21": { + "kotlin-daemon-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" + ], + "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" + }, + "kotlin-daemon-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" + ], + "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" + } + }, + "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + }, + "net.java.dev.jna:jna:5.6.0": { + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" + } + }, + "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.21": { + "kotlin-annotation-processing-gradle-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" + ], + "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" + }, + "kotlin-annotation-processing-gradle-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" + ], + "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions:1.7.21": { + "kotlin-android-extensions-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" + ], + "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" + }, + "kotlin-android-extensions-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" + ], + "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner:1.7.21": { + "kotlin-compiler-runner-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" + ], + "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" + }, + "kotlin-compiler-runner-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" + ], + "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" + } + }, + "org.jetbrains.kotlin:kotlin-build-common:1.7.21": { + "kotlin-build-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" + ], + "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" + }, + "kotlin-build-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" + ], + "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client:1.7.21": { + "kotlin-daemon-client-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" + ], + "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" + }, + "kotlin-daemon-client-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" + ], + "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.7.21": { + "kotlin-scripting-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" + }, + "kotlin-scripting-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.7.21": { + "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" + ], + "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" + ], + "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common:1.7.21": { + "kotlin-scripting-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" + ], + "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" + }, + "kotlin-scripting-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" + ], + "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.21": { + "kotlin-scripting-jvm-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" + ], + "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" + }, + "kotlin-scripting-jvm-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" + ], + "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21": { + "kotlin-stdlib-jdk8-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" + ], + "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" + }, + "kotlin-stdlib-jdk8-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" + ], + "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.7.21": { + "kotlin-stdlib-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" + ], + "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" + }, + "kotlin-stdlib-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" + ], + "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.7.21": { + "kotlin-stdlib-common-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" + ], + "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" + }, + "kotlin-stdlib-common-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" + ], + "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21": { + "kotlin-stdlib-jdk7-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" + ], + "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" + }, + "kotlin-stdlib-jdk7-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" + ], + "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime:1.7.21": { + "kotlin-script-runtime-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" + ], + "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" + }, + "kotlin-script-runtime-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" + ], + "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.7.21": { + "kotlin-reflect-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" + ], + "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" + }, + "kotlin-reflect-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" + ], + "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.21": { + "kotlin-klib-commonizer-embeddable-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" + ], + "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" + }, + "kotlin-klib-commonizer-embeddable-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" + ], + "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json new file mode 100644 index 0000000..58789dd --- /dev/null +++ b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json @@ -0,0 +1,494 @@ +{ + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.21": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" + ], + "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21": { + "kotlin-gradle-plugin-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" + ], + "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" + }, + "kotlin-gradle-plugin-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" + ], + "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.21": { + "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" + ], + "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" + } + }, + "org.jetbrains.kotlin:kotlin-native-utils:1.7.21": { + "kotlin-native-utils-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" + ], + "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" + }, + "kotlin-native-utils-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" + ], + "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" + } + }, + "org.jetbrains.kotlin:kotlin-util-io:1.7.21": { + "kotlin-util-io-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" + ], + "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" + }, + "kotlin-util-io-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" + ], + "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" + } + }, + "org.jetbrains.kotlin:kotlin-project-model:1.7.21": { + "kotlin-project-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" + ], + "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" + }, + "kotlin-project-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" + ], + "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core:1.7.21": { + "kotlin-tooling-core-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" + ], + "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" + }, + "kotlin-tooling-core-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" + ], + "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.7.21": { + "kotlin-gradle-plugin-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" + ], + "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" + }, + "kotlin-gradle-plugin-model-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" + ], + "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.7.21": { + "kotlin-gradle-plugin-idea-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" + ], + "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" + }, + "kotlin-gradle-plugin-idea-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" + ], + "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.7.21": { + "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" + ], + "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" + }, + "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" + ], + "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" + } + }, + "org.jetbrains.kotlin:kotlin-util-klib:1.7.21": { + "kotlin-util-klib-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" + ], + "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" + }, + "kotlin-util-klib-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" + ], + "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.7.21": { + "kotlin-klib-commonizer-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" + ], + "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" + }, + "kotlin-klib-commonizer-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" + ], + "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21": { + "kotlin-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" + }, + "kotlin-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.21": { + "kotlin-daemon-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" + ], + "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" + }, + "kotlin-daemon-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" + ], + "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" + } + }, + "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + }, + "net.java.dev.jna:jna:5.6.0": { + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" + } + }, + "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.21": { + "kotlin-annotation-processing-gradle-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" + ], + "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" + }, + "kotlin-annotation-processing-gradle-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" + ], + "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions:1.7.21": { + "kotlin-android-extensions-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" + ], + "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" + }, + "kotlin-android-extensions-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" + ], + "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner:1.7.21": { + "kotlin-compiler-runner-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" + ], + "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" + }, + "kotlin-compiler-runner-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" + ], + "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" + } + }, + "org.jetbrains.kotlin:kotlin-build-common:1.7.21": { + "kotlin-build-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" + ], + "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" + }, + "kotlin-build-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" + ], + "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client:1.7.21": { + "kotlin-daemon-client-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" + ], + "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" + }, + "kotlin-daemon-client-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" + ], + "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.7.21": { + "kotlin-scripting-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" + }, + "kotlin-scripting-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.7.21": { + "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" + ], + "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" + ], + "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common:1.7.21": { + "kotlin-scripting-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" + ], + "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" + }, + "kotlin-scripting-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" + ], + "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.21": { + "kotlin-scripting-jvm-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" + ], + "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" + }, + "kotlin-scripting-jvm-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" + ], + "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21": { + "kotlin-stdlib-jdk8-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" + ], + "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" + }, + "kotlin-stdlib-jdk8-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" + ], + "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.7.21": { + "kotlin-stdlib-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" + ], + "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" + }, + "kotlin-stdlib-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" + ], + "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.7.21": { + "kotlin-stdlib-common-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" + ], + "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" + }, + "kotlin-stdlib-common-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" + ], + "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21": { + "kotlin-stdlib-jdk7-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" + ], + "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" + }, + "kotlin-stdlib-jdk7-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" + ], + "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime:1.7.21": { + "kotlin-script-runtime-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" + ], + "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" + }, + "kotlin-script-runtime-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" + ], + "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.7.21": { + "kotlin-reflect-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" + ], + "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" + }, + "kotlin-reflect-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" + ], + "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.21": { + "kotlin-klib-commonizer-embeddable-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" + ], + "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" + }, + "kotlin-klib-commonizer-embeddable-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" + ], + "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/s3/maven-snapshot.groovy.json b/fixtures/golden/s3/maven-snapshot.groovy.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/fixtures/golden/s3/maven-snapshot.groovy.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/fixtures/golden/s3/maven-snapshot.kotlin.json b/fixtures/golden/s3/maven-snapshot.kotlin.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/fixtures/golden/s3/maven-snapshot.kotlin.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/fixtures/golden/s3/maven.groovy.json b/fixtures/golden/s3/maven.groovy.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/fixtures/golden/s3/maven.groovy.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/fixtures/golden/s3/maven.kotlin.json b/fixtures/golden/s3/maven.kotlin.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/fixtures/golden/s3/maven.kotlin.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/fixtures/golden/settings/buildscript.groovy.json b/fixtures/golden/settings/buildscript.groovy.json new file mode 100644 index 0000000..09eb001 --- /dev/null +++ b/fixtures/golden/settings/buildscript.groovy.json @@ -0,0 +1,16 @@ +{ + "org.apache:test:1.0.0": { + "test-1.0.0.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "test-1.0.0.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" + ], + "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/settings/dependency-resolution-management.kotlin.json b/fixtures/golden/settings/dependency-resolution-management.kotlin.json new file mode 100644 index 0000000..09eb001 --- /dev/null +++ b/fixtures/golden/settings/dependency-resolution-management.kotlin.json @@ -0,0 +1,16 @@ +{ + "org.apache:test:1.0.0": { + "test-1.0.0.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "test-1.0.0.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" + ], + "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/subprojects/multi-module.groovy.json b/fixtures/golden/subprojects/multi-module.groovy.json new file mode 100644 index 0000000..1503a9e --- /dev/null +++ b/fixtures/golden/subprojects/multi-module.groovy.json @@ -0,0 +1,114 @@ +{ + "junit:junit:4.12": { + "junit-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" + ], + "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" + }, + "junit-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" + ], + "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" + } + }, + "org.hamcrest:hamcrest-core:1.3": { + "hamcrest-core-1.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" + ], + "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" + }, + "hamcrest-core-1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" + ], + "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" + } + }, + "com.squareup.okio:okio:2.2.2": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "com.squareup.moshi:moshi:1.8.0": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + } + }, + "com.squareup.okio:okio:1.16.0": { + "okio-1.16.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" + ], + "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" + }, + "okio-1.16.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" + ], + "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" + } + } +} \ No newline at end of file diff --git a/fixtures/golden/subprojects/multi-module.kotlin.json b/fixtures/golden/subprojects/multi-module.kotlin.json new file mode 100644 index 0000000..1503a9e --- /dev/null +++ b/fixtures/golden/subprojects/multi-module.kotlin.json @@ -0,0 +1,114 @@ +{ + "junit:junit:4.12": { + "junit-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" + ], + "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" + }, + "junit-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" + ], + "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" + } + }, + "org.hamcrest:hamcrest-core:1.3": { + "hamcrest-core-1.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" + ], + "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" + }, + "hamcrest-core-1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" + ], + "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" + } + }, + "com.squareup.okio:okio:2.2.2": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "com.squareup.moshi:moshi:1.8.0": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + } + }, + "com.squareup.okio:okio:1.16.0": { + "okio-1.16.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" + ], + "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" + }, + "okio-1.16.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" + ], + "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" + } + } +} \ No newline at end of file diff --git a/fixtures/ivy/basic/kotlin/build.gradle.kts b/fixtures/ivy/basic/kotlin/build.gradle.kts index 871283a..e3f4b8a 100644 --- a/fixtures/ivy/basic/kotlin/build.gradle.kts +++ b/fixtures/ivy/basic/kotlin/build.gradle.kts @@ -5,10 +5,10 @@ plugins { repositories { ivy { url = uri("https://asset.opendof.org") - layout("pattern") { - this as IvyPatternRepositoryLayout + patternLayout { ivy("ivy2/[organisation]/[module]/[revision]/ivy(.[platform]).xml") artifact("artifact/[organisation]/[module]/[revision](/[platform])(/[type]s)/[artifact]-[revision](-[classifier]).[ext]") + } } } @@ -17,4 +17,4 @@ dependencies { dependencies { implementation("org.opendof.core-java:dof-cipher-sms4:1.0") } -} \ No newline at end of file +} diff --git a/fixtures/ivy/basic/kotlin/settings.gradle.kts b/fixtures/ivy/basic/kotlin/settings.gradle.kts new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/plugin/resolves-from-default-repo/groovy/build.gradle b/fixtures/plugin/resolves-from-default-repo/groovy/build.gradle index 029a04c..45976dc 100644 --- a/fixtures/plugin/resolves-from-default-repo/groovy/build.gradle +++ b/fixtures/plugin/resolves-from-default-repo/groovy/build.gradle @@ -1,7 +1,7 @@ plugins { - id "org.jetbrains.kotlin.jvm" version "1.3.50" + id "org.jetbrains.kotlin.jvm" version "1.7.21" } repositories { - jcenter() + mavenCentral() } diff --git a/fixtures/plugin/resolves-from-default-repo/groovy/settings.gradle b/fixtures/plugin/resolves-from-default-repo/groovy/settings.gradle new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/plugin/resolves-from-default-repo/kotlin/build.gradle.kts b/fixtures/plugin/resolves-from-default-repo/kotlin/build.gradle.kts index b4bfb93..864d671 100644 --- a/fixtures/plugin/resolves-from-default-repo/kotlin/build.gradle.kts +++ b/fixtures/plugin/resolves-from-default-repo/kotlin/build.gradle.kts @@ -1,7 +1,8 @@ + plugins { - kotlin("jvm") version "1.3.50" + kotlin("jvm") version "1.7.21" } repositories { - jcenter() + mavenCentral() } diff --git a/fixtures/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts b/fixtures/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/s3/maven-snapshot/kotlin/build.gradle.kts b/fixtures/s3/maven-snapshot/kotlin/build.gradle.kts index 5eb0cbe..e28300a 100644 --- a/fixtures/s3/maven-snapshot/kotlin/build.gradle.kts +++ b/fixtures/s3/maven-snapshot/kotlin/build.gradle.kts @@ -1,3 +1,4 @@ + plugins { java } @@ -14,4 +15,4 @@ repositories { dependencies { implementation("org.apache:test-SNAPSHOT1:2.0.0-SNAPSHOT") -} \ No newline at end of file +} diff --git a/fixtures/s3/maven/kotlin/build.gradle.kts b/fixtures/s3/maven/kotlin/build.gradle.kts index 9802565..bc21a60 100644 --- a/fixtures/s3/maven/kotlin/build.gradle.kts +++ b/fixtures/s3/maven/kotlin/build.gradle.kts @@ -14,4 +14,4 @@ repositories { dependencies { implementation("org.apache:test:1.0.0") -} \ No newline at end of file +} diff --git a/fixtures/settings/buildscript/groovy/settings.gradle b/fixtures/settings/buildscript/groovy/settings.gradle index 972356a..e4b1866 100644 --- a/fixtures/settings/buildscript/groovy/settings.gradle +++ b/fixtures/settings/buildscript/groovy/settings.gradle @@ -1,7 +1,7 @@ buildscript { repositories { maven { - url 'http://localhost:9999/' + url System.getProperty("org.nixos.gradle2nix.m2") } } dependencies { diff --git a/fixtures/settings/dependency-resolution-management/kotlin/build.gradle.kts b/fixtures/settings/dependency-resolution-management/kotlin/build.gradle.kts index 393d521..8ae3037 100644 --- a/fixtures/settings/dependency-resolution-management/kotlin/build.gradle.kts +++ b/fixtures/settings/dependency-resolution-management/kotlin/build.gradle.kts @@ -1,7 +1,8 @@ + plugins { java } dependencies { implementation("org.apache:test:1.0.0") -} \ No newline at end of file +} diff --git a/fixtures/settings/dependency-resolution-management/kotlin/settings.gradle.kts b/fixtures/settings/dependency-resolution-management/kotlin/settings.gradle.kts index 87bd9db..8292657 100644 --- a/fixtures/settings/dependency-resolution-management/kotlin/settings.gradle.kts +++ b/fixtures/settings/dependency-resolution-management/kotlin/settings.gradle.kts @@ -1,6 +1,6 @@ dependencyResolutionManagement { repositories { - maven { url = uri("http://localhost:9999") } + maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } } repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) -} \ No newline at end of file +} diff --git a/fixtures/subprojects/dependent-subprojects/groovy/build.gradle b/fixtures/subprojects/dependent-subprojects/groovy/build.gradle deleted file mode 100644 index f924346..0000000 --- a/fixtures/subprojects/dependent-subprojects/groovy/build.gradle +++ /dev/null @@ -1,15 +0,0 @@ -subprojects { - apply plugin: 'java' -} - -project(':child-a') { - dependencies { - implementation project(':child-b') - } -} - -project(':child-b') { - dependencies { - implementation project(':child-c') - } -} \ No newline at end of file diff --git a/fixtures/subprojects/dependent-subprojects/groovy/settings.gradle b/fixtures/subprojects/dependent-subprojects/groovy/settings.gradle deleted file mode 100644 index e7cf411..0000000 --- a/fixtures/subprojects/dependent-subprojects/groovy/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include ':child-a', ':child-b', ':child-c', ':child-d' \ No newline at end of file diff --git a/fixtures/subprojects/multi-module/groovy/build.gradle b/fixtures/subprojects/multi-module/groovy/build.gradle index 91d2f34..30ab58d 100644 --- a/fixtures/subprojects/multi-module/groovy/build.gradle +++ b/fixtures/subprojects/multi-module/groovy/build.gradle @@ -4,10 +4,10 @@ plugins { allprojects { repositories { - jcenter() + mavenCentral() } } dependencies { testImplementation 'junit:junit:4.12' -} \ No newline at end of file +} diff --git a/fixtures/subprojects/multi-module/kotlin/build.gradle.kts b/fixtures/subprojects/multi-module/kotlin/build.gradle.kts index ba82c83..0611ab5 100644 --- a/fixtures/subprojects/multi-module/kotlin/build.gradle.kts +++ b/fixtures/subprojects/multi-module/kotlin/build.gradle.kts @@ -4,7 +4,7 @@ plugins { allprojects { repositories { - jcenter() + mavenCentral() } } diff --git a/fixtures/subprojects/multi-module/kotlin/child-a/build.gradle.kts b/fixtures/subprojects/multi-module/kotlin/child-a/build.gradle.kts index b98236a..16eb66b 100644 --- a/fixtures/subprojects/multi-module/kotlin/child-a/build.gradle.kts +++ b/fixtures/subprojects/multi-module/kotlin/child-a/build.gradle.kts @@ -1,3 +1,4 @@ + plugins { java } diff --git a/fixtures/subprojects/multi-module/kotlin/child-b/build.gradle.kts b/fixtures/subprojects/multi-module/kotlin/child-b/build.gradle.kts index 7b27bde..5468047 100644 --- a/fixtures/subprojects/multi-module/kotlin/child-b/build.gradle.kts +++ b/fixtures/subprojects/multi-module/kotlin/child-b/build.gradle.kts @@ -1,3 +1,4 @@ + plugins { java } diff --git a/gradle.properties b/gradle.properties index 527730c..db26ac0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,5 @@ org.gradle.jvmargs='-Dfile.encoding=UTF-8' +org.gradle.caching=true +org.gradle.configuration-cache=true VERSION=1.0.0-rc2 - -shadowVersion=6.1.0 -stutterVersion=0.6.0 \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..ffd526f --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,43 @@ +[versions] +gradle = "8.3" +kotlin = "1.9.0" # Current embedded Gradle kotlin version +ksp = "1.9.0-1.0.13" + +[libraries] +clikt = "com.github.ajalt:clikt:+" +gradle-dependencyGraph = "org.gradle:github-dependency-graph-gradle-plugin:+" +gradle-toolingApi = { module = "org.gradle:gradle-tooling-api", version.ref = "gradle" } +ivy = "org.apache.ivy:ivy:+" +javalin = "io.javalin:javalin:+" +junit-jupiter-api = "org.junit.jupiter:junit-jupiter-api:+" +junit-jupiter-engine = "org.junit.jupiter:junit-jupiter-engine:+" +junit-jupiter-params = "org.junit.jupiter:junit-jupiter-params:+" +junit-platformLauncher = "org.junit.platform:junit-platform-launcher:+" +kotest-runner = "io.kotest:kotest-runner-junit5:+" +kotest-assertions = "io.kotest:kotest-assertions-core:+" +maven-repositoryMetadata = "org.apache.maven:maven-repository-metadata:+" +minutest = "dev.minutest:minutest:+" +moshi = "com.squareup.moshi:moshi:+" +moshi-adapters = "com.squareup.moshi:moshi-adapters:+" +moshi-kotlin = "com.squareup.moshi:moshi-kotlin:+" +moshi-kotlinCodegen = "com.squareup.moshi:moshi-kotlin-codegen:+" +okio = "com.squareup.okio:okio:+" +s3 = "com.amazonaws:aws-java-sdk-s3:+" +s3mock = "com.adobe.testing:s3mock-junit5:+" +semver = "net.swiftzer.semver:semver:+" +serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:+" +slf4j-api = "org.slf4j:slf4j-api:+" +slf4j-simple = "org.slf4j:slf4j-simple:+" +spek-dsl = "org.spekframework.spek2:spek-dsl-jvm:+" +spek-runner = "org.spekframework.spek2:spek-runner-junit5:+" +strikt = "io.strikt:strikt-core:+" + +[plugins] +pluginPublish = { id = "com.gradle.plugin-publish", version = "1.2.1" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +shadow = { id = "com.github.johnrengelman.shadow", version = "8.1.1" } +stutter = { id = "org.ajoberstar.stutter", version = "0.7.2" } + +[bundles] diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..943f0cbfa754578e88a3dae77fce6e3dea56edbf 100644 GIT binary patch delta 39316 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 delta 36846 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 CcabXq diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1c4bcc2..03bc515 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 4f906e0..65dcd68 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,101 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -106,80 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index ac1b06f..6689b85 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/ivy/build.gradle.kts b/ivy/build.gradle.kts deleted file mode 100644 index 1cc1168..0000000 --- a/ivy/build.gradle.kts +++ /dev/null @@ -1,24 +0,0 @@ -plugins { - kotlin("jvm") -} - -dependencies { - api("org.apache.ivy:ivy:latest.release") - api("com.amazonaws:aws-java-sdk-s3:latest.release") - - testImplementation("com.adobe.testing:s3mock-junit5:latest.release") - testImplementation("io.strikt:strikt-core:latest.release") - testImplementation("org.junit.jupiter:junit-jupiter-api:latest.release") - testImplementation("org.junit.jupiter:junit-jupiter-params:latest.release") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:latest.release") - testRuntimeOnly("org.junit.platform:junit-platform-launcher:latest.release") -} - -tasks { - test { - useJUnitPlatform { - includeEngines("junit-jupiter") - } - systemProperty("fixtures", "$rootDir/fixtures") - } -} \ No newline at end of file diff --git a/ivy/gradle.lockfile b/ivy/gradle.lockfile deleted file mode 100644 index 32ae72f..0000000 --- a/ivy/gradle.lockfile +++ /dev/null @@ -1,123 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -ch.qos.logback:logback-classic:1.2.3=testCompileClasspath,testRuntimeClasspath -ch.qos.logback:logback-core:1.2.3=testCompileClasspath,testRuntimeClasspath -com.adobe.testing:s3mock-junit5:2.1.28=testCompileClasspath,testRuntimeClasspath -com.adobe.testing:s3mock-testsupport-common:2.1.28=testCompileClasspath,testRuntimeClasspath -com.adobe.testing:s3mock:2.1.28=testCompileClasspath,testRuntimeClasspath -com.amazonaws:aws-java-sdk-core:1.11.946=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.amazonaws:aws-java-sdk-kms:1.11.946=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.amazonaws:aws-java-sdk-s3:1.11.946=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.amazonaws:jmespath-java:1.11.946=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.christophsturm:filepeek:0.1.2=testRuntimeClasspath -com.fasterxml.jackson.core:jackson-annotations:2.6.0=compileClasspath,runtimeClasspath -com.fasterxml.jackson.core:jackson-annotations:2.9.0=testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.core:jackson-core:2.6.7=compileClasspath,runtimeClasspath -com.fasterxml.jackson.core:jackson-core:2.9.9=testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.core:jackson-databind:2.6.7.4=compileClasspath,runtimeClasspath -com.fasterxml.jackson.core:jackson-databind:2.9.9.3=testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.6.7=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.9.9=testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9=testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9=testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.9=testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.9=testCompileClasspath,testRuntimeClasspath -com.fasterxml.woodstox:woodstox-core:5.1.0=testCompileClasspath,testRuntimeClasspath -com.fasterxml:classmate:1.3.4=testCompileClasspath,testRuntimeClasspath -com.typesafe.netty:netty-reactive-streams-http:2.0.0=testRuntimeClasspath -com.typesafe.netty:netty-reactive-streams:2.0.0=testRuntimeClasspath -commons-codec:commons-codec:1.11=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -commons-io:commons-io:2.6=testCompileClasspath,testRuntimeClasspath -commons-logging:commons-logging:1.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.netty:netty-buffer:4.1.33.Final=testRuntimeClasspath -io.netty:netty-codec-http2:4.1.33.Final=testRuntimeClasspath -io.netty:netty-codec-http:4.1.33.Final=testRuntimeClasspath -io.netty:netty-codec:4.1.33.Final=testRuntimeClasspath -io.netty:netty-common:4.1.33.Final=testRuntimeClasspath -io.netty:netty-handler:4.1.33.Final=testRuntimeClasspath -io.netty:netty-resolver:4.1.33.Final=testRuntimeClasspath -io.netty:netty-transport-native-epoll:4.1.33.Final=testRuntimeClasspath -io.netty:netty-transport-native-unix-common:4.1.33.Final=testRuntimeClasspath -io.netty:netty-transport:4.1.33.Final=testRuntimeClasspath -io.strikt:strikt-core:0.28.2=testCompileClasspath,testRuntimeClasspath -javax.annotation:javax.annotation-api:1.3.2=testCompileClasspath,testRuntimeClasspath -javax.servlet:javax.servlet-api:3.1.0=testCompileClasspath,testRuntimeClasspath -javax.validation:validation-api:2.0.1.Final=testCompileClasspath,testRuntimeClasspath -joda-time:joda-time:2.8.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.apache.commons:commons-lang3:3.8.1=testCompileClasspath,testRuntimeClasspath -org.apache.httpcomponents:httpclient:4.5.13=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.apache.httpcomponents:httpcore:4.4.13=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.apache.ivy:ivy:2.5.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.apache.logging.log4j:log4j-api:2.11.2=testCompileClasspath,testRuntimeClasspath -org.apache.logging.log4j:log4j-to-slf4j:2.11.2=testCompileClasspath,testRuntimeClasspath -org.apiguardian:apiguardian-api:1.1.0=testCompileClasspath,testRuntimeClasspath -org.codehaus.woodstox:stax2-api:4.1=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-continuation:9.4.19.v20190610=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-http:9.4.19.v20190610=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-io:9.4.19.v20190610=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-security:9.4.19.v20190610=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-server:9.4.19.v20190610=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-servlet:9.4.19.v20190610=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-servlets:9.4.19.v20190610=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-util:9.4.19.v20190610=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-webapp:9.4.19.v20190610=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-xml:9.4.19.v20190610=testCompileClasspath,testRuntimeClasspath -org.hibernate.validator:hibernate-validator:6.0.17.Final=testCompileClasspath,testRuntimeClasspath -org.jboss.logging:jboss-logging:3.3.2.Final=testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-reflect:1.4.21-2=testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.4.21-2=testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.21-2=testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.21-2=testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.4.20=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.4.21-2=testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.4.2=testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2=testRuntimeClasspath -org.jetbrains:annotations:13.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.junit.jupiter:junit-jupiter-api:5.7.0=testCompileClasspath,testRuntimeClasspath -org.junit.jupiter:junit-jupiter-engine:5.7.0=testRuntimeClasspath -org.junit.jupiter:junit-jupiter-params:5.7.0=testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-commons:1.7.0=testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-engine:1.7.0=testRuntimeClasspath -org.junit.platform:junit-platform-launcher:1.7.0=testRuntimeClasspath -org.junit:junit-bom:5.7.0=testCompileClasspath,testRuntimeClasspath -org.mortbay.jasper:apache-el:8.5.40=testCompileClasspath,testRuntimeClasspath -org.opentest4j:opentest4j:1.2.0=testCompileClasspath,testRuntimeClasspath -org.reactivestreams:reactive-streams:1.0.2=testCompileClasspath,testRuntimeClasspath -org.slf4j:jul-to-slf4j:1.7.28=testCompileClasspath,testRuntimeClasspath -org.slf4j:slf4j-api:1.7.28=testCompileClasspath,testRuntimeClasspath -org.springframework.boot:spring-boot-autoconfigure:2.1.9.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework.boot:spring-boot-starter-jetty:2.1.9.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework.boot:spring-boot-starter-json:2.1.9.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework.boot:spring-boot-starter-logging:2.1.9.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework.boot:spring-boot-starter-web:2.1.9.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework.boot:spring-boot-starter:2.1.9.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework.boot:spring-boot:2.1.9.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-aop:5.1.10.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-beans:5.1.10.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-context:5.1.10.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-core:5.1.10.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-expression:5.1.10.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-jcl:5.1.10.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-web:5.1.10.RELEASE=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-webmvc:5.1.10.RELEASE=testCompileClasspath,testRuntimeClasspath -org.yaml:snakeyaml:1.23=testRuntimeClasspath -software.amazon.awssdk:annotations:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:apache-client:2.7.19=testRuntimeClasspath -software.amazon.awssdk:auth:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:aws-core:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:aws-query-protocol:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:aws-xml-protocol:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:http-client-spi:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:netty-nio-client:2.7.19=testRuntimeClasspath -software.amazon.awssdk:profiles:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:protocol-core:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:regions:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:s3:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:sdk-core:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:url-connection-client:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:utils:2.7.19=testCompileClasspath,testRuntimeClasspath -software.amazon.eventstream:eventstream:1.0.1=testCompileClasspath,testRuntimeClasspath -software.amazon.ion:ion-java:1.0.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -empty= diff --git a/ivy/src/main/kotlin/org/nixos/gradle2nix/S3.kt b/ivy/src/main/kotlin/org/nixos/gradle2nix/S3.kt deleted file mode 100644 index 845100d..0000000 --- a/ivy/src/main/kotlin/org/nixos/gradle2nix/S3.kt +++ /dev/null @@ -1,294 +0,0 @@ -package org.nixos.gradle2nix - -import com.amazonaws.AmazonServiceException -import com.amazonaws.ClientConfiguration -import com.amazonaws.auth.AWSCredentials -import com.amazonaws.auth.AWSStaticCredentialsProvider -import com.amazonaws.client.builder.AwsClientBuilder -import com.amazonaws.regions.Region -import com.amazonaws.regions.RegionUtils -import com.amazonaws.regions.Regions -import com.amazonaws.services.s3.AmazonS3 -import com.amazonaws.services.s3.AmazonS3ClientBuilder -import com.amazonaws.services.s3.model.GetObjectRequest -import com.amazonaws.services.s3.model.ListObjectsRequest -import com.amazonaws.services.s3.model.ObjectMetadata -import com.amazonaws.services.s3.model.S3Object -import com.amazonaws.services.s3.model.S3ObjectInputStream -import com.amazonaws.util.AwsHostNameUtils -import org.apache.http.conn.ssl.NoopHostnameVerifier -import org.apache.http.conn.ssl.SSLConnectionSocketFactory -import org.apache.ivy.core.settings.TimeoutConstraint -import org.apache.ivy.plugins.repository.AbstractRepository -import org.apache.ivy.plugins.repository.RepositoryCopyProgressListener -import org.apache.ivy.plugins.repository.Resource -import org.apache.ivy.plugins.repository.TransferEvent -import org.apache.ivy.util.FileUtil -import java.io.File -import java.io.FileOutputStream -import java.io.IOException -import java.io.InputStream -import java.net.Socket -import java.net.URI -import java.security.KeyManagementException -import java.security.NoSuchAlgorithmException -import java.security.SecureRandom -import java.security.cert.X509Certificate -import javax.net.ssl.SSLContext -import javax.net.ssl.SSLEngine -import javax.net.ssl.TrustManager -import javax.net.ssl.X509ExtendedTrustManager - - -class S3Repository( - private val client: AmazonS3, - timeoutConstraint: TimeoutConstraint? = null -) : AbstractRepository(timeoutConstraint) { - - constructor( - credentials: AWSCredentials?, - endpoint: URI?, - timeoutConstraint: TimeoutConstraint? - ) : this( - AmazonS3ClientBuilder.standard().apply { - credentials?.let { setCredentials(AWSStaticCredentialsProvider(it)) } - - if (endpoint != null) { - setEndpointConfiguration( - AwsClientBuilder.EndpointConfiguration( - endpoint.toString(), - AwsHostNameUtils.parseRegion(endpoint.host, null) ?: Regions.US_EAST_1.name - ) - ) - isChunkedEncodingDisabled = true - isPathStyleAccessEnabled = true - } else { - region = Regions.US_EAST_1.name - } - - if (System.getProperty("org.nixos.gradle2nix.s3test") != null) { - clientConfiguration = ClientConfiguration().apply { - apacheHttpClientConfig.sslSocketFactory = SSLConnectionSocketFactory( - createBlindlyTrustingSslContext(), - NoopHostnameVerifier.INSTANCE - ) - } - } - }.build(), - timeoutConstraint - ) - - private val cache = mutableMapOf() - - private val progress = RepositoryCopyProgressListener(this) - - override fun getResource(source: String): Resource = - cache.getOrPut(source) { S3Resource(this, URI(source)) } - - override fun get(source: String, destination: File) { - fireTransferInitiated(getResource(source), TransferEvent.REQUEST_GET) - try { - val res = getResource(source) - val totalLength = res.contentLength - if (totalLength > 0) { - progress.totalLength = totalLength - } - destination.parentFile?.mkdirs() - FileUtil.copy( - res.openStream(), - FileOutputStream(destination), - progress, - true - ) - fireTransferCompleted(res.contentLength) - } catch (e: Exception) { - fireTransferError(e) - throw e - } finally { - progress.totalLength = null - } - } - - override fun list(parent: String): List = - S3Resource(this, URI(parent)) - .let { resource -> - generateSequence({ - try { - withClient(resource) { - listObjects( - ListObjectsRequest() - .withBucketName(resource.bucket) - .withPrefix(resource.key) - .withDelimiter("/") - ) - } - } catch (e: AmazonServiceException) { - throw S3RepositoryException(e) - } - }) { prev -> - if (!prev.isTruncated) { - null - } else { - try { - withClient(resource) { - listNextBatchOfObjects(prev) - } - } catch (e: AmazonServiceException) { - throw S3RepositoryException(e) - } - } - } - } - .flatMap { listing -> - listing.commonPrefixes.asSequence() + - listing.objectSummaries.asSequence().map { it.key } - } - .toList() - - internal fun withClient( - resource: S3Resource, - block: AmazonS3.() -> T - ): T = client.apply { - resource.region?.let { setRegion(it) } - }.block() -} - -class S3Resource( - private val repository: S3Repository, - private val url: URI - ) : Resource { - - private val source: Source by lazy { - REGIONAL_ENDPOINT_PATTERN.find(url.normalize().toString()) - ?.let { - val (bucket, region, _, key) = it.destructured - Source( - bucket = bucket, - key = key, - region = when (region) { - "external-1" -> Region.getRegion(Regions.US_EAST_1) - else -> RegionUtils.getRegion(region) - } - ) - } - ?: Source( - bucket = url.bucket(), - key = url.key(), - region = null - ) - } - - private val metadata: Metadata by lazy { - try { - getMetadata() - } catch (e: AmazonServiceException) { - null - }?.let { meta -> - Metadata( - exists = true, - contentLength = meta.contentLength, - lastModified = meta.lastModified.time - ) - } ?: Metadata( - exists = false, - contentLength = 0, - lastModified = 0 - ) - } - - val bucket: String get() = source.bucket - - val key: String get() = source.key - - val region: Region? get() = source.region - - override fun getName(): String = url.toString() - - override fun getLastModified(): Long = metadata.lastModified - - override fun getContentLength(): Long = metadata.contentLength - - override fun exists(): Boolean = metadata.exists - - override fun isLocal(): Boolean = false - - override fun clone(cloneName: String): Resource = S3Resource(repository, URI(cloneName)) - - override fun openStream(): InputStream = - try { getContent() } - catch (e: AmazonServiceException) { throw S3RepositoryException(e) } - ?: throw S3RepositoryException() - - private fun getMetadata(): ObjectMetadata? = - getObject(withContent = false)?.objectMetadata - - private fun getContent(): S3ObjectInputStream? = - getObject(withContent = true)?.objectContent - - private fun getObject(withContent: Boolean = true): S3Object? { - val request = GetObjectRequest(bucket, key) - if (!withContent) { - request.setRange(0, 0) - } - - return try { - repository.withClient(this) { getObject(request) } - } catch (e: AmazonServiceException) { - val errorCode = e.errorCode - if (errorCode != null && "NoSuchKey".compareTo(errorCode, ignoreCase = true) == 0) { - null - } else { - e.printStackTrace() - throw e - } - } - } - - private data class Source( - val bucket: String, - val key: String, - val region: Region? - ) - - private data class Metadata( - val exists: Boolean, - val contentLength: Long, - val lastModified: Long - ) - - companion object { - private val REGIONAL_ENDPOINT_PATTERN = - Regex("""^s3://(.+)?\.s3[.-]([a-z0-9-]+)\.amazonaws\.com(\.[a-z]+)?/(.+)""") - } -} - -class S3RepositoryException : RuntimeException { - constructor() : super() - - constructor(throwable: Throwable) : super(throwable) -} - -private fun URI.bucket(): String = normalize().host - -private fun URI.key(): String = normalize().path.removePrefix("/") - -// Used for testing. -private fun createBlindlyTrustingSslContext(): SSLContext? { - return try { - SSLContext.getInstance("TLS").apply { - init(null, arrayOf(object : X509ExtendedTrustManager() { - override fun getAcceptedIssuers(): Array? = null - override fun checkClientTrusted(arg0: Array?, arg1: String?, arg2: Socket?) {} - override fun checkClientTrusted(arg0: Array?, arg1: String?, arg2: SSLEngine?) {} - override fun checkClientTrusted(certs: Array?, authType: String?) {} - override fun checkServerTrusted(certs: Array?, authType: String?) {} - override fun checkServerTrusted(arg0: Array?, arg1: String?, arg2: Socket?) {} - override fun checkServerTrusted(arg0: Array?, arg1: String?, arg2: SSLEngine?) {} - }), SecureRandom()) - } - } catch (e: NoSuchAlgorithmException) { - throw RuntimeException("Unexpected exception", e) - } catch (e: KeyManagementException) { - throw RuntimeException("Unexpected exception", e) - } -} diff --git a/ivy/src/test/kotlin/org/nixos/gradle2nix/S3Test.kt b/ivy/src/test/kotlin/org/nixos/gradle2nix/S3Test.kt deleted file mode 100644 index df4a895..0000000 --- a/ivy/src/test/kotlin/org/nixos/gradle2nix/S3Test.kt +++ /dev/null @@ -1,113 +0,0 @@ -package org.nixos.gradle2nix - -import com.adobe.testing.s3mock.junit5.S3MockExtension -import com.amazonaws.services.s3.AmazonS3 -import org.apache.ivy.ant.IvyDependencyArtifact -import org.apache.ivy.core.module.descriptor.Artifact -import org.apache.ivy.core.module.descriptor.DefaultArtifact -import org.apache.ivy.core.module.id.ArtifactRevisionId -import org.apache.ivy.core.module.id.ModuleRevisionId -import org.apache.ivy.core.settings.IvySettings -import org.apache.ivy.plugins.repository.Resource -import org.apache.ivy.plugins.resolver.IBiblioResolver -import org.apache.ivy.plugins.resolver.URLResolver -import org.junit.jupiter.api.BeforeAll -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.TestInstance -import org.junit.jupiter.api.extension.RegisterExtension -import strikt.api.expectThat -import strikt.assertions.containsExactly -import strikt.assertions.isEmpty -import strikt.assertions.isEqualTo -import strikt.assertions.isFalse -import strikt.assertions.isNotEqualTo -import strikt.assertions.isNotNull -import strikt.assertions.isTrue -import java.io.File -import java.net.URI -import kotlin.io.path.ExperimentalPathApi -import kotlin.io.path.createTempDirectory - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class S3Test { - companion object { - const val bucket = "repositories" - - val fixtureRoot = File(System.getProperty("fixtures")).resolve(bucket) - - @JvmField - @RegisterExtension - val s3mock: S3MockExtension = S3MockExtension.builder().withInitialBuckets(bucket).build() - } - - @BeforeAll - fun populateBucket(client: AmazonS3) { - fixtureRoot.walkTopDown() - .filter { it.isFile } - .forEach { file -> - val key = file.toRelativeString(fixtureRoot) - client.putObject(bucket, key, file) - } - } - - @Test - fun listsContents(client: AmazonS3) { - val repository = S3Repository(client) - expectThat(repository.list("s3://repositories/m2/org/apache/test/1.0.0/")).containsExactly( - "m2/org/apache/test/1.0.0/test-1.0.0.jar", - "m2/org/apache/test/1.0.0/test-1.0.0.pom", - ) - } - - @Test - fun findsResourceMetadata(client: AmazonS3) { - val repository = S3Repository(client) - val resource: Resource = S3Resource(repository, URI("s3://repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom")) - expectThat(resource).and { - get { exists() }.isTrue() - get { contentLength }.isNotEqualTo(-1L) - get { lastModified }.isNotEqualTo(-1L) - } - } - - @Test - fun downloadsResource(client: AmazonS3) { - val repository = S3Repository(client) - val resource: Resource = S3Resource(repository, URI("s3://repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom")) - val source = fixtureRoot.resolve("m2/org/apache/test/1.0.0/test-1.0.0.pom").readText() - - expectThat(resource.openStream().bufferedReader().readText()).isEqualTo(source) - } - - @ExperimentalPathApi - @Test - fun locatesArtifact(client: AmazonS3) { - val resolver = IBiblioResolver().apply { - name = "s3" - root = "s3://repositories/m2/" - isM2compatible = true - settings = IvySettings().apply { - defaultInit() - setDefaultRepositoryCacheBasedir(createTempDirectory().toString()) - } - repository = S3Repository(client) - } - val origin = resolver.locate(DefaultArtifact( - ArtifactRevisionId.newInstance( - ModuleRevisionId.newInstance("org.apache", "test", "1.0.0"), - "test", - "jar", - "jar" - ), - null, - null, - false - )) - - expectThat(origin).isNotNull().and { - get { isExists }.isTrue() - get { isLocal }.isFalse() - get { location }.isEqualTo("s3://repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar") - } - } -} \ No newline at end of file diff --git a/model/build.gradle.kts b/model/build.gradle.kts index f8a0080..b12db2a 100644 --- a/model/build.gradle.kts +++ b/model/build.gradle.kts @@ -1,10 +1,22 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { - `embedded-kotlin` - kotlin("kapt") + id("org.jetbrains.kotlin.jvm") + id("org.jetbrains.kotlin.plugin.serialization") } dependencies { - api("com.squareup.moshi:moshi:latest.release") - kapt("com.squareup.moshi:moshi-kotlin-codegen:latest.release") - implementation("net.swiftzer.semver:semver:latest.release") + implementation(libs.serialization.json) + implementation(libs.semver) +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } } diff --git a/model/gradle.lockfile b/model/gradle.lockfile deleted file mode 100644 index 5d5d7bb..0000000 --- a/model/gradle.lockfile +++ /dev/null @@ -1,13 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.squareup.moshi:moshi:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.squareup.okio:okio:1.17.5=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -net.swiftzer.semver:semver:1.1.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-reflect:1.4.20=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.20=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.4.20=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.jetbrains:annotations:13.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -empty= diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt b/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt new file mode 100644 index 0000000..2f32f94 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt @@ -0,0 +1,6 @@ +package org.nixos.gradle2nix.dependencygraph.model + +import kotlinx.serialization.Serializable + +@Serializable +data class DependencyCoordinates(val group: String, val module: String, val version: String) diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/DependencySource.kt b/model/src/main/kotlin/org/nixos/gradle2nix/DependencySource.kt new file mode 100644 index 0000000..18b2767 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/DependencySource.kt @@ -0,0 +1,13 @@ +package org.nixos.gradle2nix.dependencygraph.model + +import kotlinx.serialization.Serializable + +/** + * The source of a dependency declaration, representing where the direct dependency is declared, + * or where the parent dependency is declared for transitive dependencies. + * In most cases, this will be the project component that declares the dependency, + * but may also be a Version Catalog or the build as a whole. + * We attempt to map this to an actual source file location when building a dependency report. + */ +@Serializable +data class DependencySource(val id: String, val path: String) diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/Impl.kt b/model/src/main/kotlin/org/nixos/gradle2nix/Impl.kt deleted file mode 100644 index c4e4d17..0000000 --- a/model/src/main/kotlin/org/nixos/gradle2nix/Impl.kt +++ /dev/null @@ -1,139 +0,0 @@ -package org.nixos.gradle2nix - -import com.squareup.moshi.JsonClass -import net.swiftzer.semver.SemVer -import java.io.Serializable -import java.lang.IllegalArgumentException - -@JsonClass(generateAdapter = true) -data class DefaultBuild( - override val gradle: DefaultGradle, - override val settingsDependencies: List, - override val pluginDependencies: List, - override val rootProject: DefaultProject, - override val includedBuilds: List -) : Build, Serializable { - constructor(model: Build) : this( - DefaultGradle(model.gradle), - model.settingsDependencies.map(::DefaultArtifact), - model.pluginDependencies.map(::DefaultArtifact), - DefaultProject(model.rootProject), - model.includedBuilds.map(::DefaultIncludedBuild) - ) -} - -@JsonClass(generateAdapter = true) -data class DefaultIncludedBuild( - override val name: String, - override val projectDir: String -) : IncludedBuild, Serializable { - constructor(model: IncludedBuild) : this( - model.name, - model.projectDir - ) -} - -@JsonClass(generateAdapter = true) -data class DefaultGradle( - override val version: String, - override val type: String, - override val url: String, - override val sha256: String, - override val nativeVersion: String -) : Gradle, Serializable { - constructor(model: Gradle) : this( - model.version, - model.type, - model.url, - model.sha256, - model.nativeVersion - ) -} - -@JsonClass(generateAdapter = true) -data class DefaultProject( - override val name: String, - override val version: String, - override val path: String, - override val projectDir: String, - override val buildscriptDependencies: List, - override val projectDependencies: List, - override val children: List -) : Project, Serializable { - constructor(model: Project) : this( - model.name, - model.version, - model.path, - model.projectDir, - model.buildscriptDependencies.map(::DefaultArtifact), - model.projectDependencies.map(::DefaultArtifact), - model.children.map { DefaultProject(it) } - ) -} - -@JsonClass(generateAdapter = true) -data class DefaultArtifact( - override val id: DefaultArtifactIdentifier, - override val name: String, - override val path: String, - override val timestamp: String? = null, - override val build: Int? = null, - override val urls: List, - override val sha256: String -) : Artifact, Comparable, Serializable { - constructor(model: Artifact) : this( - DefaultArtifactIdentifier(model.id), - model.name, - model.path, - model.timestamp, - model.build, - model.urls, - model.sha256 - ) - - override fun toString() = id.toString() - override fun compareTo(other: DefaultArtifact): Int = id.compareTo(other.id) -} - -@JsonClass(generateAdapter = true) -data class DefaultArtifactIdentifier( - override val group: String, - override val name: String, - override val version: String, - override val type: String, - override val extension: String = type, - override val classifier: String? = null -) : ArtifactIdentifier, Comparable, Serializable { - constructor(model: ArtifactIdentifier) : this( - model.group, - model.name, - model.version, - model.type, - model.extension, - model.classifier - ) - - @delegate:Transient - private val semver: SemVer? by lazy { - try { - SemVer.parse(version) - } catch (_: IllegalArgumentException) { - null - } - } - - override fun compareTo(other: DefaultArtifactIdentifier): Int { - return group.compareTo(other.group).takeUnless { it == 0 } - ?: name.compareTo(other.name).takeUnless { it == 0 } - ?: other.semver?.let { semver?.compareTo(it) }?.takeUnless { it == 0 } - ?: type.compareTo(other.type).takeUnless { it == 0 } - ?: other.classifier?.let { classifier?.compareTo(it) }?.takeUnless { it == 0 } - ?: 0 - } - - override fun toString(): String = buildString { - append("$group:$name:$version") - if (classifier != null) append(":$classifier") - append("@$type") - } -} \ No newline at end of file diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/Model.kt b/model/src/main/kotlin/org/nixos/gradle2nix/Model.kt deleted file mode 100644 index 153c051..0000000 --- a/model/src/main/kotlin/org/nixos/gradle2nix/Model.kt +++ /dev/null @@ -1,51 +0,0 @@ -package org.nixos.gradle2nix - -interface Build { - val gradle: Gradle - val settingsDependencies: List - val pluginDependencies: List - val rootProject: Project - val includedBuilds: List -} - -interface IncludedBuild { - val name: String - val projectDir: String -} - -interface Gradle { - val version: String - val type: String - val url: String - val sha256: String - val nativeVersion: String -} - -interface Project { - val name: String - val version: String - val path: String - val projectDir: String - val buildscriptDependencies: List - val projectDependencies: List - val children: List -} - -interface Artifact { - val id: ArtifactIdentifier - val name: String - val path: String - val timestamp: String? - val build: Int? - val urls: List - val sha256: String -} - -interface ArtifactIdentifier { - val group: String - val name: String - val version: String - val type: String - val extension: String - val classifier: String? -} \ No newline at end of file diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/PluginParameters.kt b/model/src/main/kotlin/org/nixos/gradle2nix/PluginParameters.kt new file mode 100644 index 0000000..f98f083 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/PluginParameters.kt @@ -0,0 +1,7 @@ +package org.nixos.gradle2nix + +const val PARAM_INCLUDE_PROJECTS = "NIX_INCLUDE_PROJECTS" +const val PARAM_INCLUDE_CONFIGURATIONS = "NIX_INCLUDE_CONFIGURATIONS" +const val PARAM_REPORT_DIR = "NIX_REPORT_DIR" +const val RESOLVE_PROJECT_TASK = "resolveProjectDependencies" +const val RESOLVE_ALL_TASK = "resolveAllDependencies" diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/Repository.kt b/model/src/main/kotlin/org/nixos/gradle2nix/Repository.kt new file mode 100644 index 0000000..69659d3 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/Repository.kt @@ -0,0 +1,20 @@ +package org.nixos.gradle2nix.dependencygraph.model + +import kotlinx.serialization.Serializable + +@Serializable +data class Repository( + val id: String, + val type: Type, + val name: String, + val m2Compatible: Boolean, + val metadataSources: List, + val metadataResources: List, + val artifactResources: List, +) { + enum class Type { + MAVEN, + IVY, + FLAT_DIR + } +} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedConfiguration.kt b/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedConfiguration.kt new file mode 100644 index 0000000..3ff51b5 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedConfiguration.kt @@ -0,0 +1,19 @@ +package org.nixos.gradle2nix.dependencygraph.model + +import kotlinx.serialization.Serializable + +@Serializable +data class ResolvedConfiguration( + val rootSource: DependencySource, + val configurationName: String, + val repositories: List = emptyList(), + val allDependencies: MutableList = mutableListOf() +) { + fun addDependency(component: ResolvedDependency) { + allDependencies.add(component) + } + + fun hasDependency(componentId: String): Boolean { + return allDependencies.any { it.id == componentId } + } +} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt b/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt new file mode 100644 index 0000000..b450e25 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt @@ -0,0 +1,32 @@ +package org.nixos.gradle2nix.dependencygraph.model + +import kotlinx.serialization.Serializable + +// private const val DEFAULT_MAVEN_REPOSITORY_URL = "https://repo.maven.apache.org/maven2" + +@Serializable +data class ResolvedDependency( + val id: String, + val source: DependencySource, + val direct: Boolean, + val coordinates: DependencyCoordinates, + val repository: String?, + val dependencies: List +) +//{ +// fun packageUrl() = +// PackageURLBuilder +// .aPackageURL() +// .withType("maven") +// .withNamespace(coordinates.group.ifEmpty { coordinates.module }) // TODO: This is a sign of broken mapping from component -> PURL +// .withName(coordinates.module) +// .withVersion(coordinates.version) +// .also { +// if (repositoryUrl != null && repositoryUrl != DEFAULT_MAVEN_REPOSITORY_URL) { +// it.withQualifier("repository_url", repositoryUrl) +// } +// } +// .build() +// .toString() +// +//} diff --git a/plugin/.stutter/java11.lock b/plugin/.stutter/java11.lock deleted file mode 100644 index 9717484..0000000 --- a/plugin/.stutter/java11.lock +++ /dev/null @@ -1,5 +0,0 @@ -# DO NOT MODIFY: Generated by Stutter plugin. -5.0 -5.6.4 -6.0.1 -6.8.1 diff --git a/plugin/.stutter/java8.lock b/plugin/.stutter/java8.lock deleted file mode 100644 index db50dba..0000000 --- a/plugin/.stutter/java8.lock +++ /dev/null @@ -1,7 +0,0 @@ -# DO NOT MODIFY: Generated by Stutter plugin. -4.4.1 -4.10.3 -5.0 -5.6.4 -6.0.1 -6.8.1 diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index c59e544..915e72c 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -1,54 +1,31 @@ -buildscript { - configurations.classpath { - resolutionStrategy.activateDependencyLocking() - } -} +import com.github.jengelman.gradle.plugins.shadow.relocation.SimpleRelocator +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.utils.extendsFrom plugins { - `kotlin-dsl` + id("org.jetbrains.kotlin.jvm") + id("com.gradle.plugin-publish") id("com.github.johnrengelman.shadow") - id("org.ajoberstar.stutter") } -sourceSets { - test { - java.srcDir("src/test/kotlin") - } +dependencies { + compileOnly(kotlin("stdlib-jdk8")) + compileOnly(kotlin("reflect")) + implementation(project(":model")) + implementation(libs.serialization.json) } -dependencyLocking { - lockAllConfigurations() +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } -configurations { - compile { - dependencies.remove(project.dependencies.gradleApi()) +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) } } -dependencies { - compileOnly("org.gradle:gradle-tooling-api:${gradle.gradleVersion}") - implementation("org.apache.maven:maven-repository-metadata:latest.release") - implementation(project(":ivy")) - implementation(project(":model")) - shadow(gradleApi()) - - compatTestImplementation("com.adobe.testing:s3mock-junit5:latest.release") - compatTestImplementation("com.squareup.okio:okio:latest.release") - compatTestImplementation("dev.minutest:minutest:latest.release") - compatTestImplementation("io.javalin:javalin:latest.release") - compatTestImplementation("io.strikt:strikt-core:latest.release") - compatTestImplementation("org.junit.jupiter:junit-jupiter-api:latest.release") - compatTestImplementation("org.junit.jupiter:junit-jupiter-params:latest.release") - compatTestImplementation(embeddedKotlin("reflect")) - compatTestImplementation(embeddedKotlin("stdlib-jdk8")) - compatTestImplementation(embeddedKotlin("test-junit5")) - compatTestImplementation(gradleTestKit()) - compatTestImplementation(project(":model")) - compatTestRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:latest.release") - compatTestRuntimeOnly("org.junit.platform:junit-platform-launcher:latest.release") -} - gradlePlugin { plugins { register("gradle2nix") { @@ -60,35 +37,25 @@ gradlePlugin { } } -kotlinDslPluginOptions { - experimentalWarning.set(false) -} - -stutter { - isSparse = true - java(8) { - compatibleRange("4.4") - } - java(11) { - compatibleRange("5.0") - } -} - tasks { - pluginUnderTestMetadata { - pluginClasspath.setFrom(files(shadowJar)) - } - - withType { - useJUnitPlatform { - includeEngines("junit-jupiter") + jar { + manifest { + attributes["Implementation-Version"] = archiveVersion.get() + attributes["Implementation-Title"] = "Gradle2Nix Plugin" + attributes["Implementation-Vendor"] = "Tad Fisher" } + } - // Default logging config exposes a classpath conflict between - // the Gradle API and SFL4J. - // (Sprint Boot is used in S3Mock) - systemProperty("org.springframework.boot.logging.LoggingSystem", "org.springframework.boot.logging.java.JavaLoggingSystem") + shadowJar { + archiveClassifier.set("") + relocate("kotlin", "${project.group}.shadow.kotlin") + relocate("kotlinx.serialization", "${project.group}.shadow.serialization") + relocate("net.swiftzer.semver", "${project.group}.shadow.semver") + relocate("org.intellij", "${project.group}.shadow.intellij") + relocate("org.jetbrains", "${project.group}.shadow.jetbrains") + } - systemProperty("fixtures", "$rootDir/fixtures") + validatePlugins { + enableStricterValidation.set(true) } } diff --git a/plugin/buildscript-gradle.lockfile b/plugin/buildscript-gradle.lockfile deleted file mode 100644 index 99b963e..0000000 --- a/plugin/buildscript-gradle.lockfile +++ /dev/null @@ -1,36 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.gundy:semver4j:0.16.4=classpath -com.google.code.gson:gson:2.8.6=classpath -de.undercouch:gradle-download-task:4.0.2=classpath -org.antlr:antlr4-runtime:4.5.2-1=classpath -org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:1.4.9=classpath -org.gradle.kotlin:gradle-kotlin-dsl-plugins:1.4.9=classpath -org.jetbrains.intellij.deps:trove4j:1.0.20181211=classpath -org.jetbrains.kotlin:kotlin-android-extensions:1.4.20=classpath -org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.4.20=classpath -org.jetbrains.kotlin:kotlin-build-common:1.4.20=classpath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.20=classpath -org.jetbrains.kotlin:kotlin-compiler-runner:1.4.20=classpath -org.jetbrains.kotlin:kotlin-daemon-client:1.4.20=classpath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.4.20=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.4.20=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.4.20=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.20=classpath -org.jetbrains.kotlin:kotlin-reflect:1.4.20=classpath -org.jetbrains.kotlin:kotlin-sam-with-receiver:1.4.20=classpath -org.jetbrains.kotlin:kotlin-script-runtime:1.4.20=classpath -org.jetbrains.kotlin:kotlin-scripting-common:1.4.20=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.4.20=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.4.20=classpath -org.jetbrains.kotlin:kotlin-scripting-jvm:1.4.20=classpath -org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20=classpath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20=classpath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.20=classpath -org.jetbrains.kotlin:kotlin-stdlib:1.4.20=classpath -org.jetbrains.kotlin:kotlin-util-io:1.4.20=classpath -org.jetbrains.kotlin:kotlin-util-klib:1.4.20=classpath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7=classpath -org.jetbrains:annotations:13.0=classpath -empty= diff --git a/plugin/gradle.lockfile b/plugin/gradle.lockfile deleted file mode 100644 index d1cb2b7..0000000 --- a/plugin/gradle.lockfile +++ /dev/null @@ -1,170 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -ch.qos.logback:logback-classic:1.2.3=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -ch.qos.logback:logback-core:1.2.3=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.adobe.testing:s3mock-junit5:2.1.28=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.adobe.testing:s3mock-testsupport-common:2.1.28=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.adobe.testing:s3mock:2.1.28=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.amazonaws:aws-java-sdk-core:1.11.488=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.amazonaws:aws-java-sdk-core:1.11.946=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.amazonaws:aws-java-sdk-kms:1.11.488=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.amazonaws:aws-java-sdk-kms:1.11.946=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.amazonaws:aws-java-sdk-s3:1.11.488=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.amazonaws:aws-java-sdk-s3:1.11.946=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.amazonaws:jmespath-java:1.11.488=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.amazonaws:jmespath-java:1.11.946=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.christophsturm:filepeek:0.1.2=compatTestRuntimeClasspath -com.fasterxml.jackson.core:jackson-annotations:2.6.0=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.fasterxml.jackson.core:jackson-annotations:2.9.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.fasterxml.jackson.core:jackson-core:2.6.7=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.fasterxml.jackson.core:jackson-core:2.9.9=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.fasterxml.jackson.core:jackson-databind:2.6.7.4=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.fasterxml.jackson.core:jackson-databind:2.9.9.3=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.6.7=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.9.9=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.9=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.9=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.fasterxml.woodstox:woodstox-core:5.1.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.fasterxml:classmate:1.3.4=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.squareup.moshi:moshi:1.11.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.squareup.okio:okio-metadata:3.0.0-alpha.1=compatTestImplementationDependenciesMetadata -com.squareup.okio:okio:1.17.5=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.squareup.okio:okio:3.0.0-alpha.1=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -com.typesafe.netty:netty-reactive-streams-http:2.0.0=compatTestRuntimeClasspath -com.typesafe.netty:netty-reactive-streams:2.0.0=compatTestRuntimeClasspath -commons-codec:commons-codec:1.11=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -commons-io:commons-io:2.6=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -commons-logging:commons-logging:1.2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -dev.minutest:minutest:2.0.0-alpha=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -io.github.classgraph:classgraph:4.8.28=compatTestRuntimeClasspath -io.javalin:javalin:3.13.3=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -io.netty:netty-buffer:4.1.33.Final=compatTestRuntimeClasspath -io.netty:netty-codec-http2:4.1.33.Final=compatTestRuntimeClasspath -io.netty:netty-codec-http:4.1.33.Final=compatTestRuntimeClasspath -io.netty:netty-codec:4.1.33.Final=compatTestRuntimeClasspath -io.netty:netty-common:4.1.33.Final=compatTestRuntimeClasspath -io.netty:netty-handler:4.1.33.Final=compatTestRuntimeClasspath -io.netty:netty-resolver:4.1.33.Final=compatTestRuntimeClasspath -io.netty:netty-transport-native-epoll:4.1.33.Final=compatTestRuntimeClasspath -io.netty:netty-transport-native-unix-common:4.1.33.Final=compatTestRuntimeClasspath -io.netty:netty-transport:4.1.33.Final=compatTestRuntimeClasspath -io.strikt:strikt-core:0.28.2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -javax.annotation:javax.annotation-api:1.3.2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -javax.servlet:javax.servlet-api:3.1.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -javax.validation:validation-api:2.0.1.Final=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -joda-time:joda-time:2.8.1=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -net.swiftzer.semver:semver:1.1.1=compatTestRuntimeClasspath,default,runtimeClasspath,testRuntimeClasspath -org.apache.commons:commons-lang3:3.8.1=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.apache.httpcomponents:httpclient:4.5.13=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.apache.httpcomponents:httpclient:4.5.5=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata -org.apache.httpcomponents:httpclient:4.5.9=compatTestRuntimeClasspath -org.apache.httpcomponents:httpcore:4.4.11=compatTestRuntimeClasspath -org.apache.httpcomponents:httpcore:4.4.13=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.apache.httpcomponents:httpcore:4.4.9=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata -org.apache.ivy:ivy:2.5.0=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.apache.logging.log4j:log4j-api:2.11.2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.apache.logging.log4j:log4j-to-slf4j:2.11.2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.apache.maven:maven-repository-metadata:3.6.3=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.apiguardian:apiguardian-api:1.1.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata -org.codehaus.plexus:plexus-utils:3.2.1=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.codehaus.woodstox:stax2-api:4.1=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-api:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-client:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-common:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-server:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-servlet:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-client:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-continuation:9.4.19.v20190610=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-http:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-io:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-security:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-server:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-servlet:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-servlets:9.4.19.v20190610=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-util-ajax:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-util:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-webapp:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.eclipse.jetty:jetty-xml:9.4.35.v20201120=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.gradle:gradle-tooling-api:6.8.1=compileClasspath,compileOnly,compileOnlyDependenciesMetadata -org.hibernate.validator:hibernate-validator:6.0.17.Final=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.jboss.logging:jboss-logging:3.3.2.Final=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.jetbrains.intellij.deps:trove4j:1.0.20181211=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.20=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.4.20=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.4.20=kotlinCompilerPluginClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.4.20=kotlinCompilerPluginClasspath -org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.4.20=kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-reflect:1.4.20=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compileClasspath,compileOnly,compileOnlyDependenciesMetadata,embeddedKotlin,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-reflect:1.4.21-2=compatTestRuntimeClasspath -org.jetbrains.kotlin:kotlin-sam-with-receiver:1.4.20=kotlinCompilerPluginClasspath -org.jetbrains.kotlin:kotlin-script-runtime:1.4.20=kotlinCompilerClasspath,kotlinCompilerPluginClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-scripting-common:1.4.20=kotlinCompilerPluginClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.4.20=kotlinCompilerPluginClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.4.20=kotlinCompilerPluginClasspath -org.jetbrains.kotlin:kotlin-scripting-jvm:1.4.20=kotlinCompilerPluginClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20=compileClasspath,compileOnly,compileOnlyDependenciesMetadata,default,embeddedKotlin,implementationDependenciesMetadata,kotlinCompilerClasspath,kotlinCompilerPluginClasspath,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.4.21-2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20=compileClasspath,compileOnly,compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.21-2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.20=compileClasspath,compileOnly,compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.21-2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.4.20=compileClasspath,compileOnly,compileOnlyDependenciesMetadata,default,embeddedKotlin,implementationDependenciesMetadata,kotlinCompilerClasspath,kotlinCompilerPluginClasspath,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.4.21-2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.jetbrains.kotlin:kotlin-test-annotations-common:1.4.20=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.jetbrains.kotlin:kotlin-test-common:1.4.20=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.jetbrains.kotlin:kotlin-test-junit5:1.4.20=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.jetbrains.kotlin:kotlin-test:1.4.20=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.4.2=compatTestRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7=kotlinCompilerPluginClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2=compatTestRuntimeClasspath -org.jetbrains:annotations:13.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,compileOnly,compileOnlyDependenciesMetadata,default,embeddedKotlin,implementationDependenciesMetadata,kotlinCompilerClasspath,kotlinCompilerPluginClasspath,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.junit.jupiter:junit-jupiter-api:5.7.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata -org.junit.jupiter:junit-jupiter-engine:5.7.0=compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata -org.junit.jupiter:junit-jupiter-params:5.7.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.junit.platform:junit-platform-commons:1.7.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata -org.junit.platform:junit-platform-engine:1.7.0=compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata -org.junit.platform:junit-platform-launcher:1.7.0=compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata -org.junit:junit-bom:5.7.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata -org.mortbay.jasper:apache-el:8.5.40=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.opentest4j:opentest4j:1.2.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata -org.reactivestreams:reactive-streams:1.0.2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.slf4j:jul-to-slf4j:1.7.28=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.slf4j:slf4j-api:1.7.28=compileClasspath,compileOnly,compileOnlyDependenciesMetadata -org.slf4j:slf4j-api:1.7.30=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework.boot:spring-boot-autoconfigure:2.1.9.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework.boot:spring-boot-starter-jetty:2.1.9.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework.boot:spring-boot-starter-json:2.1.9.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework.boot:spring-boot-starter-logging:2.1.9.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework.boot:spring-boot-starter-web:2.1.9.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework.boot:spring-boot-starter:2.1.9.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework.boot:spring-boot:2.1.9.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework:spring-aop:5.1.10.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework:spring-beans:5.1.10.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework:spring-context:5.1.10.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework:spring-core:5.1.10.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework:spring-expression:5.1.10.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework:spring-jcl:5.1.10.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework:spring-web:5.1.10.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.springframework:spring-webmvc:5.1.10.RELEASE=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -org.yaml:snakeyaml:1.23=compatTestRuntimeClasspath -software.amazon.awssdk:annotations:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:apache-client:2.7.19=compatTestRuntimeClasspath -software.amazon.awssdk:auth:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:aws-core:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:aws-query-protocol:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:aws-xml-protocol:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:http-client-spi:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:netty-nio-client:2.7.19=compatTestRuntimeClasspath -software.amazon.awssdk:profiles:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:protocol-core:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:regions:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:s3:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:sdk-core:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:url-connection-client:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.awssdk:utils:2.7.19=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.eventstream:eventstream:1.0.1=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath -software.amazon.ion:ion-java:1.0.2=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -empty=annotationProcessor,apiDependenciesMetadata,archives,compatTestAnnotationProcessor,compatTestApiDependenciesMetadata,compatTestCompile,compatTestCompileOnly,compatTestCompileOnlyDependenciesMetadata,compatTestKotlinScriptDef,compatTestKotlinScriptDefExtensions,compatTestRuntime,compile,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,runtime,runtimeOnlyDependenciesMetadata,shadow,testAnnotationProcessor,testApiDependenciesMetadata,testCompile,testCompileOnly,testCompileOnlyDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions,testRuntime,testRuntimeOnlyDependenciesMetadata diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/BasicTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/BasicTest.kt deleted file mode 100644 index 3d3e833..0000000 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/BasicTest.kt +++ /dev/null @@ -1,74 +0,0 @@ -package org.nixos.gradle2nix - -import dev.minutest.Tests -import dev.minutest.experimental.minus -import dev.minutest.junit.JUnit5Minutests -import dev.minutest.rootContext -import dev.minutest.test -import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.BINTRAY_JCENTER_URL -import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.MAVEN_CENTRAL_URL -import strikt.api.expectThat -import strikt.assertions.all -import strikt.assertions.containsExactly -import strikt.assertions.flatMap -import strikt.assertions.get -import strikt.assertions.hasSize -import strikt.assertions.isEqualTo -import strikt.assertions.map -import strikt.assertions.none -import strikt.assertions.startsWith - -class BasicTest : JUnit5Minutests { - @Tests - fun tests() = rootContext("basic tests") { - withFixture("basic/basic-java-project") { - test("builds basic java project") { - expectThat(build()) { - get("gradle version") { gradle.version }.isEqualTo(System.getProperty("compat.gradle.version")) - - get("all dependencies") { - pluginDependencies + - rootProject.buildscriptDependencies + - rootProject.projectDependencies - }.flatMap { it.urls }.none { startsWith("file:") } - - get("root project dependencies") { rootProject.projectDependencies }.and { - ids.containsExactly( - "com.squareup.moshi:moshi:1.8.0@jar", - "com.squareup.moshi:moshi:1.8.0@pom", - "com.squareup.moshi:moshi-parent:1.8.0@pom", - "com.squareup.okio:okio:2.2.2@jar", - "com.squareup.okio:okio:2.2.2@pom", - "org.jetbrains:annotations:13.0@jar", - "org.jetbrains:annotations:13.0@pom", - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@jar", - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@pom", - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@jar", - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@pom", - "org.sonatype.oss:oss-parent:7@pom" - ) - - map { it.urls }.all { - hasSize(2) - get(0).startsWith(BINTRAY_JCENTER_URL) - get(1).startsWith(MAVEN_CENTRAL_URL) - } - } - } - } - } - - withFixture("basic/basic-kotlin-project") { - GRADLE_MIN("4.9") - test("excludes embedded kotlin repo") { - - expectThat(build()) { - get("all dependencies") { - pluginDependencies + - rootProject.buildscriptDependencies + - rootProject.projectDependencies - }.flatMap { it.urls }.all { not { startsWith("file:") } } - } - } - } - } -} diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/DependencyTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/DependencyTest.kt deleted file mode 100644 index cd60aa7..0000000 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/DependencyTest.kt +++ /dev/null @@ -1,102 +0,0 @@ -package org.nixos.gradle2nix - -import dev.minutest.Tests -import dev.minutest.experimental.minus -import dev.minutest.junit.JUnit5Minutests -import dev.minutest.rootContext -import dev.minutest.test -import strikt.api.expectThat -import strikt.assertions.all -import strikt.assertions.containsExactly -import strikt.assertions.filter -import strikt.assertions.isEqualTo -import strikt.assertions.isNotNull -import strikt.assertions.isNull - -class DependencyTest : JUnit5Minutests { - @Tests - fun tests() = rootContext("dependency tests") { - - withRepository("m2") { - - withFixture("dependency/classifier") { - test("resolves dependency with classifier") { - expectThat(build()) { - get("root project dependencies") { rootProject.projectDependencies }.ids.containsExactly( - "com.badlogicgames.gdx:gdx-parent:1.9.9@pom", - "com.badlogicgames.gdx:gdx-platform:1.9.9:natives-desktop@jar", - "com.badlogicgames.gdx:gdx-platform:1.9.9@pom", - "org.sonatype.oss:oss-parent:5@pom" - ) - } - } - } - - withFixture("dependency/maven-bom") { - GRADLE_MIN("5.0") - test("resolves dependencies from maven bom platform") { - expectThat(build()) { - get("root project dependencies") { rootProject.projectDependencies } - .ids - .containsExactly( - "io.micrometer:micrometer-bom:1.5.1@pom", - "io.micrometer:micrometer-core:1.5.1@jar", - "io.micrometer:micrometer-core:1.5.1@pom", - "org.hdrhistogram:HdrHistogram:2.1.12@jar", - "org.hdrhistogram:HdrHistogram:2.1.12@pom" - ) - } - } - } - - withFixture("dependency/snapshot") { - test("resolves snapshot dependency") { - expectThat(build()) { - get("root project dependencies") { rootProject.projectDependencies } - .and { - ids.containsExactly( - "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT@jar", - "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT@pom" - ) - all { - get("timestamp") { timestamp }.isNull() - get("build") { build }.isNotNull() - } - } - } - } - } - - withFixture("dependency/snapshot-dynamic") { - test("resolves snapshot dependency with dynamic version") { - expectThat(build()) { - get("root project dependencies") { rootProject.projectDependencies } - .and { - ids.containsExactly( - "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT@jar", - "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT@pom" - ) - all { - get("timestamp") { timestamp }.isEqualTo("20070310.181613") - get("build") { build }.isEqualTo(3) - } - } - } - } - } - - withFixture("dependency/snapshot-redirect") { - test("resolves snapshot dependency with redirect") { - expectThat(build()) { - get("root project dependencies") { rootProject.projectDependencies } - .filter { it.id.name == "packr" } - .all { - get("id.version") { id.version }.isEqualTo("-SNAPSHOT") - get("timestamp") { timestamp }.isNotNull() - get("build") { build }.isNotNull() - } - } - } - } - } - } -} \ No newline at end of file diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/IvyTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/IvyTest.kt deleted file mode 100644 index 3269ce3..0000000 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/IvyTest.kt +++ /dev/null @@ -1,34 +0,0 @@ -package org.nixos.gradle2nix - -import dev.minutest.Tests -import dev.minutest.junit.JUnit5Minutests -import dev.minutest.rootContext -import dev.minutest.test -import strikt.api.expectThat -import strikt.assertions.all -import strikt.assertions.containsExactly -import strikt.assertions.map -import strikt.assertions.single -import strikt.assertions.startsWith - -class IvyTest : JUnit5Minutests { - @Tests - fun tests() = rootContext("ivy tests") { - withFixture("ivy/basic") { - test("resolves ivy dependencies") { - expectThat(build()) { - get("root project dependencies") { rootProject.projectDependencies }.and { - ids.containsExactly( - "org.opendof.core-java:dof-cipher-sms4:1.0@jar", - "org.opendof.core-java:dof-oal:7.0.2@jar" - ) - - map { it.urls }.all { - single().startsWith("https://asset.opendof.org/artifact") - } - } - } - } - } - } -} \ No newline at end of file diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/PluginTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/PluginTest.kt deleted file mode 100644 index 961f505..0000000 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/PluginTest.kt +++ /dev/null @@ -1,25 +0,0 @@ -package org.nixos.gradle2nix - -import dev.minutest.Tests -import dev.minutest.experimental.FOCUS -import dev.minutest.experimental.minus -import dev.minutest.junit.JUnit5Minutests -import dev.minutest.rootContext -import dev.minutest.test -import strikt.api.expectThat -import strikt.assertions.contains -import strikt.assertions.containsExactly - -class PluginTest : JUnit5Minutests { - @Tests - fun tests() = rootContext("plugin tests") { - withFixture("plugin/resolves-from-default-repo") { - test("resolves plugin from default repo") { - expectThat(build()) { - get("plugin dependencies") { pluginDependencies }.ids - .contains("org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.3.50@pom") - } - } - } - } -} \ No newline at end of file diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/S3Test.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/S3Test.kt deleted file mode 100644 index f72c79c..0000000 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/S3Test.kt +++ /dev/null @@ -1,52 +0,0 @@ -package org.nixos.gradle2nix - -import dev.minutest.Tests -import dev.minutest.junit.JUnit5Minutests -import dev.minutest.rootContext -import dev.minutest.test -import strikt.api.expectThat -import strikt.assertions.containsExactly -import strikt.assertions.flatMap -import strikt.assertions.map - -class S3Test : JUnit5Minutests { - @Tests - fun tests() = rootContext("s3 tests") { - withBucket("repositories") { - withFixture("s3/maven") { - - test("dependency from s3 maven repo") { - expectThat(build()) { - get("root project dependencies") { rootProject.projectDependencies }.and { - ids.containsExactly( - "org.apache:test:1.0.0@jar", - "org.apache:test:1.0.0@pom" - ) - flatMap { it.urls }.containsExactly( - "s3://repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar", - "s3://repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ) - } - } - } - } - - withFixture("s3/maven-snapshot") { - test("snapshot dependency from s3 maven repo") { - expectThat(build()) { - get("root project dependencies") { rootProject.projectDependencies }.and { - ids.containsExactly( - "org.apache:test-SNAPSHOT1:2.0.0-SNAPSHOT@jar", - "org.apache:test-SNAPSHOT1:2.0.0-SNAPSHOT@pom" - ) - flatMap { it.urls }.containsExactly( - "s3://repositories/m2/org/apache/test-SNAPSHOT1/2.0.0-SNAPSHOT/test-SNAPSHOT1-2.0.0-20070310.181613-3.jar", - "s3://repositories/m2/org/apache/test-SNAPSHOT1/2.0.0-SNAPSHOT/test-SNAPSHOT1-2.0.0-20070310.181613-3.pom" - ) - } - } - } - } - } - } -} \ No newline at end of file diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SettingsTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SettingsTest.kt deleted file mode 100644 index aaf089f..0000000 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SettingsTest.kt +++ /dev/null @@ -1,39 +0,0 @@ -package org.nixos.gradle2nix - -import dev.minutest.Tests -import dev.minutest.experimental.minus -import dev.minutest.junit.JUnit5Minutests -import dev.minutest.rootContext -import dev.minutest.test -import strikt.api.expectThat -import strikt.assertions.containsExactly - -class SettingsTest : JUnit5Minutests { - @Tests - fun tests() = rootContext("settings tests") { - withRepository("m2") { - - withFixture("settings/buildscript") { - test("resolves settings plugin in buildscript classpath") { - expectThat(build()) { - get("settings dependencies") { settingsDependencies }.ids.containsExactly( - "org.apache:test:1.0.0@jar", - "org.apache:test:1.0.0@pom" - ) - } - } - } - - withFixture("settings/dependency-resolution-management") { - GRADLE_MIN("6.8") - test("uses repositories from settings script") { - expectThat(build()) { - get("root project dependencies") { rootProject.projectDependencies }.ids.containsExactly( - "org.apache:test:1.0.0@jar", - "org.apache:test:1.0.0@pom" - ) - } - } - } - } - } -} \ No newline at end of file diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SubprojectsTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SubprojectsTest.kt deleted file mode 100644 index f0bed36..0000000 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SubprojectsTest.kt +++ /dev/null @@ -1,152 +0,0 @@ -package org.nixos.gradle2nix - -import dev.minutest.Tests -import dev.minutest.junit.JUnit5Minutests -import dev.minutest.rootContext -import dev.minutest.test -import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.BINTRAY_JCENTER_URL -import strikt.api.expectThat -import strikt.assertions.all -import strikt.assertions.containsExactly -import strikt.assertions.containsExactlyInAnyOrder -import strikt.assertions.get -import strikt.assertions.hasSize -import strikt.assertions.isEqualTo -import strikt.assertions.map -import strikt.assertions.single -import strikt.assertions.startsWith - -class SubprojectsTest : JUnit5Minutests { - @Tests - fun tests() = rootContext("subproject tests") { - withFixture("subprojects/multi-module") { - test("builds multi-module project") { - expectThat(build().rootProject) { - get("root project dependencies") { projectDependencies }.and { - ids.containsExactly( - "junit:junit:4.12@jar", - "junit:junit:4.12@pom", - "org.hamcrest:hamcrest-core:1.3@jar", - "org.hamcrest:hamcrest-core:1.3@pom", - "org.hamcrest:hamcrest-parent:1.3@pom" - ) - all { - get("urls") { urls }.single().startsWith(BINTRAY_JCENTER_URL) - } - } - - get("children") { children }.and { - hasSize(2) - - get(0).and { - get("name") { name }.isEqualTo("child-a") - get("projectDir") { projectDir }.isEqualTo("child-a") - - get("child-a project dependencies") { projectDependencies }.and { - ids.containsExactly( - "com.squareup.okio:okio:2.2.2@jar", - "com.squareup.okio:okio:2.2.2@pom", - "org.jetbrains:annotations:13.0@jar", - "org.jetbrains:annotations:13.0@pom", - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@jar", - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@pom", - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@jar", - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@pom" - ) - - all { - get("urls") { urls }.single().startsWith(BINTRAY_JCENTER_URL) - } - } - } - - get(1).and { - get("name") { name }.isEqualTo("child-b") - get("projectDir") { projectDir }.isEqualTo("child-b") - - get("child-b project dependencies") { projectDependencies }.and { - ids.containsExactly( - "com.squareup.moshi:moshi:1.8.0@jar", - "com.squareup.moshi:moshi:1.8.0@pom", - "com.squareup.moshi:moshi-parent:1.8.0@pom", - "com.squareup.okio:okio:1.16.0@jar", // compileClasspath - "com.squareup.okio:okio:1.16.0@pom", // compileClasspath - "com.squareup.okio:okio:2.2.2@jar", // runtimeClasspath - "com.squareup.okio:okio:2.2.2@pom", // runtimeClasspath - "com.squareup.okio:okio-parent:1.16.0@pom", // compileClasspath - "org.jetbrains:annotations:13.0@jar", - "org.jetbrains:annotations:13.0@pom", - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@jar", - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@pom", - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@jar", - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@pom", - "org.sonatype.oss:oss-parent:7@pom" - ) - - all { - get("urls") { urls }.single().startsWith(BINTRAY_JCENTER_URL) - } - } - } - } - } - } - - test("builds single subproject") { - expectThat(build(subprojects = listOf(":child-a")).rootProject) { - get("root project dependencies") { projectDependencies }.and { - ids.containsExactly( - "junit:junit:4.12@jar", - "junit:junit:4.12@pom", - "org.hamcrest:hamcrest-core:1.3@jar", - "org.hamcrest:hamcrest-core:1.3@pom", - "org.hamcrest:hamcrest-parent:1.3@pom" - ) - - all { - get("urls") { urls }.single().startsWith(BINTRAY_JCENTER_URL) - } - } - - get("children") { children }.single().and { - get("name") { name }.isEqualTo("child-a") - get("projectDir") { projectDir }.isEqualTo("child-a") - - get("child-a project dependencies") { projectDependencies }.and { - ids.containsExactly( - "com.squareup.okio:okio:2.2.2@jar", - "com.squareup.okio:okio:2.2.2@pom", - "org.jetbrains:annotations:13.0@jar", - "org.jetbrains:annotations:13.0@pom", - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@jar", - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@pom", - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@jar", - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@pom" - ) - - all { - get("urls") { urls }.single().startsWith(BINTRAY_JCENTER_URL) - } - } - } - } - } - } - - withFixture("subprojects/dependent-subprojects") { - test("includes dependent subprojects") { - expectThat(build(subprojects = listOf(":child-a"))) { - get("children") { rootProject.children } - .map { it.path } - .containsExactlyInAnyOrder(":child-a", ":child-b", ":child-c") - } - - expectThat(build(subprojects = listOf(":child-b"))) { - get("children") { rootProject.children } - .map { it.path } - .containsExactlyInAnyOrder(":child-b", ":child-c") - } - } - } - } -} diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/TestUtil.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/TestUtil.kt deleted file mode 100644 index 114658d..0000000 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/TestUtil.kt +++ /dev/null @@ -1,300 +0,0 @@ -package org.nixos.gradle2nix - -import com.adobe.testing.s3mock.S3MockApplication -import com.adobe.testing.s3mock.junit5.S3MockExtension -import com.adobe.testing.s3mock.testsupport.common.S3MockStarter -import com.squareup.moshi.Moshi -import dev.minutest.ContextBuilder -import dev.minutest.MinutestFixture -import dev.minutest.Node -import dev.minutest.TestContextBuilder -import dev.minutest.afterEach -import dev.minutest.beforeEach -import dev.minutest.experimental.SKIP -import dev.minutest.experimental.TransformingAnnotation -import dev.minutest.given -import dev.minutest.givenClosable -import dev.minutest.given_ -import io.javalin.Javalin -import io.javalin.http.staticfiles.Location -import okio.buffer -import okio.source -import org.gradle.internal.classpath.DefaultClassPath -import org.gradle.testkit.runner.GradleRunner -import org.gradle.testkit.runner.internal.PluginUnderTestMetadataReading -import org.gradle.util.GradleVersion -import org.junit.jupiter.api.Assumptions.assumeTrue -import strikt.api.Assertion -import strikt.assertions.map -import java.io.Closeable -import java.io.File -import java.io.StringWriter -import java.util.concurrent.atomic.AtomicBoolean - -private val moshi = Moshi.Builder().build() - -val fixtureRoot = File(System.getProperty("fixtures")) - -val gradleVersion = System.getProperty("compat.gradle.version") - ?.let(GradleVersion::version) - ?: GradleVersion.current() - -val GRADLE_4_5 = GradleVersion.version("4.5") - -fun GRADLE_MIN(version: String) = object : TransformingAnnotation() { - override fun transform(node: Node): Node = - if (gradleVersion < GradleVersion.version(version)) SKIP.transform(node) else node -} - -private fun File.initscript() = resolve("init.gradle").also { - it.writer().use { out -> - val classpath = DefaultClassPath.of(PluginUnderTestMetadataReading.readImplementationClasspath()) - .asFiles.joinToString { n -> "'$n'" } - out.append(""" - initscript { - dependencies { - classpath files($classpath) - } - } - - apply plugin: org.nixos.gradle2nix.Gradle2NixPlugin - - """.trimIndent()) - } -} - -fun File.buildKotlin( - script: String, - configurations: List = emptyList(), - subprojects: List = emptyList() -): DefaultBuild { - assumeTrue(gradleVersion >= GRADLE_4_5) - resolve("build.gradle.kts").writeText(script) - return build(configurations, subprojects) -} - -private fun File.build( - configurations: List, - subprojects: List, - extraArguments: List = emptyList() -): DefaultBuild { - val log = StringWriter() - - val result = GradleRunner.create() - .withGradleVersion(gradleVersion.version) - .withProjectDir(this) - .forwardStdOutput(log) - .forwardStdError(log) - .withArguments( - "nixModel", - "--init-script=${initscript()}", - "--stacktrace", - "-Porg.nixos.gradle2nix.configurations=${configurations.joinToString(",")}", - "-Porg.nixos.gradle2nix.subprojects=${subprojects.joinToString(",")}", - *(extraArguments.toTypedArray()) - ) - .runCatching { build() } - - result.onFailure { error -> - System.err.print(log) - throw error - } - - print(log) - - return resolve("build/nix/model.json").run { - println(readText()) - source().buffer().use { src -> - checkNotNull(moshi.adapter(DefaultBuild::class.java).fromJson(src)) - } - } -} - -val > Assertion.Builder.ids: Assertion.Builder> - get() = map { it.id.toString() } - -private fun File.parents() = generateSequence(parentFile) { it.parentFile } - -abstract class ArgumentsSupplier(private val parent: ArgumentsSupplier? = null) { - open val arguments: List = emptyList() - - val extraArguments: List get() = (parent?.extraArguments ?: emptyList()) + arguments -} - -@MinutestFixture -class RepositoryFixture( - private val server: Javalin, - parent: ArgumentsSupplier? = null -) : ArgumentsSupplier(parent), Closeable { - override fun close() { - server.stop() - } -} - -@MinutestFixture -class S3Fixture( - private val name: String, - parent: ArgumentsSupplier? = null -) : ArgumentsSupplier(parent), Closeable { - private val s3mock = S3Mock( - initialBuckets = listOf(name), - secureConnection = false - ) - - override val arguments: List get() = listOf( - "-Dorg.gradle.s3.endpoint=${s3mock.serviceEndpoint}", - "-Dorg.nixos.gradle2nix.s3test=true" - ) - - init { - s3mock.startServer() - - val s3root = fixtureRoot.resolve(name) - val s3client = s3mock.createS3Client() - require(s3root.exists() && s3root.isDirectory) { - "$name: S3 fixture not found: $s3root" - } - s3root.walkTopDown() - .filter { it.isFile } - .forEach { file -> - val key = file.toRelativeString(s3root) - s3client.putObject(name, key, file) - } - } - - override fun close() { - s3mock.stopServer() - } -} - -@MinutestFixture -class TestFixture( - val name: String, - val source: File, - parent: ArgumentsSupplier? = null -) : ArgumentsSupplier(parent), Closeable { - val dest: File - - init { - require(source.exists() && source.isDirectory) { - "$name: Test fixture not found: $source}" - } - dest = createTempDir(prefix = name, suffix = "") - } - - override fun close() { - dest.deleteRecursively() - } -} - -@MinutestFixture -data class ProjectFixture( - private val parent: TestFixture, - private val source: File -) : Closeable { - private val dest: File - - init { - require(source.exists() && source.isDirectory && parent.source in source.parents()) { - "${parent.name}: Test project not found: $source" - } - val rel = source.toRelativeString(parent.source) - dest = parent.dest.resolve(rel) - } - - fun copySource() { - source.copyRecursively(dest, true) - } - - fun build( - configurations: List = emptyList(), - subprojects: List = emptyList() - ) = dest.build(configurations, subprojects, parent.extraArguments) - - override fun close() { - dest.deleteRecursively() - } -} - -fun ContextBuilder<*>.withBucket( - name: String, - block: TestContextBuilder<*, S3Fixture>.() -> Unit -) = derivedContext("with s3 bucket: $name") { - given_ { parent -> - S3Fixture(name, parent as? ArgumentsSupplier) - } - - afterEach { it.close() } - - block() -} - -fun ContextBuilder<*>.withRepository( - name: String, - block: TestContextBuilder<*, RepositoryFixture>.() -> Unit -) = derivedContext("with repository: $name") { - given_ { parent -> - RepositoryFixture( - server = Javalin.create { config -> - config.addStaticFiles("${fixtureRoot}/repositories/$name", Location.EXTERNAL) - }.start(9999), - parent = parent as? ArgumentsSupplier - ) - } - - afterEach { it.close() } - - block() -} - -fun ContextBuilder<*>.withFixture( - name: String, - block: TestContextBuilder<*, ProjectFixture>.() -> Unit -) = derivedContext(name) { - - val projectRoot = fixtureRoot.resolve(name).also { - check(it.exists()) { "$name: project fixture not found: $it" } - } - - given_ { parent -> - TestFixture(name, projectRoot, parent as? ArgumentsSupplier) - } - - val testRoots = projectRoot.listFiles()!! - .filter { it.isDirectory } - .map { it.absoluteFile } - .toList() - - testRoots.forEach { testRoot -> - derivedContext(testRoot.name) { - given_ { parent -> ProjectFixture(parent, testRoot) } - beforeEach { copySource() } - afterEach { close() } - block() - } - } -} - -class S3Mock( - initialBuckets: List = emptyList(), - secureConnection: Boolean = true -) : S3MockStarter( - mapOf( - S3MockApplication.PROP_INITIAL_BUCKETS to initialBuckets.joinToString(","), - S3MockApplication.PROP_SECURE_CONNECTION to secureConnection - ) -) { - private val running = AtomicBoolean() - - fun startServer() { - if (running.compareAndSet(false, true)) { - start() - } - } - - fun stopServer() { - if (running.compareAndSet(true, false)) { - stop() - } - } -} \ No newline at end of file diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/WrapperTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/WrapperTest.kt deleted file mode 100644 index ad4a552..0000000 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/WrapperTest.kt +++ /dev/null @@ -1,27 +0,0 @@ -package org.nixos.gradle2nix - -import dev.minutest.Tests -import dev.minutest.given -import dev.minutest.junit.JUnit5Minutests -import dev.minutest.rootContext -import dev.minutest.test -import strikt.api.expectThat -import strikt.assertions.isEqualTo -import java.io.File - -class WrapperTest : JUnit5Minutests { - @Tests - fun tests() = rootContext("wrapper tests") { - given { createTempDir("gradle2nix") } - - test("resolves gradle wrapper version") { - expectThat(buildKotlin(""" - tasks.withType { - gradleVersion = "5.5.1" - } - """.trimIndent())) { - get("gradle version") { gradle.version }.isEqualTo("5.5.1") - } - } - } -} \ No newline at end of file diff --git a/plugin/src/main/java/org/nixos/gradle2nix/ApiHack.java b/plugin/src/main/java/org/nixos/gradle2nix/ApiHack.java deleted file mode 100644 index eb721d3..0000000 --- a/plugin/src/main/java/org/nixos/gradle2nix/ApiHack.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.nixos.gradle2nix; - -import org.gradle.api.artifacts.Dependency; -import org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency; - -import javax.annotation.Nullable; - -/** - * Workarounds for APIs improperly marked with @NonNullApi. - */ -interface ApiHack { - static Dependency defaultExternalModuleDependency(String group, String name, @Nullable String version) { - return new DefaultExternalModuleDependency(group, name, version); - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/ConfigurationResolver.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/ConfigurationResolver.kt deleted file mode 100644 index 039f894..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/ConfigurationResolver.kt +++ /dev/null @@ -1,303 +0,0 @@ -package org.nixos.gradle2nix - -import org.apache.ivy.Ivy -import org.apache.ivy.core.settings.IvySettings -import org.apache.ivy.plugins.parser.m2.PomReader -import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser -import org.apache.ivy.plugins.repository.url.URLResource -import org.apache.ivy.plugins.resolver.ChainResolver -import org.gradle.api.Project -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.ModuleIdentifier -import org.gradle.api.artifacts.ResolvedArtifact -import org.gradle.api.artifacts.component.ComponentArtifactIdentifier -import org.gradle.api.artifacts.component.ModuleComponentIdentifier -import org.gradle.api.artifacts.dsl.DependencyHandler -import org.gradle.api.artifacts.dsl.RepositoryHandler -import org.gradle.api.artifacts.query.ArtifactResolutionQuery -import org.gradle.api.artifacts.result.ResolvedArtifactResult -import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository -import org.gradle.ivy.IvyDescriptorArtifact -import org.gradle.ivy.IvyModule -import org.gradle.kotlin.dsl.getArtifacts -import org.gradle.kotlin.dsl.withArtifacts -import org.gradle.maven.MavenModule -import org.gradle.maven.MavenPomArtifact -import org.gradle.util.GradleVersion - -enum class ConfigurationScope { - BUILDSCRIPT, - PLUGIN, - PROJECT, - SETTINGS -} - -internal class ConfigurationResolverFactory( - project: Project, - scope: ConfigurationScope, - repositories: List -) { - private val ivySettings = IvySettings().apply { - defaultInit() - // This doesn't appear to be used, but it's better to define it explicitly than to introduce - // impurities into artifact resolution. - setDefaultRepositoryCacheBasedir(project.buildDir.resolve("tmp/gradle2nix/_cache").absolutePath) - setDictatorResolver(ChainResolver().also { chain -> - chain.settings = this@apply - for (resolver in resolvers) chain.add(resolver) - }) - } - - private val resolvers = repositories - .filterNot { it.createResolver().isLocal } - .mapNotNull { it.repositoryResolver(project, scope, ivySettings) } - - fun create(dependencies: DependencyHandler): ConfigurationResolver = - ConfigurationResolver(ivySettings, resolvers, dependencies) -} - -internal class ConfigurationResolver( - ivySettings: IvySettings, - private val resolvers: List, - private val dependencies: DependencyHandler -) { - private val failed = mutableSetOf() - private val ivy = Ivy.newInstance(ivySettings) - - val unresolved: List = failed.toList() - - fun resolve(configuration: Configuration): List { - val resolved = configuration.resolvedConfiguration.lenientConfiguration - - failed.addAll(resolved.unresolvedModuleDependencies.map { - DefaultArtifactIdentifier( - group = it.selector.group, - name = it.selector.name, - version = it.selector.version ?: "", - type = "module" - ) - }) - - val topLevelMetadata = resolved.firstLevelModuleDependencies - .flatMap { resolveMetadata(it.moduleGroup, it.moduleName, it.moduleVersion) } - - val allArtifacts = resolved.artifacts - .filter { it.id.componentIdentifier is ModuleComponentIdentifier } - .flatMap(::resolve) - - return (topLevelMetadata + allArtifacts).filter { it.urls.isNotEmpty() } - } - - private fun resolve(resolvedArtifact: ResolvedArtifact): List { - val componentId = resolvedArtifact.id.componentIdentifier as ModuleComponentIdentifier - - val artifactId = DefaultArtifactIdentifier( - group = componentId.group, - name = componentId.module, - version = componentId.version, - type = resolvedArtifact.type, - extension = resolvedArtifact.extension, - classifier = resolvedArtifact.classifier - ) - - val sha256 = resolvedArtifact.computeHash() - val artifacts = resolvers.mapNotNull { it.resolve(artifactId, sha256) }.merge() - if (artifacts.isEmpty()) failed.add(artifactId) - return artifacts + componentId.run { resolveMetadata(group, module, version) } - } - - private fun resolveMetadata( - group: String, - name: String, - version: String - ): List { - return resolvePoms(group, name, version) + - resolveDescriptors(group, name, version) + - resolveGradleMetadata(group, name, version) - } - - private fun resolvePoms( - group: String, - name: String, - version: String - ): List { - return dependencies.createArtifactResolutionQuery() - .forModuleCompat(group, name, version) - .withArtifacts(MavenModule::class, MavenPomArtifact::class) - .execute() - .resolvedComponents - .flatMap { it.getArtifacts(MavenPomArtifact::class) } - .filterIsInstance() - .flatMap { it.withParentPoms() } - .flatMap { resolvedPom -> - val componentId = resolvedPom.id.componentIdentifier as ModuleComponentIdentifier - val artifactId = DefaultArtifactIdentifier( - group = componentId.group, - name = componentId.module, - version = componentId.version, - type = "pom" - ) - // Intentionally not computing hash from the cached result; see ResolvedArtifact.computeHash() below. - val artifacts = resolvers.mapNotNull { it.resolve(artifactId) }.merge() - if (artifacts.isEmpty()) failed.add(artifactId) - artifacts - } - } - - private fun resolveDescriptors( - group: String, - name: String, - version: String - ): List { - return dependencies.createArtifactResolutionQuery() - .forModuleCompat(group, name, version) - .withArtifacts(IvyModule::class, IvyDescriptorArtifact::class) - .execute() - .resolvedComponents - .flatMap { it.getArtifacts(IvyDescriptorArtifact::class) } - .filterIsInstance() - .flatMap { it.withParentDescriptors() } - .flatMap { resolvedDesc -> - val componentId = resolvedDesc.id.componentIdentifier as ModuleComponentIdentifier - val artifactId = DefaultArtifactIdentifier( - group = componentId.group, - name = componentId.module, - version = componentId.version, - type = "ivy", - extension = "xml" - ) - // Intentionally not computing hash from the cached result; see ResolvedArtifact.computeHash() below. - val artifacts = resolvers.mapNotNull { it.resolve(artifactId) }.merge() - if (artifacts.isEmpty()) failed.add(artifactId) - artifacts - } - } - - private fun resolveGradleMetadata( - group: String, - name: String, - version: String - ): List { - val artifactId = DefaultArtifactIdentifier( - group = group, - name = name, - version = version, - type = "module" - ) - val artifacts = resolvers.mapNotNull { it.resolve(artifactId) }.merge() - if (artifacts.isEmpty()) failed.add(artifactId) - return artifacts - } - - private fun ResolvedArtifactResult.parentPom(): ResolvedArtifactResult? { - val resource = URLResource(file.toURI().toURL()) - val reader = PomReader(resource.url, resource) - - return if (reader.hasParent()) { - dependencies.createArtifactResolutionQuery() - .forModuleCompat(reader.parentGroupId, reader.parentArtifactId, reader.parentVersion) - .withArtifacts(MavenModule::class, MavenPomArtifact::class) - .execute() - .resolvedComponents - .flatMap { it.getArtifacts(MavenPomArtifact::class) } - .filterIsInstance() - .firstOrNull() - } else { - null - } - } - - private fun ResolvedArtifactResult.withParentPoms(): List = - generateSequence(this) { it.parentPom() }.toList() - - private fun ResolvedArtifactResult.parentDescriptors(seen: Set): List { - val url = file.toURI().toURL() - val parser = XmlModuleDescriptorParser.getInstance() - - val descriptor = parser.parseDescriptor(ivy.settings, url, false) - - return descriptor.inheritedDescriptors.mapNotNull { desc -> - dependencies.createArtifactResolutionQuery() - .forModuleCompat( - desc.parentRevisionId.organisation, - desc.parentRevisionId.name, - desc.parentRevisionId.revision - ) - .withArtifacts(IvyModule::class, IvyDescriptorArtifact::class) - .execute() - .resolvedComponents - .flatMap { it.getArtifacts(IvyDescriptorArtifact::class) } - .filterIsInstance() - .firstOrNull() - }.filter { it.id !in seen } - } - - private fun ResolvedArtifactResult.withParentDescriptors(): List { - val seen = mutableSetOf() - return generateSequence(listOf(this)) { descs -> - val parents = descs.flatMap { it.parentDescriptors(seen) } - seen.addAll(parents.map(ResolvedArtifactResult::getId)) - parents.takeUnless { it.isEmpty() } - }.flatten().distinct().toList() - } -} - -private fun ArtifactResolutionQuery.forModuleCompat( - group: String, - name: String, - version: String -): ArtifactResolutionQuery { - return if (GradleVersion.current() >= GradleVersion.version("4.5")) { - forModule(group, name, version) - } else { - forComponents(ModuleComponentId(group, name, version)) - } -} - -private data class ModuleComponentId( - private val moduleId: ModuleId, - private val version: String -) : ModuleComponentIdentifier { - - constructor( - group: String, - name: String, - version: String - ) : this(ModuleId(group, name), version) - - override fun getGroup(): String = moduleId.group - override fun getModule(): String = moduleId.name - override fun getVersion(): String = version - override fun getModuleIdentifier(): ModuleIdentifier = moduleId - override fun getDisplayName(): String = - arrayOf(group, module, version).joinToString(":") -} - -private data class ModuleId( - private val group: String, - private val name: String -) : ModuleIdentifier { - override fun getGroup(): String = group - override fun getName(): String = name -} - -private fun List.merge(): List { - return groupingBy { it.id } - .reduce { _, dest, next -> dest.copy(urls = dest.urls + next.urls) } - .values.toList() -} - -private fun ResolvedArtifact.computeHash(): String? { - // Hack: Some POM files are served with CRLF line endings, e.g. javax.servlet:javax.servlet-api:3.1.0. - // Gradle stores these normalized with LF line endings, which will not match the eventual hash - // of the fixed-output derivation which produces the POM artifact. - // - // A similar issue can exist for Apache Ivy; see https://issues.apache.org/jira/browse/IVY-1156. - // - // Ignore these artifacts, and defer hash calculation to RepositoryResolver. - if (type == "pom" || type == "ivy") { - return null - } - - return file.sha256() -} \ No newline at end of file diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt index d0a0b3e..b5a0eac 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt @@ -1,282 +1,23 @@ +@file:Suppress("UnstableApiUsage") + package org.nixos.gradle2nix -import com.squareup.moshi.Moshi import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.Task -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.ProjectDependency -import org.gradle.api.internal.GradleInternal -import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository import org.gradle.api.invocation.Gradle -import org.gradle.api.tasks.TaskContainer -import org.gradle.api.tasks.wrapper.Wrapper -import org.gradle.kotlin.dsl.getByName -import org.gradle.kotlin.dsl.newInstance -import org.gradle.kotlin.dsl.support.serviceOf -import org.gradle.kotlin.dsl.withType -import org.gradle.plugin.management.PluginRequest -import org.gradle.tooling.provider.model.ToolingModelBuilder -import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry -import org.gradle.util.GradleVersion -import java.net.URL -import java.util.* +import org.nixos.gradle2nix.dependencygraph.AbstractDependencyExtractorPlugin @Suppress("unused") -open class Gradle2NixPlugin : Plugin { - override fun apply(gradle: Gradle): Unit = gradle.run { - val pluginRequests = collectPlugins() - - projectsLoaded { - val modelProperties = rootProject.loadModelProperties() - rootProject.serviceOf() - .register(NixToolingModelBuilder(modelProperties, pluginRequests)) - - rootProject.tasks.registerCompat("nixModel") { - doLast { - val outFile = project.mkdir(project.buildDir.resolve("nix")).resolve("model.json") - val model = project.buildModel(modelProperties, pluginRequests) - outFile.bufferedWriter().use { out -> - out.write( - Moshi.Builder().build() - .adapter(DefaultBuild::class.java) - .indent(" ") - .toJson(model) - ) - out.flush() - } - } - } - } - } -} - -private fun TaskContainer.registerCompat(name: String, configureAction: Task.() -> Unit) { - if (GradleVersion.current() >= GradleVersion.version("4.9")) { - register(name, configureAction) - } else { - create(name, configureAction) - } -} - -private class NixToolingModelBuilder( - private val modelProperties: ModelProperties, - private val pluginRequests: List -) : ToolingModelBuilder { - override fun canBuild(modelName: String): Boolean { - return modelName == NIX_MODEL_NAME - } - - override fun buildAll(modelName: String, project: Project): Build = - project.buildModel(modelProperties, pluginRequests) -} - -private fun Gradle.collectPlugins(): List { - val pluginRequests = mutableListOf() - gradle.settingsEvaluated { - pluginManagement.resolutionStrategy.eachPlugin { - if (requested.id.namespace != null && requested.id.namespace != "org.gradle") { - pluginRequests.add(target) - } - } - } - return pluginRequests -} - -private fun Project.buildModel( - modelProperties: ModelProperties, - pluginRequests: List -): DefaultBuild { - val settingsDependencies = settingsDependencies() - val plugins = buildPlugins(pluginRequests) - - val subprojects = if (modelProperties.subprojects.isEmpty()) { - project.subprojects - } else { - project.subprojects - .filter { it.path in modelProperties.subprojects } - // Include dependent subprojects as well - .flatMap { setOf(it) + it.dependentSubprojects(modelProperties.configurations) } - .toSet() - } - - return DefaultBuild( - gradle = buildGradle(), - settingsDependencies = settingsDependencies, - pluginDependencies = plugins, - rootProject = buildProject(modelProperties.configurations, subprojects, plugins), - includedBuilds = includedBuilds() - ) -} - -@Suppress("UnstableApiUsage") -private fun Project.buildGradle(): DefaultGradle = - with(tasks.getByName("wrapper")) { - DefaultGradle( - version = gradleVersion, - type = distributionType.name.toLowerCase(Locale.US), - url = distributionUrl, - sha256 = sha256, - nativeVersion = gradle.gradleHomeDir?.resolve("lib")?.listFiles() - ?.firstOrNull { f -> nativePlatformJarRegex matches f.name }?.let { nf -> - nativePlatformJarRegex.find(nf.name)?.groupValues?.get(1) - } - ?: throw IllegalStateException( - """ - Failed to find native-platform jar in ${gradle.gradleHomeDir}. - Ask Tad to fix this. - """.trimIndent() - ) - ) - } - -private fun Project.settingsDependencies(): List { - val buildscript = (gradle as GradleInternal).settings.buildscript - - val resolverFactory = ConfigurationResolverFactory( - this, - ConfigurationScope.SETTINGS, - buildscript.repositories.filterIsInstance() - ) - val resolver = resolverFactory.create(buildscript.dependencies) - - logger.lifecycle(" Settings script") - - val dependencies = buildscript.configurations - .flatMap(resolver::resolve) - .distinct() - .sorted() - - if (resolver.unresolved.isNotEmpty()) { - logger.warn(buildString { - append(" Failed to resolve settings script dependencies:\n") - for (id in resolver.unresolved) { - append(" - $id\n") - } - }) - } - - return dependencies -} - -private fun Project.buildPlugins(pluginRequests: List): List { - return objects.newInstance(this).resolve(pluginRequests).distinct().sorted() -} - -private fun Project.includedBuilds(): List = - gradle.includedBuilds.map { - DefaultIncludedBuild(it.name, it.projectDir.toRelativeString(project.projectDir)) - } - -private fun Project.buildProject( - explicitConfigurations: List, - explicitSubprojects: Collection, - pluginArtifacts: List -): DefaultProject { - logger.lifecycle(" Subproject: $path") - - val (buildscriptDependencies, buildscriptUnresolved) = buildscriptDependencies(pluginArtifacts) - - if (buildscriptUnresolved.isNotEmpty()) { - logger.warn(buildString { - append(" Failed to resolve buildscript dependencies:\n") - for (id in buildscriptUnresolved) { - append(" - $id\n") - } - }) - } - - val (projectDependencies, projectUnresolved) = projectDependencies(explicitConfigurations) - - if (projectUnresolved.isNotEmpty()) { - logger.warn(buildString { - append(" Failed to resolve project dependencies:\n") - for (id in projectUnresolved) { - append(" - $id\n") - } - }) - } - - return DefaultProject( - name = name, - version = version.toString(), - path = path, - projectDir = projectDir.toRelativeString(rootProject.projectDir), - buildscriptDependencies = buildscriptDependencies, - projectDependencies = projectDependencies, - children = explicitSubprojects.map { - it.buildProject(explicitConfigurations, emptyList(), pluginArtifacts) +class Gradle2NixPlugin : Plugin { + override fun apply(gradle: Gradle) { + // Only apply the dependency extractor to the root build + if (gradle.parent == null) { + gradle.pluginManager.apply(NixDependencyExtractorPlugin::class.java) } - ) -} - -private fun Project.buildscriptDependencies( - pluginArtifacts: List -): Pair, List> { - val resolverFactory = ConfigurationResolverFactory( - this, - ConfigurationScope.BUILDSCRIPT, - buildscript.repositories.filterIsInstance() - ) - val resolver = resolverFactory.create(buildscript.dependencies) - val pluginIds = pluginArtifacts.map(DefaultArtifact::id) - return buildscript.configurations - .flatMap(resolver::resolve) - .distinct() - .filter { it.id !in pluginIds } - .sorted() to resolver.unresolved -} - -private fun Project.projectDependencies( - explicitConfigurations: List -): Pair, List> { - val resolver = ConfigurationResolverFactory( - this, - ConfigurationScope.PROJECT, - RepositoriesCollector.create(project).collectRepositories() - ).create(dependencies) - return collectConfigurations(explicitConfigurations) - .flatMap(resolver::resolve) - .distinct() - .sorted() to resolver.unresolved -} - -private fun Project.dependentSubprojects(explicitConfigurations: List): Set { - return collectConfigurations(explicitConfigurations) - .flatMap { it.allDependencies.withType() } - .map { it.dependencyProject } - .toSet() - .flatMap { setOf(it) + it.dependentSubprojects(explicitConfigurations) } - .toSet() -} - -private fun Project.collectConfigurations( - explicitConfigurations: List -): Set { - return if (explicitConfigurations.isEmpty()) { - configurations.filter { it.isCanBeResolved }.toSet() - } else { - configurations.filter { it.name in explicitConfigurations }.toSet() + gradle.pluginManager.apply(ForceDependencyResolutionPlugin::class.java) } -} -private fun fetchDistSha256(url: String): String { - return URL("$url.sha256").openConnection().run { - connect() - getInputStream().reader().use { it.readText() } + class NixDependencyExtractorPlugin : AbstractDependencyExtractorPlugin() { + override fun getRendererClassName(): String = + NixDependencyGraphRenderer::class.java.name } } - -private val nativePlatformJarRegex = Regex("""native-platform-([\d.]+(-(alpha|beta|milestone)-\d+)?)\.jar""") - -private val Wrapper.sha256: String - get() { - return if (GradleVersion.current() < GradleVersion.version("4.5")) { - fetchDistSha256(distributionUrl) - } else { - @Suppress("UnstableApiUsage") - distributionSha256Sum ?: fetchDistSha256(distributionUrl) - } - } - -private const val NIX_MODEL_NAME = "org.nixos.gradle2nix.Build" diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/ModelProperties.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/ModelProperties.kt deleted file mode 100644 index 2d0fad2..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/ModelProperties.kt +++ /dev/null @@ -1,20 +0,0 @@ -package org.nixos.gradle2nix - -import org.gradle.api.Project - -data class ModelProperties( - val configurations: List, - val subprojects: List -) - -internal fun Project.loadModelProperties(): ModelProperties { - return ModelProperties( - configurations = this["org.nixos.gradle2nix.configurations"]?.split(",") ?: emptyList(), - subprojects = this["org.nixos.gradle2nix.subprojects"]?.split(",") ?: emptyList() - ) -} - -private operator fun Project.get(key: String): String? { - return System.getProperty(key)?.takeIf { it.isNotEmpty() } - ?: (properties[key] as? String)?.takeIf { it.isNotEmpty() } -} \ No newline at end of file diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt new file mode 100644 index 0000000..2f23bbd --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt @@ -0,0 +1,21 @@ +package org.nixos.gradle2nix + +import java.io.File +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.encodeToStream +import org.nixos.gradle2nix.dependencygraph.DependencyGraphRenderer +import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration + +class NixDependencyGraphRenderer : DependencyGraphRenderer { + @OptIn(ExperimentalSerializationApi::class) + override fun outputDependencyGraph( + resolvedConfigurations: List, + outputDirectory: File + ) { + val graphOutputFile = File(outputDirectory, "dependency-graph.json") + graphOutputFile.outputStream().buffered().use { output -> + Json.encodeToStream(resolvedConfigurations, output) + } + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/PluginResolver.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/PluginResolver.kt deleted file mode 100644 index fc0d8e2..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/PluginResolver.kt +++ /dev/null @@ -1,31 +0,0 @@ -package org.nixos.gradle2nix - -import org.gradle.api.Project -import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository -import org.gradle.plugin.management.PluginRequest -import org.gradle.plugin.use.internal.PluginDependencyResolutionServices -import javax.inject.Inject - -internal open class PluginResolver @Inject constructor( - project: Project, - pluginDependencyResolutionServices: PluginDependencyResolutionServices -) { - private val configurations = pluginDependencyResolutionServices.configurationContainer - - private val resolver = ConfigurationResolverFactory( - project, - ConfigurationScope.PLUGIN, - pluginDependencyResolutionServices.resolveRepositoryHandler.filterIsInstance() - ).create(pluginDependencyResolutionServices.dependencyHandler) - - fun resolve(pluginRequests: List): List { - val markerDependencies = pluginRequests.map { request -> - request.module?.let { module -> - ApiHack.defaultExternalModuleDependency(module.group, module.name, module.version) - } ?: request.id.id.let { id -> - ApiHack.defaultExternalModuleDependency(id, "$id.gradle.plugin", request.version) - } - } - return resolver.resolve(configurations.detachedConfiguration(*markerDependencies.toTypedArray())) - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoriesCollector.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoriesCollector.kt deleted file mode 100644 index 3b5dc4a..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoriesCollector.kt +++ /dev/null @@ -1,37 +0,0 @@ -package org.nixos.gradle2nix - -import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository -import org.gradle.api.Project -import org.gradle.api.artifacts.dsl.RepositoryHandler -import org.gradle.api.initialization.dsl.ScriptHandler -import org.gradle.api.internal.artifacts.RepositoriesSupplier -import org.gradle.kotlin.dsl.newInstance -import org.gradle.util.GradleVersion -import javax.inject.Inject - -interface RepositoriesCollector { - fun collectRepositories(): List - - companion object { - fun create(project: Project): RepositoriesCollector = - if (GradleVersion.current() >= GradleVersion.version("6.8")) { - project.objects.newInstance() - } else { - project.objects.newInstance() - } - } -} - -open class RepositoriesCollectorBase @Inject constructor( - private val repositories: RepositoryHandler -): RepositoriesCollector { - override fun collectRepositories(): List = - repositories.filterIsInstance() -} - -open class RepositoriesCollector68 @Inject constructor( - private val repositoriesSupplier: RepositoriesSupplier -): RepositoriesCollector { - override fun collectRepositories(): List = - repositoriesSupplier.get() -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoryResolver.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoryResolver.kt deleted file mode 100644 index 33ce076..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoryResolver.kt +++ /dev/null @@ -1,317 +0,0 @@ -package org.nixos.gradle2nix - -import com.amazonaws.auth.BasicAWSCredentials -import com.amazonaws.auth.BasicSessionCredentials -import org.apache.ivy.core.LogOptions -import org.apache.ivy.core.cache.ArtifactOrigin -import org.apache.ivy.core.cache.CacheResourceOptions -import org.apache.ivy.core.cache.DefaultRepositoryCacheManager -import org.apache.ivy.core.cache.RepositoryCacheManager -import org.apache.ivy.core.module.id.ArtifactRevisionId -import org.apache.ivy.core.module.id.ModuleRevisionId -import org.apache.ivy.core.resolve.DownloadOptions -import org.apache.ivy.core.settings.IvySettings -import org.apache.ivy.core.settings.TimeoutConstraint -import org.apache.ivy.plugins.repository.Repository -import org.apache.ivy.plugins.repository.Resource -import org.apache.ivy.plugins.repository.url.URLRepository -import org.apache.ivy.plugins.repository.url.URLResource -import org.apache.ivy.plugins.resolver.AbstractResolver -import org.apache.ivy.plugins.resolver.IBiblioResolver -import org.apache.ivy.plugins.resolver.URLResolver -import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader -import org.codehaus.plexus.util.ReaderFactory -import org.codehaus.plexus.util.xml.pull.XmlPullParserException -import org.gradle.api.Project -import org.gradle.api.artifacts.repositories.ArtifactRepository -import org.gradle.api.artifacts.repositories.AuthenticationContainer -import org.gradle.api.artifacts.repositories.AuthenticationSupported -import org.gradle.api.artifacts.repositories.IvyArtifactRepository -import org.gradle.api.artifacts.repositories.MavenArtifactRepository -import org.gradle.api.artifacts.repositories.UrlArtifactRepository -import org.gradle.api.credentials.AwsCredentials -import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository -import org.gradle.api.internal.artifacts.repositories.resolver.IvyResolver -import org.gradle.api.logging.Logger -import org.gradle.api.logging.Logging -import org.gradle.authentication.aws.AwsImAuthentication -import org.gradle.internal.authentication.AllSchemesAuthentication -import org.gradle.kotlin.dsl.getCredentials -import java.io.IOException -import java.net.URI -import org.apache.ivy.core.module.descriptor.Artifact as IvyArtifact -import org.apache.ivy.core.module.descriptor.DefaultArtifact as IvyDefaultArtifact -import org.apache.ivy.plugins.resolver.RepositoryResolver as IvyRepositoryResolver - -internal fun ResolutionAwareRepository.repositoryResolver( - project: Project, - scope: ConfigurationScope, - ivySettings: IvySettings -): RepositoryResolver? = - when(this) { - is MavenArtifactRepository -> MavenResolver(project, scope, ivySettings, this) - is IvyArtifactRepository -> IvyResolver(project, scope, ivySettings, this) - else -> null - } - -internal sealed class RepositoryResolver { - companion object { - @JvmStatic - protected val log: Logger = Logging.getLogger("gradle2nix") - } - - abstract val ivyResolver: IvyRepositoryResolver - - abstract fun resolve( - artifactId: DefaultArtifactIdentifier, - sha256: String? = null - ): DefaultArtifact? -} - -internal class MavenResolver( - project: Project, - scope: ConfigurationScope, - ivySettings: IvySettings, - repository: MavenArtifactRepository -) : RepositoryResolver() { - - override val ivyResolver: IBiblioResolver = IBiblioResolver().apply { - name = repository.name - root = repository.url.toString() - isM2compatible = true - settings = ivySettings - setCache(cacheManager(project, scope, ivySettings, repository).name) - setRepository(resolverRepository(repository)) - } - - override fun resolve(artifactId: DefaultArtifactIdentifier, sha256: String?): DefaultArtifact? { - val ivyArtifact: IvyArtifact = artifactId.toArtifact() - val origin = ivyResolver.locate(ivyArtifact) - if (origin == null || !origin.isExists) return null - val hash = if (sha256 != null) sha256 else { - val report = ivyResolver.download(origin, downloadOptions) - report.localFile?.sha256().also { - if (it == null) log.error(report.toString()) - } - } - if (hash == null) { - log.error("Failed to download '$artifactId' from repository '${ivyResolver.repository.name}'") - return null - } - val snapshotVersion: SnapshotVersion? = artifactId.version.snapshotVersion()?.let { - findSnapshotVersion(artifactId, it) - } - return DefaultArtifact( - id = artifactId, - name = artifactId.filename(snapshotVersion), - path = artifactId.repoPath(), - timestamp = snapshotVersion?.timestamp, - build = snapshotVersion?.build, - urls = listOf(origin.location), - sha256 = hash - ) - } - - private fun findSnapshotVersion( - artifactId: ArtifactIdentifier, - snapshotVersion: SnapshotVersion - ): SnapshotVersion { - if (snapshotVersion.timestamp != null) return snapshotVersion - val metadataLocation = "${ivyResolver.root}${artifactId.repoPath()}/maven-metadata.xml" - val metadataFile = ivyResolver.repositoryCacheManager.downloadRepositoryResource( - ivyResolver.repository.getResource(metadataLocation), - "maven-metadata", - "maven-metadata", - "xml", - CacheResourceOptions(), - ivyResolver.repository - ).localFile - - if (metadataFile == null) { - log.warn("maven-metadata.xml not found for snapshot dependency: $artifactId") - return snapshotVersion - } - - fun parseError(e: Throwable): Pair { - log.error("Failed to parse maven-metadata.xml for artifact: $artifactId") - log.error("Error was: ${e.message}", e) - return null to null - } - - val (timestamp: String?, build: Int?) = try { - MetadataXpp3Reader() - .read(ReaderFactory.newXmlReader(metadataFile)) - .versioning?.snapshot?.run { timestamp to buildNumber } - ?: null to null - } catch (e: IOException) { - parseError(e) - } catch (e: XmlPullParserException) { - parseError(e) - } - - return snapshotVersion.copy(timestamp = timestamp, build = build) - } -} - -internal class IvyResolver( - project: Project, - scope: ConfigurationScope, - ivySettings: IvySettings, - repository: IvyArtifactRepository -) : RepositoryResolver() { - - override val ivyResolver: URLResolver = URLResolver().apply { - name = repository.name - val ivyResolver = (repository as ResolutionAwareRepository).createResolver() as IvyResolver - isM2compatible = ivyResolver.isM2compatible - for (p in ivyResolver.ivyPatterns) addIvyPattern(p) - for (p in ivyResolver.artifactPatterns) addArtifactPattern(p) - settings = ivySettings - setCache(cacheManager(project, scope, ivySettings, repository).name) - setRepository(resolverRepository(repository)) - } - - override fun resolve(artifactId: DefaultArtifactIdentifier, sha256: String?): DefaultArtifact? { - val ivyArtifact: IvyArtifact = artifactId.toArtifact() - val origin = ivyResolver.locate(ivyArtifact)?.takeIf(ArtifactOrigin::isExists) ?: return null - val hash = if (sha256 != null) sha256 else { - val report = ivyResolver.download(origin, downloadOptions) - report.localFile?.sha256().also { - if (it == null) log.error(report.toString()) - } - } - if (hash == null) { - log.error("Failed to download '$artifactId' from repository '${ivyResolver.repository.name}'") - return null - } - return DefaultArtifact( - id = DefaultArtifactIdentifier(artifactId), - name = artifactId.filename(null), - path = artifactId.repoPath(), - urls = listOf(origin.location), - sha256 = hash - ) - } -} - -private fun cacheManager( - project: Project, - scope: ConfigurationScope, - ivySettings: IvySettings, - repository: ArtifactRepository -): RepositoryCacheManager { - return DefaultRepositoryCacheManager( - "${scope.name.toLowerCase()}-${repository.name}-cache", - ivySettings, - project.buildDir.resolve("tmp/gradle2nix/${repository.name}").also { - it.mkdirs() - } - ).also { - ivySettings.addRepositoryCacheManager(it) - } -} - -private val metadataTypes = setOf("pom", "ivy") - -private fun ArtifactIdentifier.toArtifact(): IvyArtifact { - val moduleRevisionId = ModuleRevisionId.newInstance(group, name, version) - val artifactRevisionId = ArtifactRevisionId.newInstance( - moduleRevisionId, - name, - type, - extension, - classifier?.let { mapOf("classifier" to it) } - ) - return IvyDefaultArtifact(artifactRevisionId, null, null, type in metadataTypes) -} - -private data class SnapshotVersion( - val base: String, - val timestamp: String?, - val build: Int? -) { - override fun toString(): String { - return if (timestamp != null && build != null) { - "$base-$timestamp-$build" - } else { - "$base-SNAPSHOT" - } - } -} - -private val SNAPSHOT_REGEX = Regex("^(.*)-SNAPSHOT$") -private val SNAPSHOT_TIMESTAMPED_REGEX = Regex("^(.*)-([0-9]{8}.[0-9]{6})-([0-9]+)$") - -private fun String.snapshotVersion(): SnapshotVersion? { - return SNAPSHOT_REGEX.find(this)?.destructured?.let { (base) -> - SnapshotVersion(base, null, null) - } ?: SNAPSHOT_TIMESTAMPED_REGEX.find(this)?.destructured?.let { (base, timestamp, build) -> - SnapshotVersion(base, timestamp, build.toInt()) - } -} - -private fun ArtifactIdentifier.repoPath(): String = - "${group.replace('.', '/')}/$name/$version" - -private fun ArtifactIdentifier.filename( - snapshotVersion: SnapshotVersion? -): String = buildString { - append(name, "-", snapshotVersion ?: version) - if (classifier != null) append("-", classifier) - append(".", extension) -} - -private val downloadOptions = DownloadOptions().apply { - log = LogOptions.LOG_DEFAULT -} - -private fun AbstractResolver.resolverRepository( - repository: T -) : Repository -where T : ArtifactRepository, - T : AuthenticationSupported = - when (val scheme = repository.url.scheme) { - "s3" -> s3Repository( - repository.getCredentials(AwsCredentials::class), - LazyTimeoutConstraint(this) - ) - "http", "https" -> URLRepository(LazyTimeoutConstraint(this)) - else -> throw IllegalStateException("Unknown repository URL scheme: $scheme") - } - -private fun s3Repository( - credentials: AwsCredentials?, - timeoutConstraint: TimeoutConstraint -): Repository { - val awsCredentials = credentials?.let { - if (it.sessionToken == null) { - BasicAWSCredentials(it.accessKey, it.secretKey) - } else { - BasicSessionCredentials(it.accessKey, it.secretKey, it.sessionToken) - } - } - return S3Repository( - credentials = awsCredentials, - endpoint = System.getProperty("org.gradle.s3.endpoint")?.let { URI(it) }, - timeoutConstraint = timeoutConstraint - ).apply { - name = "AWS S3" - } -} - -private class LazyTimeoutConstraint( - private val resolver: AbstractResolver -) : TimeoutConstraint { - override fun getConnectionTimeout(): Int = - resolver.timeoutConstraint?.connectionTimeout ?: -1 - - override fun getReadTimeout(): Int = - resolver.timeoutConstraint?.readTimeout ?: -1 -} - -// Compatibility shim as UrlArtifactRepository was added in Gradle 6.0 -private val ArtifactRepository.url: URI get() = when (this) { - is MavenArtifactRepository -> url - is IvyArtifactRepository -> url - else -> throw IllegalStateException("Unhandled repository type: ${this::class.simpleName}") -} \ No newline at end of file diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Util.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Util.kt deleted file mode 100644 index f7f8074..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Util.kt +++ /dev/null @@ -1,24 +0,0 @@ -package org.nixos.gradle2nix - -import java.io.File -import java.net.URI -import java.net.URL -import java.security.MessageDigest - -private const val HEX = "0123456789abcdef" - -internal fun File.sha256(): String = readBytes().sha256() - -private fun ByteArray.sha256() = buildString { - MessageDigest.getInstance("SHA-256").digest(this@sha256) - .asSequence() - .map(Byte::toInt) - .forEach { - append(HEX[it shr 4 and 0x0f]) - append(HEX[it and 0x0f]) - } -} - -internal fun String.toUrl(): URL = URL(this) - -internal fun String.toUri(): URI = URI(this) diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt new file mode 100644 index 0000000..427b1e7 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt @@ -0,0 +1,128 @@ +package org.nixos.gradle2nix.dependencygraph + +import org.gradle.api.Plugin +import org.gradle.api.invocation.Gradle +import org.gradle.api.provider.Provider +import org.gradle.internal.build.event.BuildEventListenerRegistryInternal +import org.gradle.util.GradleVersion +import org.nixos.gradle2nix.dependencygraph.extractor.DependencyExtractor +import org.nixos.gradle2nix.dependencygraph.extractor.DependencyExtractorBuildService +import org.nixos.gradle2nix.dependencygraph.extractor.LegacyDependencyExtractor +import org.nixos.gradle2nix.dependencygraph.util.service + +abstract class AbstractDependencyExtractorPlugin : Plugin { + // Register extension functions on `Gradle` type + private companion object : org.nixos.gradle2nix.dependencygraph.util.GradleExtensions() + + /** + * The name of an accessible class that implements `org.gradle.dependencygraph.DependencyGraphRenderer`. + */ + abstract fun getRendererClassName(): String + + internal lateinit var dependencyExtractorProvider: Provider + + override fun apply(gradle: Gradle) { + val gradleVersion = GradleVersion.current() + // Create the adapter based upon the version of Gradle + val applicatorStrategy = when { + gradleVersion < GradleVersion.version("8.0") -> PluginApplicatorStrategy.LegacyPluginApplicatorStrategy + else -> PluginApplicatorStrategy.DefaultPluginApplicatorStrategy + } + + // Create the service + dependencyExtractorProvider = applicatorStrategy.createExtractorService(gradle, getRendererClassName()) + + gradle.rootProject { project -> + dependencyExtractorProvider + .get() + .rootProjectBuildDirectory = project.buildDir + } + + // Register the service to listen for Build Events + applicatorStrategy.registerExtractorListener(gradle, dependencyExtractorProvider) + + // Register the shutdown hook that should execute at the completion of the Gradle build. + applicatorStrategy.registerExtractorServiceShutdown(gradle, dependencyExtractorProvider) + } + + /** + * Adapters for creating the [DependencyExtractor] and installing it into [Gradle] based upon the Gradle version. + */ + private interface PluginApplicatorStrategy { + + fun createExtractorService( + gradle: Gradle, + rendererClassName: String + ): Provider + + fun registerExtractorListener( + gradle: Gradle, + extractorServiceProvider: Provider + ) + + fun registerExtractorServiceShutdown( + gradle: Gradle, + extractorServiceProvider: Provider + ) + + @Suppress("DEPRECATION") + object LegacyPluginApplicatorStrategy : PluginApplicatorStrategy { + + override fun createExtractorService( + gradle: Gradle, + rendererClassName: String + ): Provider { + val dependencyExtractor = LegacyDependencyExtractor(rendererClassName) + return gradle.providerFactory.provider { dependencyExtractor } + } + + override fun registerExtractorListener( + gradle: Gradle, + extractorServiceProvider: Provider + ) { + gradle.buildOperationListenerManager + .addListener(extractorServiceProvider.get()) + } + + override fun registerExtractorServiceShutdown( + gradle: Gradle, + extractorServiceProvider: Provider + ) { + gradle.buildFinished { + extractorServiceProvider.get().close() + gradle.buildOperationListenerManager + .removeListener(extractorServiceProvider.get()) + } + } + } + + object DefaultPluginApplicatorStrategy : PluginApplicatorStrategy { + private const val SERVICE_NAME = "dependencyExtractorService" + + override fun createExtractorService( + gradle: Gradle, + rendererClassName: String + ): Provider { + return gradle.sharedServices.registerIfAbsent( + SERVICE_NAME, + DependencyExtractorBuildService::class.java + ) { it.parameters.rendererClassName.set(rendererClassName) } + } + + override fun registerExtractorListener( + gradle: Gradle, + extractorServiceProvider: Provider + ) { + gradle.service() + .onOperationCompletion(extractorServiceProvider) + } + + override fun registerExtractorServiceShutdown( + gradle: Gradle, + extractorServiceProvider: Provider + ) { + // No-op as DependencyExtractorService is Auto-Closable + } + } + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt new file mode 100644 index 0000000..9b786af --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt @@ -0,0 +1,11 @@ +package org.nixos.gradle2nix.dependencygraph + +import java.io.File +import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration + +interface DependencyGraphRenderer { + fun outputDependencyGraph( + resolvedConfigurations: List, + outputDirectory: File + ) +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt new file mode 100644 index 0000000..c9010c4 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt @@ -0,0 +1,342 @@ +package org.nixos.gradle2nix.dependencygraph.extractor + +import java.io.File +import java.net.URI +import java.util.Collections +import org.gradle.api.GradleException +import org.gradle.api.artifacts.result.ResolvedComponentResult +import org.gradle.api.artifacts.result.ResolvedDependencyResult +import org.gradle.api.internal.artifacts.DefaultProjectComponentIdentifier +import org.gradle.api.internal.artifacts.configurations.ResolveConfigurationDependenciesBuildOperationType +import org.gradle.api.logging.Logging +import org.gradle.internal.exceptions.DefaultMultiCauseException +import org.gradle.internal.operations.BuildOperationDescriptor +import org.gradle.internal.operations.BuildOperationListener +import org.gradle.internal.operations.OperationFinishEvent +import org.gradle.internal.operations.OperationIdentifier +import org.gradle.internal.operations.OperationProgressEvent +import org.gradle.internal.operations.OperationStartEvent +import org.nixos.gradle2nix.PARAM_INCLUDE_CONFIGURATIONS +import org.nixos.gradle2nix.PARAM_INCLUDE_PROJECTS +import org.nixos.gradle2nix.PARAM_REPORT_DIR +import org.nixos.gradle2nix.dependencygraph.DependencyGraphRenderer +import org.nixos.gradle2nix.dependencygraph.model.DependencyCoordinates +import org.nixos.gradle2nix.dependencygraph.model.DependencySource +import org.nixos.gradle2nix.dependencygraph.model.Repository +import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration +import org.nixos.gradle2nix.dependencygraph.model.ResolvedDependency +import org.nixos.gradle2nix.dependencygraph.util.loadOptionalParam + +abstract class DependencyExtractor : + BuildOperationListener, + AutoCloseable { + + private val resolvedConfigurations = Collections.synchronizedList(mutableListOf()) + + private val thrownExceptions = Collections.synchronizedList(mutableListOf()) + + var rootProjectBuildDirectory: File? = null + + // Properties are lazily initialized so that System Properties are initialized by the time + // the values are used. This is required due to a bug in older Gradle versions. (https://github.com/gradle/gradle/issues/6825) + private val configurationFilter by lazy { + ResolvedConfigurationFilter( + loadOptionalParam(PARAM_INCLUDE_PROJECTS), + loadOptionalParam(PARAM_INCLUDE_CONFIGURATIONS) + ) + } + + private val dependencyGraphReportDir by lazy { + loadOptionalParam(PARAM_REPORT_DIR) + } + + abstract fun getRendererClassName(): String + + override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) { + // This method will never be called when registered in a `BuildServiceRegistry` (ie. Gradle 6.1 & higher) + // No-op + } + + override fun progress(operationIdentifier: OperationIdentifier, progressEvent: OperationProgressEvent) { + // This method will never be called when registered in a `BuildServiceRegistry` (ie. Gradle 6.1 & higher) + // No-op + } + + override fun finished(buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent) { + handleBuildOperationType< + ResolveConfigurationDependenciesBuildOperationType.Details, + ResolveConfigurationDependenciesBuildOperationType.Result + >(buildOperation, finishEvent) { details, result -> extractConfigurationDependencies(details, result) } + } + + private inline fun handleBuildOperationType( + buildOperation: BuildOperationDescriptor, + finishEvent: OperationFinishEvent, + handler: (details: D, result: R) -> Unit + ) { + try { + handleBuildOperationTypeRaw(buildOperation, finishEvent, handler) + } catch (e: Throwable) { + thrownExceptions.add(e) + throw e + } + } + + private inline fun handleBuildOperationTypeRaw( + buildOperation: BuildOperationDescriptor, + finishEvent: OperationFinishEvent, + handler: (details: D, result: R) -> Unit + ) { + val details: D? = buildOperation.details.let { + if (it is D) it else null + } + val result: R? = finishEvent.result.let { + if (it is R) it else null + } + if (details == null && result == null) { + return + } else if (details == null || result == null) { + throw IllegalStateException("buildOperation.details & finishedEvent.result were unexpected types") + } + handler(details, result) + } + + private fun extractConfigurationDependencies( + details: ResolveConfigurationDependenciesBuildOperationType.Details, + result: ResolveConfigurationDependenciesBuildOperationType.Result + ) { + val repositories = details.repositories?.mapNotNull { + @Suppress("UNCHECKED_CAST") + Repository( + id = it.id, + type = enumValueOf(it.type), + name = it.name, + m2Compatible = it.type == "MAVEN" || (it.properties["M2_COMPATIBLE"] as? Boolean) ?: false, + metadataSources = (it.properties["METADATA_SOURCES"] as? List) ?: emptyList(), + metadataResources = metadataResources(it), + artifactResources = artifactResources(it), + ) + } ?: emptyList() + val rootComponent = result.rootComponent + + if (rootComponent.dependencies.isEmpty()) { + // No dependencies to extract: can safely ignore + return + } + val projectIdentityPath = (rootComponent.id as? DefaultProjectComponentIdentifier)?.identityPath?.path + + // TODO: At this point, any resolution not bound to a particular project will be assigned to the root "build :" + // This is because `details.buildPath` is always ':', which isn't correct in a composite build. + // It is possible to do better. By tracking the current build operation context, we can assign more precisely. + // See the Gradle Enterprise Build Scan Plugin: `ConfigurationResolutionCapturer_5_0` + val rootPath = projectIdentityPath ?: details.buildPath + + if (!configurationFilter.include(rootPath, details.configurationName)) { + LOGGER.debug("Ignoring resolved configuration: $rootPath - ${details.configurationName}") + return + } + + val rootId = if (projectIdentityPath == null) "build $rootPath" else componentId(rootComponent) + val rootSource = DependencySource(rootId, rootPath) + val resolvedConfiguration = ResolvedConfiguration(rootSource, details.configurationName, repositories) + + for (directDependency in getResolvedDependencies(rootComponent)) { + val directDep = createComponentNode( + componentId(directDependency), + rootSource, + true, + directDependency, + result.getRepositoryId(directDependency) + ) + resolvedConfiguration.addDependency(directDep) + + walkComponentDependencies(result, directDependency, directDep.source, resolvedConfiguration) + } + + resolvedConfigurations.add(resolvedConfiguration) + } + + private fun walkComponentDependencies( + result: ResolveConfigurationDependenciesBuildOperationType.Result, + component: ResolvedComponentResult, + parentSource: DependencySource, + resolvedConfiguration: ResolvedConfiguration + ) { + val componentSource = getSource(component, parentSource) + val direct = componentSource != parentSource + + val dependencyComponents = getResolvedDependencies(component) + for (dependencyComponent in dependencyComponents) { + val dependencyId = componentId(dependencyComponent) + if (!resolvedConfiguration.hasDependency(dependencyId)) { + val dependencyNode = createComponentNode( + dependencyId, + componentSource, + direct, + dependencyComponent, + result.getRepositoryId(component) + ) + resolvedConfiguration.addDependency(dependencyNode) + + walkComponentDependencies(result, dependencyComponent, componentSource, resolvedConfiguration) + } + } + } + + private fun getSource(component: ResolvedComponentResult, source: DependencySource): DependencySource { + val componentId = component.id + if (componentId is DefaultProjectComponentIdentifier) { + return DependencySource(componentId(component), componentId.identityPath.path) + } + return source + } + + private fun getResolvedDependencies(component: ResolvedComponentResult): List { + return component.dependencies.filterIsInstance().map { it.selected }.filter { it != component } + } + + private fun createComponentNode(componentId: String, source: DependencySource, direct: Boolean, component: ResolvedComponentResult, repositoryId: String?): ResolvedDependency { + val componentDependencies = component.dependencies.filterIsInstance().map { componentId(it.selected) } + return ResolvedDependency( + componentId, + source, + direct, + coordinates(component), + repositoryId, + componentDependencies + ) + } + + private fun componentId(component: ResolvedComponentResult): String { + return component.id.displayName + } + + private fun coordinates(component: ResolvedComponentResult): DependencyCoordinates { + // TODO: Consider and handle null moduleVersion + val moduleVersionIdentifier = component.moduleVersion!! + return DependencyCoordinates( + moduleVersionIdentifier.group, + moduleVersionIdentifier.name, + moduleVersionIdentifier.version + ) + } + + private fun writeDependencyGraph() { + val outputDirectory = getOutputDir() + outputDirectory.mkdirs() + createRenderer().outputDependencyGraph(resolvedConfigurations, outputDirectory) + LOGGER.info("Wrote dependency graph to ${getOutputDir()}") + } + + private fun createRenderer(): DependencyGraphRenderer { + LOGGER.info("Constructing renderer: ${getRendererClassName()}") + return Class.forName(getRendererClassName()).getDeclaredConstructor().newInstance() as DependencyGraphRenderer + } + + private fun getOutputDir(): File { + if (dependencyGraphReportDir != null) { + return File(dependencyGraphReportDir!!) + } + + if (rootProjectBuildDirectory == null) { + throw RuntimeException("Cannot determine report file location") + } + return File( + rootProjectBuildDirectory, + "reports/nix-dependency-graph" + ) + } + + override fun close() { + if (thrownExceptions.isNotEmpty()) { + throw DefaultMultiCauseException( + "The Gradle2Nix plugin encountered errors while extracting dependencies. " + + "Please report this issue at: https://github.com/tadfisher/gradle2nix/issues", + thrownExceptions + ) + } + try { + writeDependencyGraph() + } catch (e: RuntimeException) { + throw GradleException( + "The Gradle2Nix plugin encountered errors while writing the dependency snapshot json file. " + + "Please report this issue at: https://github.com/tadfisher/gradle2nix/issues", + e + ) + } + } + + companion object { + private val LOGGER = Logging.getLogger(DependencyExtractor::class.java) + + private const val M2_PATTERN = + "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier])(.[ext])" + + private const val IVY_ARTIFACT_PATTERN = "[organisation]/[module]/[revision]/[type]s/[artifact](.[ext])"; + + private fun resources(urls: List, patterns: List): List { + if (urls.isEmpty()) { + return patterns + } + if (patterns.isEmpty()) { + return urls.map { it.toString() } + } + return mutableListOf().apply { + for (pattern in patterns) { + for (url in urls) { + add( + url.toString() + .removeSuffix("/") + .plus("/") + .plus(pattern.removePrefix("/")) + ) + } + } + } + } + + private fun metadataResources( + repository: ResolveConfigurationDependenciesBuildOperationType.Repository + ): List { + return when (repository.type) { + Repository.Type.MAVEN.name -> { + resources( + listOfNotNull(repository.properties["URL"] as? URI), + listOf(M2_PATTERN) + ) + } + Repository.Type.IVY.name -> { + @Suppress("UNCHECKED_CAST") + resources( + listOfNotNull(repository.properties["URL"] as? URI), + repository.properties["IVY_PATTERNS"] as? List ?: listOf(IVY_ARTIFACT_PATTERN) + ) + } + else -> emptyList() + } + } + + private fun artifactResources( + repository: ResolveConfigurationDependenciesBuildOperationType.Repository + ): List { + return when (repository.type) { + Repository.Type.MAVEN.name -> { + @Suppress("UNCHECKED_CAST") + resources( + listOfNotNull(repository.properties["URL"] as? URI) + .plus(repository.properties["ARTIFACT_URLS"] as? List ?: emptyList()), + listOf(M2_PATTERN) + ) + } + Repository.Type.IVY.name -> { + @Suppress("UNCHECKED_CAST") + resources( + listOfNotNull(repository.properties["URL"] as? URI), + repository.properties["ARTIFACT_PATTERNS"] as? List ?: listOf(IVY_ARTIFACT_PATTERN) + ) + } + else -> emptyList() + } + } + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt new file mode 100644 index 0000000..5f3c7bd --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt @@ -0,0 +1,19 @@ +package org.nixos.gradle2nix.dependencygraph.extractor + +import org.gradle.api.provider.Property +import org.gradle.api.services.BuildService +import org.gradle.api.services.BuildServiceParameters + +abstract class DependencyExtractorBuildService : + DependencyExtractor(), + BuildService +{ + // Some parameters for the web server + internal interface Params : BuildServiceParameters { + val rendererClassName: Property + } + + override fun getRendererClassName(): String { + return parameters.rendererClassName.get() + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/LegacyDependencyExtractor.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/LegacyDependencyExtractor.kt new file mode 100644 index 0000000..92dd5ea --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/LegacyDependencyExtractor.kt @@ -0,0 +1,10 @@ +package org.nixos.gradle2nix.dependencygraph.extractor + +open class LegacyDependencyExtractor( + private val rendererClassName: String +) : DependencyExtractor() { + + override fun getRendererClassName(): String { + return rendererClassName + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/ResolvedConfigurationFilter.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/ResolvedConfigurationFilter.kt new file mode 100644 index 0000000..5cbd4af --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/ResolvedConfigurationFilter.kt @@ -0,0 +1,16 @@ +package org.nixos.gradle2nix.dependencygraph.extractor + +class ResolvedConfigurationFilter(projectFilter: String?, configurationFilter: String?) { + val projectRegex = projectFilter?.toRegex() + val configurationRegex = configurationFilter?.toRegex() + + fun include(projectPath: String, configurationName: String): Boolean { + if (projectRegex != null && !projectRegex.matches(projectPath)) { + return false + } + if (configurationRegex != null && !configurationRegex.matches(configurationName)) { + return false + } + return true + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt new file mode 100644 index 0000000..b45d034 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt @@ -0,0 +1,19 @@ +package org.nixos.gradle2nix.dependencygraph.util + +import org.gradle.api.internal.GradleInternal +import org.gradle.api.invocation.Gradle +import org.gradle.api.model.ObjectFactory +import org.gradle.api.provider.ProviderFactory +import org.gradle.internal.operations.BuildOperationListenerManager + +internal abstract class GradleExtensions { + + inline val Gradle.providerFactory: ProviderFactory + get() = service() + + inline val Gradle.buildOperationListenerManager: BuildOperationListenerManager + get() = service() +} + +internal inline fun Gradle.service(): T = + (this as GradleInternal).services.get(T::class.java) diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/PluginParameters.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/PluginParameters.kt new file mode 100644 index 0000000..a889f56 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/PluginParameters.kt @@ -0,0 +1,6 @@ +package org.nixos.gradle2nix.dependencygraph.util + +internal fun loadOptionalParam(envName: String): String? { + return System.getProperty(envName) + ?: System.getenv()[envName] +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt new file mode 100644 index 0000000..e5ade2e --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt @@ -0,0 +1,65 @@ +package org.nixos.gradle2nix + +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.Task +import org.gradle.api.invocation.Gradle +import org.gradle.api.tasks.TaskProvider +import org.gradle.util.GradleVersion +import org.nixos.gradle2nix.forceresolve.LegacyResolveProjectDependenciesTask +import org.nixos.gradle2nix.forceresolve.ResolveProjectDependenciesTask + +// TODO: Rename these + +/** + * Adds a task to resolve all dependencies in a Gradle build tree. + */ +class ForceDependencyResolutionPlugin : Plugin { + override fun apply(gradle: Gradle) { + gradle.projectsEvaluated { + val resolveAllDeps = gradle.rootProject.tasks.register(RESOLVE_ALL_TASK) + + // Depend on "dependencies" task in all projects + gradle.allprojects { project -> + val projectTaskFactory = getResolveProjectDependenciesTaskFactory() + val resolveProjectDeps = projectTaskFactory.create(project) + resolveAllDeps.configure { + it.dependsOn(resolveProjectDeps) + } + } + + // Depend on all 'resolveBuildDependencies' task in each included build + gradle.includedBuilds.forEach { includedBuild -> + resolveAllDeps.configure { + it.dependsOn(includedBuild.task(":$RESOLVE_ALL_TASK")) + } + } + } + } + + private fun getResolveProjectDependenciesTaskFactory(): ResolveProjectDependenciesTaskFactory { + val gradleVersion = GradleVersion.current() + val gradle8 = GradleVersion.version("8.0") + return if (gradleVersion >= gradle8) { + ResolveProjectDependenciesTaskFactory.Current + } else { + ResolveProjectDependenciesTaskFactory.Legacy + } + } + + private sealed interface ResolveProjectDependenciesTaskFactory { + fun create(project: Project): TaskProvider + + data object Current : ResolveProjectDependenciesTaskFactory { + override fun create(project: Project): TaskProvider { + return project.tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTask::class.java) + } + } + + data object Legacy : ResolveProjectDependenciesTaskFactory { + override fun create(project: Project): TaskProvider { + return project.tasks.register(RESOLVE_PROJECT_TASK, LegacyResolveProjectDependenciesTask::class.java) + } + } + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt new file mode 100644 index 0000000..cae57d0 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt @@ -0,0 +1,20 @@ +package org.nixos.gradle2nix.forceresolve + +import org.gradle.api.DefaultTask +import org.gradle.api.artifacts.Configuration +import org.gradle.api.tasks.TaskAction +import org.gradle.work.DisableCachingByDefault + +@DisableCachingByDefault(because = "Not worth caching") +abstract class LegacyResolveProjectDependenciesTask: DefaultTask() { + private fun getReportableConfigurations(): List { + return project.configurations.filter { it.isCanBeResolved } + } + + @TaskAction + fun action() { + for (configuration in getReportableConfigurations()) { + configuration.incoming.resolutionResult.root + } + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt new file mode 100644 index 0000000..5747b21 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt @@ -0,0 +1,31 @@ +package org.nixos.gradle2nix.forceresolve + +import org.gradle.api.DefaultTask +import org.gradle.api.artifacts.Configuration +import org.gradle.api.artifacts.result.ResolvedComponentResult +import org.gradle.api.provider.Provider +import org.gradle.api.tasks.TaskAction +import org.gradle.internal.serialization.Cached +import org.gradle.work.DisableCachingByDefault + +@DisableCachingByDefault(because = "Not worth caching") +abstract class ResolveProjectDependenciesTask: DefaultTask() { + private val configurationResolvers = Cached.of { createConfigurationResolvers() } + + private fun createConfigurationResolvers(): List> { + return getReportableConfigurations().map { + it.incoming.resolutionResult.rootComponent + } + } + + private fun getReportableConfigurations(): List { + return project.configurations.filter { it.isCanBeResolved } + } + + @TaskAction + fun action() { + for (configuration in configurationResolvers.get()) { + configuration.get() + } + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 4376732..dd7323f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,44 +1,16 @@ @file:Suppress("UnstableApiUsage") -enableFeaturePreview("ONE_LOCKFILE_PER_PROJECT") - -pluginManagement { - val shadowVersion: String by settings - val stutterVersion: String by settings - - resolutionStrategy { - eachPlugin { - when (requested.id.id) { - "com.github.johnrengelman.shadow" -> useVersion(shadowVersion) - "org.ajoberstar.stutter" -> useVersion(stutterVersion) - } - when (requested.id.namespace) { - "org.jetbrains.kotlin", - "org.jetbrains.kotlin.plugin" -> useVersion(embeddedKotlinVersion) - } - } - } -} - -plugins { - kotlin("jvm") apply false - kotlin("kapt") apply false - id("com.github.johnrengelman.shadow") apply false - id("org.ajoberstar.stutter") apply false -} - dependencyResolutionManagement { repositories { - jcenter() + mavenCentral() + gradlePluginPortal() maven { url = uri("https://repo.gradle.org/gradle/libs-releases") } } - repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) -} - -buildscript { - configurations.classpath { - resolutionStrategy.activateDependencyLocking() - } + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) } -include(":app", ":ivy", ":model", ":plugin") +include( + ":app", + ":model", + ":plugin", +) From b152ca50f274119312d87e7f22f19005849a72f6 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 6 Oct 2023 16:19:32 -0700 Subject: [PATCH 02/34] Cleanup build --- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 2 + build.gradle.kts | 2 - .../settings-classpath.lockfile | 52 ------------------- gradle/libs.versions.toml | 18 ------- model/build.gradle.kts | 1 - .../gradle2nix/NixDependencyGraphRenderer.kt | 8 ++- .../AbstractDependencyExtractorPlugin.kt | 3 +- .../dependencygraph/util/GradleExtensions.kt | 11 ++++ 8 files changed, 22 insertions(+), 75 deletions(-) delete mode 100644 gradle/dependency-locks/settings-classpath.lockfile diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index 921ac1b..488f48f 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -133,6 +133,8 @@ class Gradle2Nix : CliktCommand( metadata.delete() backup.renameTo(metadata) }) + } else { + metadata.deleteOnExit() } } diff --git a/build.gradle.kts b/build.gradle.kts index 23cfb74..1193cf2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,10 +2,8 @@ plugins { base alias(libs.plugins.kotlin.jvm) apply false alias(libs.plugins.kotlin.serialization) apply false - alias(libs.plugins.ksp) apply false alias(libs.plugins.pluginPublish) apply false alias(libs.plugins.shadow) apply false - alias(libs.plugins.stutter) apply false } group = "org.nixos.gradle2nix" diff --git a/gradle/dependency-locks/settings-classpath.lockfile b/gradle/dependency-locks/settings-classpath.lockfile deleted file mode 100644 index 70eac8e..0000000 --- a/gradle/dependency-locks/settings-classpath.lockfile +++ /dev/null @@ -1,52 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.fasterxml.jackson.core:jackson-annotations:2.12.1 -com.fasterxml.jackson.core:jackson-core:2.12.1 -com.fasterxml.jackson.core:jackson-databind:2.12.1 -com.fasterxml.jackson:jackson-bom:2.12.1 -com.github.gundy:semver4j:0.16.4 -com.github.jengelman.gradle.plugins:shadow:6.1.0 -com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:6.1.0 -com.google.code.gson:gson:2.8.6 -commons-io:commons-io:2.6 -de.undercouch:gradle-download-task:4.0.2 -org.ajoberstar.stutter:org.ajoberstar.stutter.gradle.plugin:0.6.0 -org.ajoberstar:gradle-stutter:0.6.0 -org.antlr:antlr4-runtime:4.5.2-1 -org.apache.ant:ant-launcher:1.9.7 -org.apache.ant:ant:1.9.7 -org.apache.logging.log4j:log4j-api:2.13.3 -org.apache.logging.log4j:log4j-core:2.13.3 -org.codehaus.plexus:plexus-utils:3.0.24 -org.jdom:jdom2:2.0.6 -org.jetbrains.intellij.deps:trove4j:1.0.20181211 -org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.4.20 -org.jetbrains.kotlin.kapt:org.jetbrains.kotlin.kapt.gradle.plugin:1.4.20 -org.jetbrains.kotlin:kotlin-android-extensions:1.4.20 -org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.4.20 -org.jetbrains.kotlin:kotlin-build-common:1.4.20 -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.20 -org.jetbrains.kotlin:kotlin-compiler-runner:1.4.20 -org.jetbrains.kotlin:kotlin-daemon-client:1.4.20 -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.4.20 -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.4.20 -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.4.20 -org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.20 -org.jetbrains.kotlin:kotlin-reflect:1.4.20 -org.jetbrains.kotlin:kotlin-script-runtime:1.4.20 -org.jetbrains.kotlin:kotlin-scripting-common:1.4.20 -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.4.20 -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.4.20 -org.jetbrains.kotlin:kotlin-scripting-jvm:1.4.20 -org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20 -org.jetbrains.kotlin:kotlin-stdlib:1.4.20 -org.jetbrains.kotlin:kotlin-util-io:1.4.20 -org.jetbrains.kotlin:kotlin-util-klib:1.4.20 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7 -org.jetbrains:annotations:13.0 -org.ow2.asm:asm-analysis:9.0 -org.ow2.asm:asm-commons:9.0 -org.ow2.asm:asm-tree:9.0 -org.ow2.asm:asm:9.0 -org.vafer:jdependency:2.1.1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ffd526f..e9be1d9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,43 +1,25 @@ [versions] gradle = "8.3" kotlin = "1.9.0" # Current embedded Gradle kotlin version -ksp = "1.9.0-1.0.13" [libraries] clikt = "com.github.ajalt:clikt:+" -gradle-dependencyGraph = "org.gradle:github-dependency-graph-gradle-plugin:+" gradle-toolingApi = { module = "org.gradle:gradle-tooling-api", version.ref = "gradle" } -ivy = "org.apache.ivy:ivy:+" -javalin = "io.javalin:javalin:+" junit-jupiter-api = "org.junit.jupiter:junit-jupiter-api:+" junit-jupiter-engine = "org.junit.jupiter:junit-jupiter-engine:+" junit-jupiter-params = "org.junit.jupiter:junit-jupiter-params:+" junit-platformLauncher = "org.junit.platform:junit-platform-launcher:+" kotest-runner = "io.kotest:kotest-runner-junit5:+" kotest-assertions = "io.kotest:kotest-assertions-core:+" -maven-repositoryMetadata = "org.apache.maven:maven-repository-metadata:+" -minutest = "dev.minutest:minutest:+" -moshi = "com.squareup.moshi:moshi:+" -moshi-adapters = "com.squareup.moshi:moshi-adapters:+" -moshi-kotlin = "com.squareup.moshi:moshi-kotlin:+" -moshi-kotlinCodegen = "com.squareup.moshi:moshi-kotlin-codegen:+" okio = "com.squareup.okio:okio:+" -s3 = "com.amazonaws:aws-java-sdk-s3:+" -s3mock = "com.adobe.testing:s3mock-junit5:+" -semver = "net.swiftzer.semver:semver:+" serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:+" slf4j-api = "org.slf4j:slf4j-api:+" slf4j-simple = "org.slf4j:slf4j-simple:+" -spek-dsl = "org.spekframework.spek2:spek-dsl-jvm:+" -spek-runner = "org.spekframework.spek2:spek-runner-junit5:+" -strikt = "io.strikt:strikt-core:+" [plugins] pluginPublish = { id = "com.gradle.plugin-publish", version = "1.2.1" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } -ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } shadow = { id = "com.github.johnrengelman.shadow", version = "8.1.1" } -stutter = { id = "org.ajoberstar.stutter", version = "0.7.2" } [bundles] diff --git a/model/build.gradle.kts b/model/build.gradle.kts index b12db2a..8946155 100644 --- a/model/build.gradle.kts +++ b/model/build.gradle.kts @@ -7,7 +7,6 @@ plugins { dependencies { implementation(libs.serialization.json) - implementation(libs.semver) } java { diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt index 2f23bbd..997c92f 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt @@ -7,6 +7,12 @@ import kotlinx.serialization.json.encodeToStream import org.nixos.gradle2nix.dependencygraph.DependencyGraphRenderer import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration +@OptIn(ExperimentalSerializationApi::class) +private val json = Json { + prettyPrint = true + prettyPrintIndent = " " +} + class NixDependencyGraphRenderer : DependencyGraphRenderer { @OptIn(ExperimentalSerializationApi::class) override fun outputDependencyGraph( @@ -15,7 +21,7 @@ class NixDependencyGraphRenderer : DependencyGraphRenderer { ) { val graphOutputFile = File(outputDirectory, "dependency-graph.json") graphOutputFile.outputStream().buffered().use { output -> - Json.encodeToStream(resolvedConfigurations, output) + json.encodeToStream(resolvedConfigurations, output) } } } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt index 427b1e7..6aa4352 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt @@ -8,6 +8,7 @@ import org.gradle.util.GradleVersion import org.nixos.gradle2nix.dependencygraph.extractor.DependencyExtractor import org.nixos.gradle2nix.dependencygraph.extractor.DependencyExtractorBuildService import org.nixos.gradle2nix.dependencygraph.extractor.LegacyDependencyExtractor +import org.nixos.gradle2nix.dependencygraph.util.buildDirCompat import org.nixos.gradle2nix.dependencygraph.util.service abstract class AbstractDependencyExtractorPlugin : Plugin { @@ -35,7 +36,7 @@ abstract class AbstractDependencyExtractorPlugin : Plugin { gradle.rootProject { project -> dependencyExtractorProvider .get() - .rootProjectBuildDirectory = project.buildDir + .rootProjectBuildDirectory = project.buildDirCompat } // Register the service to listen for Build Events diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt index b45d034..c9d65ef 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt @@ -1,10 +1,13 @@ package org.nixos.gradle2nix.dependencygraph.util +import java.io.File +import org.gradle.api.Project import org.gradle.api.internal.GradleInternal import org.gradle.api.invocation.Gradle import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ProviderFactory import org.gradle.internal.operations.BuildOperationListenerManager +import org.gradle.util.GradleVersion internal abstract class GradleExtensions { @@ -17,3 +20,11 @@ internal abstract class GradleExtensions { internal inline fun Gradle.service(): T = (this as GradleInternal).services.get(T::class.java) + +internal val Project.buildDirCompat: File + get() = if (GradleVersion.current() < GradleVersion.version("8.3")) { + @Suppress("DEPRECATION") + buildDir + } else { + layout.buildDirectory.asFile.get() + } From 689a6a209021c09a62d27b800b8feeb949f9615d Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 6 Oct 2023 16:23:59 -0700 Subject: [PATCH 03/34] Skip project dependencies --- app/src/main/kotlin/org/nixos/gradle2nix/Process.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt index 1b6b1e2..c8b61ec 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -52,6 +52,7 @@ fun processDependencies(config: Config): Map> { .flatMap { it.allDependencies.asSequence() } .groupBy { it.id } .mapNotNull { (id, dependencies) -> + if (id.startsWith("project ")) return@mapNotNull null val deps = dependencies.toSet() if (deps.isEmpty()) { config.logger.warn("$id: no resolved dependencies in dependency graph") From f618923fd034d635ee4408364d0fab210253c3ab Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 6 Oct 2023 16:48:24 -0700 Subject: [PATCH 04/34] Fix golden data for projects using local M2 dir --- .../kotlin/org/nixos/gradle2nix/Process.kt | 25 ++++++++++++++++++- .../kotlin/org/nixos/gradle2nix/GoldenTest.kt | 3 ++- .../dependency/snapshot/groovy/build.gradle | 2 +- .../dependency/snapshot-dynamic.groovy.json | 12 +++++++++ .../dependency/snapshot-dynamic.kotlin.json | 12 +++++++++ .../golden/dependency/snapshot.groovy.json | 14 +++++++++++ .../golden/dependency/snapshot.kotlin.json | 14 +++++++++++ 7 files changed, 79 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt index c8b61ec..a45fd19 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -1,6 +1,8 @@ package org.nixos.gradle2nix import java.io.File +import java.io.FileFilter +import java.net.URI import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream @@ -66,6 +68,7 @@ fun processDependencies(config: Config): Map> { ) val metadata = verifier.verificationMetadata[componentId] ?: verifyComponentFilesInCache(config, componentId) + ?: verifyComponentFilesInTestRepository(config, componentId) if (metadata == null) { config.logger.warn("$id: not present in metadata or cache; skipping") return@mapNotNull null @@ -117,7 +120,7 @@ private fun verifyComponentFilesInCache( if (!cacheDir.exists()) { return null } - val verifications = cacheDir.walkBottomUp().filter { it.isFile }.map { f -> + val verifications = cacheDir.walk().filter { it.isFile }.map { f -> ArtifactVerificationMetadata( f.name, listOf(Checksum(ChecksumKind.sha256, f.sha256())) @@ -127,6 +130,26 @@ private fun verifyComponentFilesInCache( return ComponentVerificationMetadata(component, verifications.toList()) } +private fun verifyComponentFilesInTestRepository( + config: Config, + component: ModuleComponentIdentifier +): ComponentVerificationMetadata? { + if (m2 == null) return null + val dir = File(URI.create(m2)).resolve("${component.group.replace(".", "/")}/${component.module}/${component.version}") + if (!dir.exists()) { + config.logger.log("$component: not found in m2 repository; tried $dir") + return null + } + val verifications = dir.walk().filter { it.isFile && it.name.startsWith(component.module) }.map { f -> + ArtifactVerificationMetadata( + f.name, + listOf(Checksum(ChecksumKind.sha256, f.sha256())) + ) + } + config.logger.log("$component: obtained artifact hashes from test Maven repository.") + return ComponentVerificationMetadata(component, verifications.toList()) +} + private fun File.sha256(): String { val source = HashingSource.sha256(source()) source.buffer().readAll(blackholeSink()) diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt b/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt index 7beaf76..b5ce104 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt @@ -26,7 +26,8 @@ class GoldenTest : FunSpec({ context("plugin") { golden("plugin/resolves-from-default-repo") } - context("s3") { + // FIXME Need s3mock or similar to generate golden data. + xcontext("s3") { golden("s3/maven") golden("s3/maven-snapshot") } diff --git a/fixtures/dependency/snapshot/groovy/build.gradle b/fixtures/dependency/snapshot/groovy/build.gradle index a752a63..e7c8a38 100644 --- a/fixtures/dependency/snapshot/groovy/build.gradle +++ b/fixtures/dependency/snapshot/groovy/build.gradle @@ -3,7 +3,7 @@ plugins { } repositories { - maven { url = uri("file:/../../../../") } + maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } } dependencies { diff --git a/fixtures/golden/dependency/snapshot-dynamic.groovy.json b/fixtures/golden/dependency/snapshot-dynamic.groovy.json index 7a73a41..61621f4 100644 --- a/fixtures/golden/dependency/snapshot-dynamic.groovy.json +++ b/fixtures/golden/dependency/snapshot-dynamic.groovy.json @@ -1,2 +1,14 @@ { + "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": { + "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { + "urls": [ + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { + "urls": [ + ], + "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" + } + } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json index 7a73a41..61621f4 100644 --- a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json +++ b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json @@ -1,2 +1,14 @@ { + "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": { + "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { + "urls": [ + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { + "urls": [ + ], + "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" + } + } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot.groovy.json b/fixtures/golden/dependency/snapshot.groovy.json index 7a73a41..9485cd5 100644 --- a/fixtures/golden/dependency/snapshot.groovy.json +++ b/fixtures/golden/dependency/snapshot.groovy.json @@ -1,2 +1,16 @@ { + "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": { + "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" + ], + "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" + } + } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot.kotlin.json b/fixtures/golden/dependency/snapshot.kotlin.json index 7a73a41..9485cd5 100644 --- a/fixtures/golden/dependency/snapshot.kotlin.json +++ b/fixtures/golden/dependency/snapshot.kotlin.json @@ -1,2 +1,16 @@ { + "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": { + "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" + ], + "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" + } + } } \ No newline at end of file From ba088f5bc60ab23762859e379cfea5d797d95dea Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Tue, 10 Oct 2023 10:52:04 -0700 Subject: [PATCH 05/34] Add --gradle-jdk argument --- app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt | 3 +++ app/src/main/kotlin/org/nixos/gradle2nix/Main.kt | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt index a0368e8..d1fd211 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt @@ -23,6 +23,9 @@ fun ProjectConnection.build( } else { forTasks(RESOLVE_ALL_TASK) } + if (config.gradleJdk != null) { + setJavaHome(config.gradleJdk) + } addArguments(config.gradleArgs) addArguments( "--init-script=${config.appHome}/init.gradle", diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index 488f48f..9580351 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -20,6 +20,7 @@ data class Config( val appHome: File, val gradleHome: File, val gradleVersion: String?, + val gradleJdk: File?, val gradleArgs: List, val projectFilter: String?, val configurationFilter: String?, @@ -43,6 +44,12 @@ class Gradle2Nix : CliktCommand( help = "Use a specific Gradle version" ) + private val gradleJdk: File? by option( + "--gradle-jdk", "-j", + metavar = "DIR", + help = "JDK home directory to use for launching Gradle (default: ${System.getProperty("java.home")})" + ).file(canBeFile = false, canBeDir = true) + private val projectFilter: String? by option( "--projects", "-p", metavar = "REGEX", @@ -115,6 +122,7 @@ class Gradle2Nix : CliktCommand( File(appHome), gradleHome, gradleVersion, + gradleJdk, gradleArgs, projectFilter, configurationFilter, From 121e512a06eb46965f08e18bc05a4645c515b642 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Wed, 11 Oct 2023 13:29:21 -0700 Subject: [PATCH 06/34] Update metadata parsing --- app/build.gradle.kts | 1 + .../kotlin/org/nixos/gradle2nix/Logger.kt | 34 +- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 12 +- .../kotlin/org/nixos/gradle2nix/Process.kt | 137 +- .../dependency/ComponentArtifactIdentifier.kt | 31 - .../dependency/ComponentIdentifier.kt | 28 - .../ModuleComponentArtifactIdentifier.kt | 40 - .../dependency/ModuleComponentIdentifier.kt | 76 - .../gradle2nix/dependency/ModuleIdentifier.kt | 40 - .../metadata/ArtifactVerificationMetadata.kt | 6 - .../org/nixos/gradle2nix/metadata/Checksum.kt | 43 - .../nixos/gradle2nix/metadata/ChecksumKind.kt | 30 - .../metadata/ComponentVerificationMetadata.kt | 8 - .../DependencyVerificationConfiguration.kt | 98 - .../metadata/DependencyVerificationXmlTags.kt | 48 - .../DependencyVerificationsXmlReader.kt | 421 -- .../gradle2nix/metadata/DependencyVerifier.kt | 23 - .../metadata/DependencyVerifierBuilder.kt | 162 - .../metadata/VerificationMetadata.kt | 142 + .../nixos/gradle2nix/module/GradleModule.kt | 102 + .../kotlin/org/nixos/gradle2nix/TestUtil.kt | 6 + .../gradle2nix/VerificationMetadataTest.kt | 17 + fixtures/metadata/verification-metadata.xml | 5292 +++++++++++++++++ flake.lock | 30 +- gradle/libs.versions.toml | 3 +- .../nixos/gradle2nix/DependencyCoordinates.kt | 4 +- plugin/build.gradle.kts | 2 - .../org/nixos/gradle2nix/Gradle2NixPlugin.kt | 1 + .../ForceDependencyResolutionPlugin.kt | 6 +- 29 files changed, 5708 insertions(+), 1135 deletions(-) delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentArtifactIdentifier.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentIdentifier.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentArtifactIdentifier.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentIdentifier.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleIdentifier.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/ArtifactVerificationMetadata.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/Checksum.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/ChecksumKind.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/ComponentVerificationMetadata.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationConfiguration.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationXmlTags.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationsXmlReader.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifier.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifierBuilder.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/module/GradleModule.kt create mode 100644 app/src/test/kotlin/org/nixos/gradle2nix/VerificationMetadataTest.kt create mode 100644 fixtures/metadata/verification-metadata.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 3f194ea..2bb5458 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -17,6 +17,7 @@ dependencies { implementation(libs.slf4j.api) runtimeOnly(libs.slf4j.simple) implementation(libs.okio) + implementation(libs.xmlutil) "share"(project(":plugin", configuration = "shadow")) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt index 9191481..4b13022 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt @@ -5,17 +5,35 @@ import kotlin.system.exitProcess class Logger( val out: PrintStream = System.err, - val verbose: Boolean + val verbose: Boolean, + val stacktrace: Boolean = false ) { - val log: (String) -> Unit = { if (verbose) out.println(it) } - val warn: (String) -> Unit = { out.println("Warning: $it")} - val error: (String) -> Nothing = { - out.println("Error: $it") + fun log(message: String, error: Throwable? = null) { + if (!verbose) return + out.println(message) + if (error == null) return + error.message?.let { println(" Cause: $it") } + if (stacktrace) error.printStackTrace(out) + } + + fun warn(message: String, error: Throwable? = null) { + out.println("Warning: $message") + if (error == null) return + error.message?.let { println(" Cause: $it") } + if (stacktrace) error.printStackTrace(out) + } + + fun error(message: String, error: Throwable? = null): Nothing { + out.println("Error: $message") + if (error != null) { + error.message?.let { println(" Cause: $it") } + if (stacktrace) error.printStackTrace(out) + } exitProcess(1) } - operator fun component1() = log - operator fun component2() = warn - operator fun component3() = error + operator fun component1() = ::log + operator fun component2() = ::warn + operator fun component3() = ::error } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index 9580351..50fd69b 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -30,7 +30,8 @@ data class Config( ) @OptIn(ExperimentalSerializationApi::class) -private val JsonFormat = Json { +val JsonFormat = Json { + ignoreUnknownKeys = true prettyPrint = true prettyPrintIndent = " " } @@ -106,9 +107,6 @@ class Gradle2Nix : CliktCommand( } } - // Visible for testing - lateinit var config: Config - @OptIn(ExperimentalSerializationApi::class) override fun run() { val appHome = System.getProperty("org.nixos.gradle2nix.share") @@ -118,7 +116,7 @@ class Gradle2Nix : CliktCommand( val gradleHome = System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") val logger = Logger(verbose = !quiet) - config = Config( + val config = Config( File(appHome), gradleHome, gradleVersion, @@ -131,8 +129,6 @@ class Gradle2Nix : CliktCommand( logger ) - val (log, _, error) = logger - val metadata = File("$projectDir/gradle/verification-metadata.xml") if (metadata.exists()) { val backup = metadata.resolveSibling("verification-metadata.xml.bak") @@ -158,7 +154,7 @@ class Gradle2Nix : CliktCommand( val outDir = outDir ?: projectDir val json = outDir.resolve("$envFile.json") - log("Writing environment to $json") + logger.log("Writing environment to $json") json.outputStream().buffered().use { output -> JsonFormat.encodeToStream(dependencies, output) } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt index a45fd19..a7de618 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -1,9 +1,12 @@ package org.nixos.gradle2nix +import org.nixos.gradle2nix.metadata.Artifact as ArtifactMetadata import java.io.File -import java.io.FileFilter +import java.io.IOException import java.net.URI +import java.net.URL import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerializationException import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream import okio.ByteString.Companion.decodeHex @@ -11,16 +14,19 @@ import okio.HashingSource import okio.blackholeSink import okio.buffer import okio.source -import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier import org.nixos.gradle2nix.dependencygraph.model.DependencyCoordinates import org.nixos.gradle2nix.dependencygraph.model.Repository import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration -import org.nixos.gradle2nix.metadata.ArtifactVerificationMetadata import org.nixos.gradle2nix.metadata.Checksum -import org.nixos.gradle2nix.metadata.ChecksumKind -import org.nixos.gradle2nix.metadata.ComponentVerificationMetadata -import org.nixos.gradle2nix.metadata.DependencyVerificationsXmlReader -import org.nixos.gradle2nix.metadata.DependencyVerifier +import org.nixos.gradle2nix.metadata.Component +import org.nixos.gradle2nix.metadata.Md5 +import org.nixos.gradle2nix.metadata.Sha1 +import org.nixos.gradle2nix.metadata.Sha256 +import org.nixos.gradle2nix.metadata.Sha512 +import org.nixos.gradle2nix.metadata.VerificationMetadata +import org.nixos.gradle2nix.metadata.parseVerificationMetadata +import org.nixos.gradle2nix.module.GradleModule +import org.nixos.gradle2nix.module.Variant // Local Maven repository for testing private val m2 = System.getProperty("org.nixos.gradle2nix.m2") @@ -31,7 +37,11 @@ private fun shouldSkipRepository(repository: Repository): Boolean { } fun processDependencies(config: Config): Map> { - val verifier = readVerificationMetadata(config) + val verificationMetadata = readVerificationMetadata(config) + val verificationComponents = verificationMetadata?.components?.associateBy { + DependencyCoordinates(it.group, it.name, it.version) + } ?: emptyMap() + val moduleCache = mutableMapOf() val configurations = readDependencyGraph(config) val repositories = configurations @@ -61,15 +71,10 @@ fun processDependencies(config: Config): Map> { return@mapNotNull null } val coordinates = deps.first().coordinates - val componentId = ModuleComponentIdentifier( - coordinates.group, - coordinates.module, - coordinates.version - ) - val metadata = verifier.verificationMetadata[componentId] - ?: verifyComponentFilesInCache(config, componentId) - ?: verifyComponentFilesInTestRepository(config, componentId) - if (metadata == null) { + val component = verificationComponents[coordinates] + ?: verifyComponentFilesInCache(config, coordinates) + ?: verifyComponentFilesInTestRepository(config, coordinates) + if (component == null) { config.logger.warn("$id: not present in metadata or cache; skipping") return@mapNotNull null } @@ -85,23 +90,25 @@ fun processDependencies(config: Config): Map> { return@mapNotNull null } - id to metadata.artifactVerifications.associate { meta -> - meta.artifactName to Artifact( + val gradleModule = moduleCache.getOrPut(coordinates) { + maybeGetGradleModule(config.logger, coordinates, repos) + } + + id to component.artifacts.associate { meta -> + meta.name to Artifact( urls = repos - .flatMap { repository -> artifactUrls(coordinates, meta, repository) } + .flatMap { repository -> artifactUrls(coordinates, meta.name, repository, gradleModule) } .distinct(), - hash = meta.checksums.maxBy { c -> c.kind.ordinal }.toSri() + hash = meta.checksums.first().toSri() ) } } + .sortedBy { it.first } .toMap() } -private fun readVerificationMetadata(config: Config): DependencyVerifier { - return config.projectDir.resolve("gradle/verification-metadata.xml") - .inputStream() - .buffered() - .use { input -> DependencyVerificationsXmlReader.readFromXml(input) } +private fun readVerificationMetadata(config: Config): VerificationMetadata? { + return parseVerificationMetadata(config.logger, config.projectDir.resolve("gradle/verification-metadata.xml")) } @OptIn(ExperimentalSerializationApi::class) @@ -114,40 +121,58 @@ private fun readDependencyGraph(config: Config): List { private fun verifyComponentFilesInCache( config: Config, - component: ModuleComponentIdentifier -): ComponentVerificationMetadata? { - val cacheDir = config.gradleHome.resolve("caches/modules-2/files-2.1/${component.group}/${component.module}/${component.version}") + coordinates: DependencyCoordinates, +): Component? { + val cacheDir = with(coordinates) { config.gradleHome.resolve("caches/modules-2/files-2.1/$group/$module/$version") } if (!cacheDir.exists()) { return null } val verifications = cacheDir.walk().filter { it.isFile }.map { f -> - ArtifactVerificationMetadata( - f.name, - listOf(Checksum(ChecksumKind.sha256, f.sha256())) - ) + ArtifactMetadata(f.name, sha256 = Sha256(f.sha256())) } - config.logger.log("$component: obtained artifact hashes from Gradle cache.") - return ComponentVerificationMetadata(component, verifications.toList()) + config.logger.log("$coordinates: obtained artifact hashes from Gradle cache.") + return Component(coordinates, verifications.toList()) } private fun verifyComponentFilesInTestRepository( config: Config, - component: ModuleComponentIdentifier -): ComponentVerificationMetadata? { + coordinates: DependencyCoordinates +): Component? { if (m2 == null) return null - val dir = File(URI.create(m2)).resolve("${component.group.replace(".", "/")}/${component.module}/${component.version}") + val dir = with(coordinates) { + File(URI.create(m2)).resolve("${group.replace(".", "/")}/$module/$version") + } if (!dir.exists()) { - config.logger.log("$component: not found in m2 repository; tried $dir") + config.logger.log("$coordinates: not found in m2 repository; tried $dir") return null } - val verifications = dir.walk().filter { it.isFile && it.name.startsWith(component.module) }.map { f -> - ArtifactVerificationMetadata( + val verifications = dir.walk().filter { it.isFile && it.name.startsWith(coordinates.module) }.map { f -> + ArtifactMetadata( f.name, - listOf(Checksum(ChecksumKind.sha256, f.sha256())) + sha256 = Sha256(f.sha256()) ) } - config.logger.log("$component: obtained artifact hashes from test Maven repository.") - return ComponentVerificationMetadata(component, verifications.toList()) + config.logger.log("$coordinates: obtained artifact hashes from test Maven repository.") + return Component(coordinates, verifications.toList()) +} + +@OptIn(ExperimentalSerializationApi::class) +private fun maybeGetGradleModule(logger: Logger, coordinates: DependencyCoordinates, repos: List): GradleModule? { + val filename = with(coordinates) { "$module-$version.module" } + + for (url in repos.flatMap { artifactUrls(coordinates, filename, it, null)}) { + try { + return URL(url).openStream().buffered().use { input -> + JsonFormat.decodeFromStream(input) + } + } catch (e: SerializationException) { + logger.error("$coordinates: failed to parse Gradle module metadata ($url)", e) + } catch (e: IOException) { + // Pass + } + } + + return null } private fun File.sha256(): String { @@ -158,26 +183,34 @@ private fun File.sha256(): String { private fun Checksum.toSri(): String { val hash = value.decodeHex().base64() - return when (kind) { - ChecksumKind.md5 -> "md5-$hash" - ChecksumKind.sha1 -> "sha1-$hash" - ChecksumKind.sha256 -> "sha256-$hash" - ChecksumKind.sha512 -> "sha512-$hash" + return when (this) { + is Md5 -> "md5-$hash" + is Sha1 -> "sha1-$hash" + is Sha256 -> "sha256-$hash" + is Sha512 -> "sha512-$hash" } } private fun artifactUrls( coordinates: DependencyCoordinates, - metadata: ArtifactVerificationMetadata, - repository: Repository + filename: String, + repository: Repository, + module: GradleModule? ): List { val groupAsPath = coordinates.group.replace(".", "/") + val repoFilename = module?.let { m -> + m.variants + .asSequence() + .flatMap(Variant::files) + .find { it.name == filename } + }?.url ?: filename + val attributes = mutableMapOf( "organisation" to if (repository.m2Compatible) groupAsPath else coordinates.group, "module" to coordinates.module, "revision" to coordinates.version, - ) + fileAttributes(metadata.artifactName, coordinates.version) + ) + fileAttributes(repoFilename, coordinates.version) val resources = when (attributes["ext"]) { "pom" -> if ("mavenPom" in repository.metadataSources) repository.metadataResources else repository.artifactResources diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentArtifactIdentifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentArtifactIdentifier.kt deleted file mode 100644 index e4788ee..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentArtifactIdentifier.kt +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2014 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.dependency - -/** - * An opaque immutable identifier for an artifact that belongs to some component instance. - */ -interface ComponentArtifactIdentifier { - /** - * Returns the id of the component that this artifact belongs to. - */ - val componentIdentifier: ComponentIdentifier - - /** - * Returns some human-consumable display name for this artifact. - */ - val displayName: String -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentIdentifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentIdentifier.kt deleted file mode 100644 index 83b0bfc..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ComponentIdentifier.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2013 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.dependency - -/** - * An opaque immutable identifier for a component instance. There are various sub-interfaces that expose specific details about the identifier. - */ -interface ComponentIdentifier { - /** - * Returns a human-consumable display name for this identifier. - * - * @return Component identifier display name - */ - val displayName: String -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentArtifactIdentifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentArtifactIdentifier.kt deleted file mode 100644 index 298284a..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentArtifactIdentifier.kt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2013 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.dependency - -/** - * An immutable identifier for an artifact that belongs to some module version. - */ -interface ModuleComponentArtifactIdentifier : ComponentArtifactIdentifier { - /** - * Returns the id of the component that this artifact belongs to. - */ - override val componentIdentifier: ModuleComponentIdentifier - - /** - * Returns a file base name that can be used for this artifact. - */ - val fileName: String -} - -data class DefaultModuleComponentArtifactIdentifier( - override val componentIdentifier: ModuleComponentIdentifier, - override val fileName: String, -) : ModuleComponentArtifactIdentifier { - override val displayName: String get() = "$fileName ($componentIdentifier)" - - override fun toString(): String = displayName -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentIdentifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentIdentifier.kt deleted file mode 100644 index 8be353b..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleComponentIdentifier.kt +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2013 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.dependency - -/** - * An identifier for a component instance which is available as a module version. - */ -interface ModuleComponentIdentifier : ComponentIdentifier { - /** - * The module group of the component. - * - * @return Component group - */ - val group: String - - /** - * The module name of the component. - * - * @return Component module - */ - val module: String - - /** - * The module version of the component. - * - * @return Component version - */ - val version: String - - /** - * The module identifier of the component. Returns the same information - * as [group] and [module]. - * - * @return the module identifier - */ - val moduleIdentifier: ModuleIdentifier -} - -data class DefaultModuleComponentIdentifier( - override val moduleIdentifier: ModuleIdentifier, - override val version: String, -) : ModuleComponentIdentifier { - override val group: String - get() = moduleIdentifier.group - - override val module: String - get() = moduleIdentifier.name - - override val displayName: String - get() = "$group:$module:$version" - - override fun toString(): String = displayName -} - - -fun ModuleComponentIdentifier( - group: String, - module: String, - version: String -): ModuleComponentIdentifier = DefaultModuleComponentIdentifier( - DefaultModuleIdentifier(group, module), - version -) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleIdentifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleIdentifier.kt deleted file mode 100644 index 5457f3f..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/dependency/ModuleIdentifier.kt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2012 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.dependency - -/** - * The identifier of a module. - */ -interface ModuleIdentifier { - /** - * The group of the module. - * - * @return module group - */ - val group: String - - /** - * The name of the module. - * - * @return module name - */ - val name: String -} - -data class DefaultModuleIdentifier( - override val group: String, - override val name: String, -) : ModuleIdentifier diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ArtifactVerificationMetadata.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ArtifactVerificationMetadata.kt deleted file mode 100644 index ae67531..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ArtifactVerificationMetadata.kt +++ /dev/null @@ -1,6 +0,0 @@ -package org.nixos.gradle2nix.metadata - -data class ArtifactVerificationMetadata( - val artifactName: String, - val checksums: List -) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/Checksum.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/Checksum.kt deleted file mode 100644 index a5c84ef..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/Checksum.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2019 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.metadata - -/** - * Internal representation of a checksum, aimed at *verification*. - * A checksum consists of a kind (md5, sha1, ...), a value, but also - * provides *alternatives*. Alternatives are checksums which are - * deemed trusted, because sometimes in a single build we can see different - * checksums for the same module, because they are sourced from different - * repositories. - * - * In theory, this shouldn't be allowed. However, it's often the case that - * an artifact, in particular _metadata artifacts_ (POM files, ...) differ - * from one repository to the other (either by end of lines, additional line - * at the end of the file, ...). Because they are different doesn't mean that - * they are compromised, so this is a facility for the user to declare "I know - * I should use a single source of truth but the infrastructure is hard or - * impossible to fix so let's trust this source". - * - * In addition to the list of alternatives, a checksum also provides a source, - * which is documentation to explain where a checksum was found. - */ -data class Checksum( - val kind: ChecksumKind, - val value: String, - val alternatives: Set = emptySet(), - val origin: String? = null, - val reason: String? = null -) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ChecksumKind.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ChecksumKind.kt deleted file mode 100644 index 6469cf7..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ChecksumKind.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2019 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.metadata - -enum class ChecksumKind(val algorithm: String) { - md5("MD5"), - sha1("SHA1"), - sha256("SHA-256"), - sha512("SHA-512"); - - companion object { - private val SORTED_BY_SECURITY: List = listOf(sha512, sha256, sha1, md5) - fun mostSecureFirst(): List { - return SORTED_BY_SECURITY - } - } -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ComponentVerificationMetadata.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ComponentVerificationMetadata.kt deleted file mode 100644 index 54e454c..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/ComponentVerificationMetadata.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.nixos.gradle2nix.metadata - -import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier - -data class ComponentVerificationMetadata( - val componentId: ModuleComponentIdentifier, - val artifactVerifications: List, -) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationConfiguration.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationConfiguration.kt deleted file mode 100644 index 8bfbf18..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationConfiguration.kt +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2019 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.metadata - -import org.nixos.gradle2nix.dependency.ModuleComponentArtifactIdentifier -import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier - -class DependencyVerificationConfiguration( - val trustedArtifacts: List = emptyList(), -) { - data class TrustCoordinates internal constructor( - val group: String?, - val name: String?, - val version: String?, - val fileName: String?, - val isRegex: Boolean, - val reason: String? - ) : Comparable { - - fun matches(id: ModuleComponentArtifactIdentifier): Boolean { - val moduleComponentIdentifier: ModuleComponentIdentifier = id.componentIdentifier - return (matches(group, moduleComponentIdentifier.group) - && matches(name, moduleComponentIdentifier.module) - && matches(version, moduleComponentIdentifier.version) - && matches(fileName, id.fileName)) - } - - private fun matches(value: String?, expr: String): Boolean { - if (value == null) { - return true - } - return if (!isRegex) { - expr == value - } else expr.matches(value.toRegex()) - } - - override fun compareTo(other: TrustCoordinates): Int { - val regexComparison = isRegex.compareTo(other.isRegex) - if (regexComparison != 0) { - return regexComparison - } - val groupComparison = compareNullableStrings( - group, other.group - ) - if (groupComparison != 0) { - return groupComparison - } - val nameComparison = compareNullableStrings( - name, other.name - ) - if (nameComparison != 0) { - return nameComparison - } - val versionComparison = compareNullableStrings( - version, other.version - ) - if (versionComparison != 0) { - return versionComparison - } - val fileNameComparison = compareNullableStrings( - fileName, other.fileName - ) - return if (fileNameComparison != 0) { - fileNameComparison - } else compareNullableStrings( - reason, other.reason - ) - } - } - - companion object { - private fun compareNullableStrings(first: String?, second: String?): Int { - if (first == null) { - return if (second == null) { - 0 - } else { - -1 - } - } else if (second == null) { - return 1 - } - return first.compareTo(second) - } - } -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationXmlTags.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationXmlTags.kt deleted file mode 100644 index b6e019a..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationXmlTags.kt +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2019 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.metadata - -internal object DependencyVerificationXmlTags { - const val ALSO_TRUST = "also-trust" - const val ARTIFACT = "artifact" - const val COMPONENT = "component" - const val COMPONENTS = "components" - const val CONFIG = "configuration" - const val ENABLED = "enabled" - const val FILE = "file" - const val GROUP = "group" - const val ID = "id" - const val IGNORED_KEY = "ignored-key" - const val IGNORED_KEYS = "ignored-keys" - const val KEY_SERVER = "key-server" - const val KEY_SERVERS = "key-servers" - const val NAME = "name" - const val ORIGIN = "origin" - const val PGP = "pgp" - const val REASON = "reason" - const val REGEX = "regex" - const val TRUST = "trust" - const val TRUSTED_ARTIFACTS = "trusted-artifacts" - const val TRUSTED_KEY = "trusted-key" - const val TRUSTED_KEYS = "trusted-keys" - const val TRUSTING = "trusting" - const val URI = "uri" - const val VALUE = "value" - const val VERIFICATION_METADATA = "verification-metadata" - const val VERIFY_METADATA = "verify-metadata" - const val VERIFY_SIGNATURES = "verify-signatures" - const val VERSION = "version" -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationsXmlReader.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationsXmlReader.kt deleted file mode 100644 index 2976931..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerificationsXmlReader.kt +++ /dev/null @@ -1,421 +0,0 @@ -/* - * Copyright 2019 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.metadata - -import java.io.IOException -import java.io.InputStream -import javax.xml.parsers.ParserConfigurationException -import javax.xml.parsers.SAXParser -import javax.xml.parsers.SAXParserFactory -import org.gradle.internal.UncheckedException -import org.nixos.gradle2nix.dependency.DefaultModuleComponentArtifactIdentifier -import org.nixos.gradle2nix.dependency.DefaultModuleComponentIdentifier -import org.nixos.gradle2nix.dependency.DefaultModuleIdentifier -import org.nixos.gradle2nix.dependency.ModuleComponentArtifactIdentifier -import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier -import org.nixos.gradle2nix.dependency.ModuleIdentifier -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.ALSO_TRUST -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.ARTIFACT -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.COMPONENT -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.COMPONENTS -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.CONFIG -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.IGNORED_KEY -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.IGNORED_KEYS -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.KEY_SERVER -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.KEY_SERVERS -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.PGP -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.TRUST -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.TRUSTED_ARTIFACTS -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.TRUSTED_KEY -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.TRUSTED_KEYS -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.TRUSTING -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.VALUE -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.VERIFICATION_METADATA -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.VERIFY_METADATA -import org.nixos.gradle2nix.metadata.DependencyVerificationXmlTags.VERIFY_SIGNATURES -import org.xml.sax.Attributes -import org.xml.sax.InputSource -import org.xml.sax.SAXException -import org.xml.sax.ext.DefaultHandler2 - -object DependencyVerificationsXmlReader { - fun readFromXml( - input: InputStream, - builder: DependencyVerifierBuilder - ) { - try { - val saxParser = createSecureParser() - val xmlReader = saxParser.xmlReader - val handler = VerifiersHandler(builder) - xmlReader.setProperty("http://xml.org/sax/properties/lexical-handler", handler) - xmlReader.contentHandler = handler - xmlReader.parse(InputSource(input)) - } catch (e: Exception) { - throw IllegalStateException( - "Unable to read dependency verification metadata", - e - ) - } finally { - try { - input.close() - } catch (e: IOException) { - throw UncheckedException.throwAsUncheckedException(e) - } - } - } - - fun readFromXml(input: InputStream): DependencyVerifier { - val builder = DependencyVerifierBuilder() - readFromXml(input, builder) - return builder.build() - } - - @Throws(ParserConfigurationException::class, SAXException::class) - private fun createSecureParser(): SAXParser { - val spf = SAXParserFactory.newInstance() - spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false) - spf.setFeature("http://xml.org/sax/features/namespaces", false) - spf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true) - return spf.newSAXParser() - } - - private class VerifiersHandler(private val builder: DependencyVerifierBuilder) : DefaultHandler2() { - private var inMetadata = false - private var inComponents = false - private var inConfiguration = false - private var inVerifyMetadata = false - private var inVerifySignatures = false - private var inTrustedArtifacts = false - private var inKeyServers = false - private var inIgnoredKeys = false - private var inTrustedKeys = false - private var inTrustedKey = false - private var currentTrustedKey: String? = null - private var currentComponent: ModuleComponentIdentifier? = null - private var currentArtifact: ModuleComponentArtifactIdentifier? = - null - private var currentChecksum: ChecksumKind? = null - - override fun startElement(uri: String, localName: String, qName: String, attributes: Attributes) { - when (qName) { - CONFIG -> inConfiguration = - true - - VERIFICATION_METADATA -> inMetadata = - true - - COMPONENTS -> { - assertInMetadata() - inComponents = true - } - - COMPONENT -> { - assertInComponents() - currentComponent = createComponentId(attributes) - } - - ARTIFACT -> { - assertValidComponent() - currentArtifact = createArtifactId(attributes) - } - - VERIFY_METADATA -> { - assertInConfiguration(VERIFY_METADATA) - inVerifyMetadata = true - } - - VERIFY_SIGNATURES -> { - assertInConfiguration(VERIFY_SIGNATURES) - inVerifySignatures = true - } - - TRUSTED_ARTIFACTS -> { - assertInConfiguration(TRUSTED_ARTIFACTS) - inTrustedArtifacts = true - } - - TRUSTED_KEY -> { - assertContext( - inTrustedKeys, - TRUSTED_KEY, - TRUSTED_KEYS - ) - inTrustedKey = true - } - - TRUSTED_KEYS -> { - assertInConfiguration(TRUSTED_KEYS) - inTrustedKeys = true - } - - TRUST -> { - assertInTrustedArtifacts() - addTrustedArtifact(attributes) - } - - TRUSTING -> { - assertContext( - inTrustedKey, - TRUSTING, - TRUSTED_KEY - ) - } - - KEY_SERVERS -> { - assertInConfiguration(KEY_SERVERS) - inKeyServers = true - } - - KEY_SERVER -> { - assertContext( - inKeyServers, - KEY_SERVER, - KEY_SERVERS - ) - } - - IGNORED_KEYS -> { - if (currentArtifact == null) { - assertInConfiguration(IGNORED_KEYS) - } - inIgnoredKeys = true - } - - IGNORED_KEY -> { - assertContext( - inIgnoredKeys, - IGNORED_KEY, - IGNORED_KEYS - ) - } - - else -> if (currentChecksum != null && ALSO_TRUST == qName) { - builder.addChecksum( - currentArtifact!!, - currentChecksum!!, - getAttribute(attributes, VALUE), - null, - null - ) - } else if (currentArtifact != null) { - if (PGP != qName) { - currentChecksum = enumValueOf(qName) - builder.addChecksum( - currentArtifact!!, - currentChecksum!!, - getAttribute( - attributes, - VALUE - ), - getNullableAttribute( - attributes, - DependencyVerificationXmlTags.ORIGIN - ), - getNullableAttribute( - attributes, - DependencyVerificationXmlTags.REASON - ) - ) - } - } - } - } - - private fun assertInTrustedArtifacts() { - assertContext( - inTrustedArtifacts, - TRUST, - TRUSTED_ARTIFACTS - ) - } - - private fun addTrustedArtifact(attributes: Attributes) { - var regex = false - val regexAttr = getNullableAttribute( - attributes, - DependencyVerificationXmlTags.REGEX - ) - if (regexAttr != null) { - regex = regexAttr.toBoolean() - } - builder.addTrustedArtifact( - getNullableAttribute( - attributes, - DependencyVerificationXmlTags.GROUP - ), - getNullableAttribute( - attributes, - DependencyVerificationXmlTags.NAME - ), - getNullableAttribute( - attributes, - DependencyVerificationXmlTags.VERSION - ), - getNullableAttribute( - attributes, - DependencyVerificationXmlTags.FILE - ), - regex, - getNullableAttribute( - attributes, - DependencyVerificationXmlTags.REASON - ) - ) - } - - private fun readBoolean(ch: CharArray, start: Int, length: Int): Boolean { - return String(ch, start, length).toBoolean() - } - - private fun assertInConfiguration(tag: String) { - assertContext( - inConfiguration, - tag, - DependencyVerificationXmlTags.CONFIG - ) - } - - private fun assertInComponents() { - assertContext( - inComponents, - DependencyVerificationXmlTags.COMPONENT, - DependencyVerificationXmlTags.COMPONENTS - ) - } - - private fun assertInMetadata() { - assertContext( - inMetadata, - DependencyVerificationXmlTags.COMPONENTS, - DependencyVerificationXmlTags.VERIFICATION_METADATA - ) - } - - private fun assertValidComponent() { - assertContext( - currentComponent != null, - ARTIFACT, - DependencyVerificationXmlTags.COMPONENT - ) - } - - override fun endElement(uri: String, localName: String, qName: String) { - when (qName) { - DependencyVerificationXmlTags.CONFIG -> inConfiguration = - false - - VERIFY_METADATA -> inVerifyMetadata = - false - - VERIFY_SIGNATURES -> inVerifySignatures = - false - - DependencyVerificationXmlTags.VERIFICATION_METADATA -> inMetadata = - false - - DependencyVerificationXmlTags.COMPONENTS -> inComponents = - false - - DependencyVerificationXmlTags.COMPONENT -> currentComponent = - null - - TRUSTED_ARTIFACTS -> inTrustedArtifacts = - false - - TRUSTED_KEYS -> inTrustedKeys = - false - - TRUSTED_KEY -> { - inTrustedKey = false - currentTrustedKey = null - } - - KEY_SERVERS -> inKeyServers = - false - - ARTIFACT -> { - currentArtifact = null - currentChecksum = null - } - - IGNORED_KEYS -> inIgnoredKeys = - false - } - } - - private fun createArtifactId(attributes: Attributes): ModuleComponentArtifactIdentifier { - return DefaultModuleComponentArtifactIdentifier( - currentComponent!!, - getAttribute( - attributes, - DependencyVerificationXmlTags.NAME - ) - ) - } - - private fun createComponentId(attributes: Attributes): ModuleComponentIdentifier { - return DefaultModuleComponentIdentifier( - createModuleId(attributes), - getAttribute( - attributes, - DependencyVerificationXmlTags.VERSION - ) - ) - } - - private fun createModuleId(attributes: Attributes): ModuleIdentifier { - return DefaultModuleIdentifier( - getAttribute( - attributes, - DependencyVerificationXmlTags.GROUP - ), - getAttribute( - attributes, - DependencyVerificationXmlTags.NAME - ) - ) - } - - private fun getAttribute(attributes: Attributes, name: String): String { - val value = attributes.getValue(name) - assertContext( - value != null, - "Missing attribute: $name" - ) - return value.intern() - } - - private fun getNullableAttribute(attributes: Attributes, name: String): String? { - val value = attributes.getValue(name) ?: return null - return value.intern() - } - - companion object { - private fun assertContext(test: Boolean, innerTag: String, outerTag: String) { - assertContext( - test, - "<$innerTag> must be found under the <$outerTag> tag" - ) - } - - private fun assertContext(test: Boolean, message: String) { - if (!test) { - throw IllegalStateException("Invalid dependency verification metadata file: $message") - } - } - } - } -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifier.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifier.kt deleted file mode 100644 index d2639c0..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifier.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2019 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.metadata - -import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier - -class DependencyVerifier internal constructor( - val verificationMetadata: Map, - val configuration: DependencyVerificationConfiguration, -) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifierBuilder.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifierBuilder.kt deleted file mode 100644 index 2eeaa58..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/DependencyVerifierBuilder.kt +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright 2019 the original author or authors. - * - * Licensed 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.nixos.gradle2nix.metadata - -import org.nixos.gradle2nix.dependency.ModuleComponentArtifactIdentifier -import org.nixos.gradle2nix.dependency.ModuleComponentIdentifier - -class DependencyVerifierBuilder { - private val byComponent: MutableMap = mutableMapOf() - private val trustedArtifacts: MutableList = mutableListOf() - - fun addChecksum( - artifact: ModuleComponentArtifactIdentifier, - kind: ChecksumKind, - value: String, - origin: String?, - reason: String? - ) { - val componentIdentifier: ModuleComponentIdentifier = artifact.componentIdentifier - byComponent.getOrPut(componentIdentifier) { - ComponentVerificationsBuilder(componentIdentifier) - }.addChecksum(artifact, kind, value, origin, reason) - } - - @JvmOverloads - fun addTrustedArtifact( - group: String?, - name: String?, - version: String?, - fileName: String?, - regex: Boolean, - reason: String? = null - ) { - validateUserInput(group, name, version, fileName) - trustedArtifacts.add(DependencyVerificationConfiguration.TrustCoordinates(group, name, version, fileName, regex, reason)) - } - - private fun validateUserInput( - group: String?, - name: String?, - version: String?, - fileName: String? - ) { - // because this can be called from parsing XML, we need to perform additional verification - if (group == null && name == null && version == null && fileName == null) { - throw IllegalStateException("A trusted artifact must have at least one of group, name, version or file name not null") - } - } - - fun build(): DependencyVerifier { - return DependencyVerifier( - byComponent - .toSortedMap( - compareBy { it.group } - .thenBy { it.module } - .thenBy { it.version } - ) - .mapValues { it.value.build() }, - DependencyVerificationConfiguration(trustedArtifacts), - ) - } - - private class ComponentVerificationsBuilder(private val component: ModuleComponentIdentifier) { - private val byArtifact: MutableMap = mutableMapOf() - - fun addChecksum( - artifact: ModuleComponentArtifactIdentifier, - kind: ChecksumKind, - value: String, - origin: String?, - reason: String? - ) { - byArtifact.computeIfAbsent(artifact.fileName) { ArtifactVerificationBuilder() } - .addChecksum(kind, value, origin, reason) - } - - fun build(): ComponentVerificationMetadata { - return ComponentVerificationMetadata( - component, - byArtifact - .map { ArtifactVerificationMetadata(it.key, it.value.buildChecksums()) } - .sortedBy { it.artifactName } - ) - } - } - - protected class ArtifactVerificationBuilder { - private val builder: MutableMap = mutableMapOf() - - fun addChecksum(kind: ChecksumKind, value: String, origin: String?, reason: String?) { - val builder = builder.getOrPut(kind) { - ChecksumBuilder(kind) - } - builder.addChecksum(value) - if (origin != null) { - builder.withOrigin(origin) - } - if (reason != null) { - builder.withReason(reason) - } - } - - fun buildChecksums(): List { - return builder.values - .map(ChecksumBuilder::build) - .sortedBy { it.kind } - } - } - - private class ChecksumBuilder(private val kind: ChecksumKind) { - private var value: String? = null - private var origin: String? = null - private var reason: String? = null - private var alternatives: MutableSet = mutableSetOf() - - /** - * Sets the origin, if not set already. This is - * mostly used for automatic generation of checksums - */ - fun withOrigin(origin: String?) { - this.origin = this.origin ?: origin - } - - /** - * Sets the reason, if not set already. - */ - fun withReason(reason: String?) { - this.reason = this.reason ?: reason - } - - fun addChecksum(checksum: String) { - if (value == null) { - value = checksum - } else if (value != checksum) { - alternatives.add(checksum) - } - } - - fun build(): Checksum { - return Checksum( - kind, - checkNotNull(value) { "Checksum is null" }, - alternatives, - origin, - reason - ) - } - } -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt new file mode 100644 index 0000000..53bd895 --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt @@ -0,0 +1,142 @@ +package org.nixos.gradle2nix.metadata + +import java.io.File +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import nl.adaptivity.xmlutil.XmlStreaming +import nl.adaptivity.xmlutil.serialization.XML +import nl.adaptivity.xmlutil.serialization.XmlChildrenName +import nl.adaptivity.xmlutil.serialization.XmlElement +import nl.adaptivity.xmlutil.serialization.XmlSerialName +import org.nixos.gradle2nix.Logger +import org.nixos.gradle2nix.dependencygraph.model.DependencyCoordinates + +sealed interface Coordinates { + val group: String? + val name: String? + val version: String? + val regex: Boolean + val file: String? +} + +@Serializable +@SerialName("trust") +data class Trust( + override val group: String? = null, + override val name: String? = null, + override val version: String? = null, + override val regex: Boolean = false, + override val file: String? = null, + val reason: String? = null, +) : Coordinates + +@Serializable +@SerialName("configuration") +data class Configuration( + @SerialName("verify-metadata") @XmlElement(true) val verifyMetadata: Boolean = false, + @SerialName("verify-signatures") @XmlElement(true) val verifySignatures: Boolean = false, + @SerialName("trusted-artifacts") @XmlChildrenName("trusted-artifacts") val trustedArtifacts: List = emptyList() +) + +@Serializable +sealed interface Checksum { + abstract val value: String + abstract val origin: String? + abstract val reason: String? + abstract val alternatives: List +} + +@Serializable +@SerialName("md5") +data class Md5( + override val value: String, + override val origin: String? = null, + override val reason: String? = null, + @XmlChildrenName("also-trust") + override val alternatives: List = emptyList() +) : Checksum + +@Serializable +@SerialName("sha1") +data class Sha1( + override val value: String, + override val origin: String? = null, + override val reason: String? = null, + @XmlChildrenName("also-trust") + override val alternatives: List = emptyList() +) : Checksum + +@Serializable +@SerialName("sha256") +data class Sha256( + override val value: String, + override val origin: String? = null, + override val reason: String? = null, + @XmlChildrenName("also-trust") + override val alternatives: List = emptyList() +) : Checksum + +@Serializable +@SerialName("sha512") +data class Sha512( + override val value: String, + override val origin: String? = null, + override val reason: String? = null, + @XmlChildrenName("also-trust") + override val alternatives: List = emptyList() +) : Checksum + +@Serializable +@SerialName("artifact") +data class Artifact( + val name: String, + val md5: Md5? = null, + val sha1: Sha1? = null, + val sha256: Sha256? = null, + val sha512: Sha512? = null, +) { + val checksums: List by lazy { listOfNotNull(sha512, sha256, sha1, md5) } +} + +@Serializable +@SerialName("component") +data class Component( + val group: String, + val name: String, + val version: String, + val artifacts: List = emptyList(), +) { + constructor(coordinates: DependencyCoordinates, artifacts: List) : this( + coordinates.group, + coordinates.module, + coordinates.version, + artifacts + ) +} + +@Serializable +@XmlSerialName( + "verification-metadata", + namespace = "https://schema.gradle.org/dependency-verification", + prefix = "" +) +data class VerificationMetadata( + val configuration: Configuration = Configuration(), + @XmlChildrenName("components", "https://schema.gradle.org/dependency-verification") val components: List = emptyList() +) + +val XmlFormat = XML { + autoPolymorphic = true + recommended() +} + +fun parseVerificationMetadata(logger: Logger, metadata: File): VerificationMetadata? { + return try { + metadata.reader().buffered().let(XmlStreaming::newReader).use { input -> + XmlFormat.decodeFromReader(input) + } + } catch (e: Exception) { + logger.warn("$metadata: failed to parse Gradle dependency verification metadata", e) + return null + } +} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/module/GradleModule.kt b/app/src/main/kotlin/org/nixos/gradle2nix/module/GradleModule.kt new file mode 100644 index 0000000..bc08c63 --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/module/GradleModule.kt @@ -0,0 +1,102 @@ +package org.nixos.gradle2nix.module + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +@Serializable +data class GradleModule( + val formatVersion: String, + val component: Component? = null, + val createdBy: CreatedBy? = null, + val variants: List = emptyList(), +) + +@Serializable +data class Component( + val group: String, + val module: String, + val version: String, + val url: String? = null, +) + +@Serializable +data class Gradle( + val version: String, + val buildId: String? = null +) + +@Serializable +data class CreatedBy( + val gradle: Gradle? = null +) + +@Serializable +data class Variant( + val name: String, + val attributes: JsonObject? = null, + @SerialName("available-at") val availableAt: AvailableAt? = null, + val dependencies: List = emptyList(), + val dependencyConstraints: List = emptyList(), + val files: List = emptyList(), + val capabilities: List = emptyList() +) + +@Serializable +data class AvailableAt( + val url: String, + val group: String, + val module: String, + val version: String, +) + +@Serializable +data class Dependency( + val group: String, + val module: String, + val version: JsonObject? = null, + val excludes: List = emptyList(), + val reason: String? = null, + val attributes: JsonObject? = null, + val requestedCapabilities: List = emptyList(), + val endorseStrictVersions: Boolean = false, + val thirdPartyCompatibility: ThirdPartyCompatibility? = null, +) + +@Serializable +data class DependencyConstraint( + val group: String, + val module: String, + val version: JsonObject? = null, + val reason: String? = null, + val attributes: JsonObject? = null, +) + +@Serializable +data class VariantFile( + val name: String, + val url: String, + val size: Long, + val sha1: String? = null, + val sha256: String? = null, + val sha512: String? = null, + val md5: String? = null, +) + +@Serializable +data class Capability( + val group: String, + val name: String, + val version: String? = null, +) + +@Serializable +data class Exclude( + val group: String, + val module: String, +) + +@Serializable +data class ThirdPartyCompatibility( + val artifactSelector: String +) diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt index 49b6b07..17fd2e0 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt @@ -38,6 +38,12 @@ private val json = Json { prettyPrintIndent = " " } +val testLogger = Logger(verbose = true, stacktrace = true) + +fun fixture(path: String): File { + return Paths.get("../fixtures", path).toFile() +} + @OptIn(ExperimentalKotest::class, ExperimentalSerializationApi::class, KotestInternal::class) suspend fun TestScope.fixture( project: String, diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/VerificationMetadataTest.kt b/app/src/test/kotlin/org/nixos/gradle2nix/VerificationMetadataTest.kt new file mode 100644 index 0000000..de075a3 --- /dev/null +++ b/app/src/test/kotlin/org/nixos/gradle2nix/VerificationMetadataTest.kt @@ -0,0 +1,17 @@ +package org.nixos.gradle2nix + +import io.kotest.core.spec.style.FunSpec +import io.kotest.matchers.nulls.beNull +import io.kotest.matchers.nulls.shouldNotBeNull +import io.kotest.matchers.shouldNot +import kotlinx.serialization.decodeFromString +import org.nixos.gradle2nix.metadata.Artifact +import org.nixos.gradle2nix.metadata.XmlFormat +import org.nixos.gradle2nix.metadata.parseVerificationMetadata + +class VerificationMetadataTest : FunSpec({ + test("parses verification metadata") { + val metadata = parseVerificationMetadata(testLogger, fixture("metadata/verification-metadata.xml")) + metadata shouldNot beNull() + } +}) diff --git a/fixtures/metadata/verification-metadata.xml b/fixtures/metadata/verification-metadata.xml new file mode 100644 index 0000000..8409abf --- /dev/null +++ b/fixtures/metadata/verification-metadata.xml @@ -0,0 +1,5292 @@ + + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/flake.lock b/flake.lock index 6b80d16..e07a8ee 100644 --- a/flake.lock +++ b/flake.lock @@ -1,12 +1,15 @@ { "nodes": { "flake-utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1605370193, - "narHash": "sha256-YyMTf3URDL/otKdKgtoMChu4vfVL3vCMkRqpGifhUn0=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "5021eac20303a61fafe17224c087f5519baed54d", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -17,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1607536117, - "narHash": "sha256-q3xr1fz93VNMnZjpqLN3VyphED2UxO6pd8jR8B4S+lo=", + "lastModified": 1696589439, + "narHash": "sha256-Ye+flokLfswVz9PZEyJ5yGJ1VqmJe3bDgwWt9Z4MuqQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b8936e55235bb4a970514d4bb9fbd77a2c16b806", + "rev": "e462c9172c685f0839baaa54bb5b49276a23dab7", "type": "github" }, "original": { @@ -36,6 +39,21 @@ "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e9be1d9..a11eef3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] gradle = "8.3" -kotlin = "1.9.0" # Current embedded Gradle kotlin version +kotlin = "1.9.20-Beta2" [libraries] clikt = "com.github.ajalt:clikt:+" @@ -15,6 +15,7 @@ okio = "com.squareup.okio:okio:+" serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:+" slf4j-api = "org.slf4j:slf4j-api:+" slf4j-simple = "org.slf4j:slf4j-simple:+" +xmlutil = "io.github.pdvrieze.xmlutil:serialization-jvm:+" [plugins] pluginPublish = { id = "com.gradle.plugin-publish", version = "1.2.1" } diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt b/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt index 2f32f94..bba02ca 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt @@ -3,4 +3,6 @@ package org.nixos.gradle2nix.dependencygraph.model import kotlinx.serialization.Serializable @Serializable -data class DependencyCoordinates(val group: String, val module: String, val version: String) +data class DependencyCoordinates(val group: String, val module: String, val version: String) { + override fun toString(): String = "$group:$module:$version" +} diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 915e72c..726e2de 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -1,6 +1,4 @@ -import com.github.jengelman.gradle.plugins.shadow.relocation.SimpleRelocator import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.utils.extendsFrom plugins { id("org.jetbrains.kotlin.jvm") diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt index b5a0eac..1fe170c 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt @@ -5,6 +5,7 @@ package org.nixos.gradle2nix import org.gradle.api.Plugin import org.gradle.api.invocation.Gradle import org.nixos.gradle2nix.dependencygraph.AbstractDependencyExtractorPlugin +import org.nixos.gradle2nix.forceresolve.ForceDependencyResolutionPlugin @Suppress("unused") class Gradle2NixPlugin : Plugin { diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt index e5ade2e..eb46431 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt @@ -1,4 +1,4 @@ -package org.nixos.gradle2nix +package org.nixos.gradle2nix.forceresolve import org.gradle.api.Plugin import org.gradle.api.Project @@ -6,8 +6,8 @@ import org.gradle.api.Task import org.gradle.api.invocation.Gradle import org.gradle.api.tasks.TaskProvider import org.gradle.util.GradleVersion -import org.nixos.gradle2nix.forceresolve.LegacyResolveProjectDependenciesTask -import org.nixos.gradle2nix.forceresolve.ResolveProjectDependenciesTask +import org.nixos.gradle2nix.RESOLVE_ALL_TASK +import org.nixos.gradle2nix.RESOLVE_PROJECT_TASK // TODO: Rename these From 6da87262a42e05aa776db55312562851d2a33778 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Sun, 15 Oct 2023 19:39:40 -0700 Subject: [PATCH 07/34] Redesign env hierarchy --- .../kotlin/org/nixos/gradle2nix/Artifact.kt | 9 - .../kotlin/org/nixos/gradle2nix/Logger.kt | 8 + .../main/kotlin/org/nixos/gradle2nix/Main.kt | 11 +- .../kotlin/org/nixos/gradle2nix/Process.kt | 154 +- .../kotlin/org/nixos/gradle2nix/env/Env.kt | 233 ++ .../metadata/VerificationMetadata.kt | 14 +- .../kotlin/org/nixos/gradle2nix/TestUtil.kt | 22 +- .../basic/basic-java-project.groovy.json | 150 +- .../basic/basic-java-project.kotlin.json | 150 +- .../basic/basic-kotlin-project.kotlin.json | 3028 ++++++++++------- .../buildsrc/plugin-in-buildsrc.kotlin.json | 1388 ++++---- .../golden/dependency/classifier.groovy.json | 30 +- .../golden/dependency/classifier.kotlin.json | 30 +- .../golden/dependency/maven-bom.kotlin.json | 78 +- .../dependency/snapshot-dynamic.groovy.json | 26 +- .../dependency/snapshot-dynamic.kotlin.json | 26 +- .../dependency/snapshot-redirect.groovy.json | 30 +- .../golden/dependency/snapshot.groovy.json | 30 +- .../golden/dependency/snapshot.kotlin.json | 30 +- .../settings-buildscript.groovy.json | 270 +- fixtures/golden/ivy/basic.kotlin.json | 60 +- .../resolves-from-default-repo.groovy.json | 1184 ++++--- .../resolves-from-default-repo.kotlin.json | 1184 ++++--- .../golden/settings/buildscript.groovy.json | 30 +- ...pendency-resolution-management.kotlin.json | 30 +- .../subprojects/multi-module.groovy.json | 240 +- .../subprojects/multi-module.kotlin.json | 240 +- .../nixos/gradle2nix/DependencyCoordinates.kt | 2 +- .../nixos/gradle2nix/ResolvedDependency.kt | 20 +- .../extractor/DependencyExtractor.kt | 2 +- 30 files changed, 5198 insertions(+), 3511 deletions(-) delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/Artifact.kt create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Artifact.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Artifact.kt deleted file mode 100644 index efa0d1c..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Artifact.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.nixos.gradle2nix - -import kotlinx.serialization.Serializable - -@Serializable -data class Artifact( - val urls: List, - val hash: String, -) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt index 4b13022..1303fcd 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt @@ -9,6 +9,14 @@ class Logger( val stacktrace: Boolean = false ) { + fun debug(message: String, error: Throwable? = null) { + if (!stacktrace) return + out.println(message) + if (error == null) return + error.message?.let { println(" Cause: $it") } + error.printStackTrace(out) + } + fun log(message: String, error: Throwable? = null) { if (!verbose) return out.println(message) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index 50fd69b..553f4d2 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -74,6 +74,9 @@ class Gradle2Nix : CliktCommand( help = "Prefix for environment files (.json and .nix)") .default("gradle-env") + private val debug: Boolean by option("--debug", help = "Enable debug logging") + .flag(default = false) + private val quiet: Boolean by option("--quiet", "-q", help = "Disable logging") .flag(default = false) @@ -114,7 +117,7 @@ class Gradle2Nix : CliktCommand( System.err.println("Error: could not locate the /share directory in the gradle2nix installation") } val gradleHome = System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") - val logger = Logger(verbose = !quiet) + val logger = Logger(verbose = !quiet, stacktrace = debug) val config = Config( File(appHome), @@ -146,17 +149,17 @@ class Gradle2Nix : CliktCommand( connection.build(config) } - val dependencies = try { + val env = try { processDependencies(config) } catch (e: Throwable) { - error("Dependency parsing failed: ${e.message}") + logger.error("Dependency parsing failed", e) } val outDir = outDir ?: projectDir val json = outDir.resolve("$envFile.json") logger.log("Writing environment to $json") json.outputStream().buffered().use { output -> - JsonFormat.encodeToStream(dependencies, output) + JsonFormat.encodeToStream(env, output) } } } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt index a7de618..bda35c1 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -14,9 +14,16 @@ import okio.HashingSource import okio.blackholeSink import okio.buffer import okio.source -import org.nixos.gradle2nix.dependencygraph.model.DependencyCoordinates import org.nixos.gradle2nix.dependencygraph.model.Repository import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration +import org.nixos.gradle2nix.dependencygraph.model.ResolvedDependency +import org.nixos.gradle2nix.env.ArtifactFile +import org.nixos.gradle2nix.env.ArtifactSet +import org.nixos.gradle2nix.env.Env +import org.nixos.gradle2nix.env.Module +import org.nixos.gradle2nix.env.ModuleId +import org.nixos.gradle2nix.env.ModuleVersionId +import org.nixos.gradle2nix.env.Version import org.nixos.gradle2nix.metadata.Checksum import org.nixos.gradle2nix.metadata.Component import org.nixos.gradle2nix.metadata.Md5 @@ -36,12 +43,12 @@ private fun shouldSkipRepository(repository: Repository): Boolean { repository.metadataResources.all { it.startsWith("file:") && (m2 == null || !it.startsWith(m2)) } } -fun processDependencies(config: Config): Map> { +fun processDependencies(config: Config): Env { val verificationMetadata = readVerificationMetadata(config) val verificationComponents = verificationMetadata?.components?.associateBy { - DependencyCoordinates(it.group, it.name, it.version) + ModuleVersionId(ModuleId(it.group, it.name), it.version) } ?: emptyMap() - val moduleCache = mutableMapOf() + val moduleCache = mutableMapOf() val configurations = readDependencyGraph(config) val repositories = configurations @@ -57,54 +64,53 @@ fun processDependencies(config: Config): Map> { } if (repositories.isEmpty()) { config.logger.warn("no repositories found in any configuration") - return emptyMap() + return Env(emptyMap()) } + config.logger.debug("Repositories:\n ${repositories.values.joinToString("\n ")}") - return configurations.asSequence() + val modules = configurations.asSequence() .flatMap { it.allDependencies.asSequence() } - .groupBy { it.id } - .mapNotNull { (id, dependencies) -> - if (id.startsWith("project ")) return@mapNotNull null - val deps = dependencies.toSet() - if (deps.isEmpty()) { - config.logger.warn("$id: no resolved dependencies in dependency graph") - return@mapNotNull null - } - val coordinates = deps.first().coordinates - val component = verificationComponents[coordinates] - ?: verifyComponentFilesInCache(config, coordinates) - ?: verifyComponentFilesInTestRepository(config, coordinates) - if (component == null) { - config.logger.warn("$id: not present in metadata or cache; skipping") - return@mapNotNull null - } - - val repoIds = dependencies.mapNotNull { it.repository } - if (repoIds.isEmpty()) { - config.logger.warn("$id: no repository ids in dependency graph; skipping") - return@mapNotNull null - } - val repos = repoIds.mapNotNull(repositories::get) - if (repos.isEmpty()) { - config.logger.warn("$id: no repositories found for repository ids $repoIds; skipping") - return@mapNotNull null - } - - val gradleModule = moduleCache.getOrPut(coordinates) { - maybeGetGradleModule(config.logger, coordinates, repos) - } - - id to component.artifacts.associate { meta -> - meta.name to Artifact( - urls = repos - .flatMap { repository -> artifactUrls(coordinates, meta.name, repository, gradleModule) } - .distinct(), - hash = meta.checksums.first().toSri() - ) - } + .filterNot { it.id.startsWith("project ") || it.repository == null || it.repository !in repositories } + .groupBy { ModuleId(it.coordinates.group, it.coordinates.module) } + .mapValues { (id, deps) -> + val versions = deps.groupBy { Version(it.coordinates.version) } + .mapValues { (version, deps) -> + val componentId = ModuleVersionId(id, version) + val dep = MergedDependency( + id = componentId, + repositories = deps.mapNotNull { repositories[it.repository] } + ) + val component = verificationComponents[componentId] + ?: verifyComponentFilesInCache(config, componentId) + ?: verifyComponentFilesInTestRepository(config, componentId) + val gradleModule = moduleCache.getOrPut(componentId) { + maybeGetGradleModule(config.logger, componentId, dep.repositories) + } + ArtifactSet( + needsPomRedirect = repositories.values.any { + "mavenPom" in it.metadataSources && + "ignoreGradleMetadataRedirection" !in it.metadataSources + }, + needsIvyRedirect = repositories.values.any { + "ivyDescriptor" in it.metadataSources && + "ignoreGradleMetadataRedirection" !in it.metadataSources + }, + files = (component?.artifacts ?: emptyList()).associate { meta -> + meta.name to ArtifactFile( + urls = dep.repositories + .flatMap { repository -> artifactUrls(componentId, meta.name, repository, gradleModule) } + .distinct(), + hash = meta.checksums.first().toSri() + ) + }.toSortedMap() + ) + } + .toSortedMap(Version.Comparator.reversed()) + Module(versions) } - .sortedBy { it.first } - .toMap() + .toSortedMap(compareBy(ModuleId::toString)) + + return Env(modules) } private fun readVerificationMetadata(config: Config): VerificationMetadata? { @@ -121,52 +127,55 @@ private fun readDependencyGraph(config: Config): List { private fun verifyComponentFilesInCache( config: Config, - coordinates: DependencyCoordinates, + id: ModuleVersionId, ): Component? { - val cacheDir = with(coordinates) { config.gradleHome.resolve("caches/modules-2/files-2.1/$group/$module/$version") } + val cacheDir = with(id) { config.gradleHome.resolve("caches/modules-2/files-2.1/$group/$name/$version") } if (!cacheDir.exists()) { return null } val verifications = cacheDir.walk().filter { it.isFile }.map { f -> ArtifactMetadata(f.name, sha256 = Sha256(f.sha256())) } - config.logger.log("$coordinates: obtained artifact hashes from Gradle cache.") - return Component(coordinates, verifications.toList()) + config.logger.log("$id: obtained artifact hashes from Gradle cache.") + return Component(id, verifications.toList()) } private fun verifyComponentFilesInTestRepository( config: Config, - coordinates: DependencyCoordinates + id: ModuleVersionId ): Component? { if (m2 == null) return null - val dir = with(coordinates) { - File(URI.create(m2)).resolve("${group.replace(".", "/")}/$module/$version") + val dir = with(id) { + File(URI.create(m2)).resolve("${group.replace(".", "/")}/$name/$version") } if (!dir.exists()) { - config.logger.log("$coordinates: not found in m2 repository; tried $dir") + config.logger.log("$id: not found in m2 repository; tried $dir") return null } - val verifications = dir.walk().filter { it.isFile && it.name.startsWith(coordinates.module) }.map { f -> + val verifications = dir.walk().filter { it.isFile && it.name.startsWith(id.name) }.map { f -> ArtifactMetadata( f.name, sha256 = Sha256(f.sha256()) ) } - config.logger.log("$coordinates: obtained artifact hashes from test Maven repository.") - return Component(coordinates, verifications.toList()) + config.logger.log("$id: obtained artifact hashes from test Maven repository.") + return Component(id, verifications.toList()) } @OptIn(ExperimentalSerializationApi::class) -private fun maybeGetGradleModule(logger: Logger, coordinates: DependencyCoordinates, repos: List): GradleModule? { - val filename = with(coordinates) { "$module-$version.module" } +private fun maybeGetGradleModule(logger: Logger, id: ModuleVersionId, repos: List): GradleModule? { + val filename = with(id) { "$name-$version.module" } + val reposWithGradleMetadata = repos + .filter { "gradleMetadata" in it.metadataSources } + .flatMap { artifactUrls(id, filename, it, null)} - for (url in repos.flatMap { artifactUrls(coordinates, filename, it, null)}) { + for (url in reposWithGradleMetadata) { try { return URL(url).openStream().buffered().use { input -> JsonFormat.decodeFromStream(input) } } catch (e: SerializationException) { - logger.error("$coordinates: failed to parse Gradle module metadata ($url)", e) + logger.error("$id: failed to parse Gradle module metadata ($url)", e) } catch (e: IOException) { // Pass } @@ -192,12 +201,12 @@ private fun Checksum.toSri(): String { } private fun artifactUrls( - coordinates: DependencyCoordinates, + id: ModuleVersionId, filename: String, repository: Repository, module: GradleModule? ): List { - val groupAsPath = coordinates.group.replace(".", "/") + val groupAsPath = id.group.replace(".", "/") val repoFilename = module?.let { m -> m.variants @@ -207,10 +216,10 @@ private fun artifactUrls( }?.url ?: filename val attributes = mutableMapOf( - "organisation" to if (repository.m2Compatible) groupAsPath else coordinates.group, - "module" to coordinates.module, - "revision" to coordinates.version, - ) + fileAttributes(repoFilename, coordinates.version) + "organisation" to if (repository.m2Compatible) groupAsPath else id.group, + "module" to id.name, + "revision" to id.version.toString(), + ) + fileAttributes(repoFilename, id.version) val resources = when (attributes["ext"]) { "pom" -> if ("mavenPom" in repository.metadataSources) repository.metadataResources else repository.artifactResources @@ -251,7 +260,7 @@ private fun fill(template: String, attributes: Map): String { } // Gradle persists artifacts with the Maven artifact pattern, which may not match the repository's pattern. -private fun fileAttributes(file: String, version: String): Map { +private fun fileAttributes(file: String, version: Version): Map { val parts = Regex("(.+)-$version(-([^.]+))?(\\.(.+))?").matchEntire(file) ?: return emptyMap() val (artifact, _, classifier, _, ext) = parts.destructured @@ -262,3 +271,8 @@ private fun fileAttributes(file: String, version: String): Map { put("ext", ext) } } + +private data class MergedDependency( + val id: ModuleVersionId, + val repositories: List +) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt b/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt new file mode 100644 index 0000000..797c0dc --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt @@ -0,0 +1,233 @@ +package org.nixos.gradle2nix.env + +import java.util.concurrent.ConcurrentHashMap +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.SerializationException +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import org.gradle.internal.impldep.com.google.common.collect.ImmutableMap +import org.gradle.internal.impldep.com.google.common.primitives.Longs + +@Serializable +@JvmInline +value class Env( + val modules: Map, +) + +@Serializable +@JvmInline +value class Module( + val versions: Map, +) + +@Serializable +data class ArtifactSet( + val needsPomRedirect: Boolean, + val needsIvyRedirect: Boolean, + val files: Map +) + +@Serializable +data class ArtifactFile( + val urls: List, + val hash: String, +) + +@Serializable(ModuleId.Serializer::class) +data class ModuleId( + val group: String, + val name: String, +) { + + override fun toString(): String = "$group:$name" + + companion object Serializer : KSerializer { + override val descriptor: SerialDescriptor get() = PrimitiveSerialDescriptor( + ModuleId::class.qualifiedName!!, + PrimitiveKind.STRING + ) + + override fun serialize(encoder: Encoder, value: ModuleId) { + encoder.encodeString("${value.name}:${value.group}") + } + + override fun deserialize(decoder: Decoder): ModuleId { + val encoded = decoder.decodeString() + val parts = encoded.split(":") + if (parts.size != 2 || parts.any(String::isBlank)) { + throw SerializationException("invalid module id: $encoded") + } + return ModuleId(parts[0], parts[1]) + } + } +} + +data class ModuleVersionId( + val moduleId: ModuleId, + val version: Version +) { + val group: String get() = moduleId.group + val name: String get() = moduleId.name + + override fun toString(): String = "$moduleId:$version" +} + +@Serializable(Version.Serializer::class) +class Version(val source: String, val parts: List, base: Version?) : Comparable { + + val base: Version + val numericParts: List + + init { + this.base = base ?: this + this.numericParts = parts.map(Longs::tryParse) + } + + override fun compareTo(other: Version): Int = compare(this, other) + + override fun toString(): String = source + + override fun equals(other: Any?): Boolean = when { + other === this -> true + other == null || other !is Version -> false + else -> source == other.source + } + + override fun hashCode(): Int = source.hashCode() + + object Comparator : kotlin.Comparator { + override fun compare(o1: Version, o2: Version): Int = + Version.compare(o1, o2) + } + + internal object Serializer : KSerializer { + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor( + Version::class.qualifiedName!!, + PrimitiveKind.STRING + ) + + override fun serialize(encoder: Encoder, value: Version) { + encoder.encodeString(value.source) + } + + override fun deserialize(decoder: Decoder): Version { + return Version(decoder.decodeString()) + } + } + + companion object { + private val SPECIAL_MEANINGS: Map = ImmutableMap.builderWithExpectedSize(7) + .put("dev", -1) + .put("rc", 1) + .put("snapshot", 2) + .put("final", 3).put("ga", 4).put("release", 5) + .put("sp", 6).build() + + private val cache = ConcurrentHashMap() + + // From org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionParser + operator fun invoke(original: String): Version = cache.getOrPut(original) { + val parts = mutableListOf() + var digit = false + var startPart = 0 + var pos = 0 + var endBase = 0 + var endBaseStr = 0 + while (pos < original.length) { + val ch = original[pos] + if (ch == '.' || ch == '_' || ch == '-' || ch == '+') { + parts.add(original.substring(startPart, pos)) + startPart = pos + 1 + digit = false + if (ch != '.' && endBaseStr == 0) { + endBase = parts.size + endBaseStr = pos + } + } else if (ch in '0'..'9') { + if (!digit && pos > startPart) { + if (endBaseStr == 0) { + endBase = parts.size + 1 + endBaseStr = pos + } + parts.add(original.substring(startPart, pos)) + startPart = pos + } + digit = true + } else { + if (digit) { + if (endBaseStr == 0) { + endBase = parts.size + 1 + endBaseStr = pos + } + parts.add(original.substring(startPart, pos)) + startPart = pos + } + digit = false + } + pos++ + } + if (pos > startPart) { + parts.add(original.substring(startPart, pos)) + } + var base: Version? = null + if (endBaseStr > 0) { + base = Version(original.substring(0, endBaseStr), parts.subList(0, endBase), null) + } + Version(original, parts, base) + } + + // From org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.StaticVersionComparator + private fun compare(version1: Version, version2: Version): Int { + if (version1 == version2) { + return 0 + } + + val parts1 = version1.parts + val parts2 = version2.parts + val numericParts1 = version1.numericParts + val numericParts2 = version2.numericParts + var lastIndex = -1 + + for (i in 0..<(minOf(parts1.size, parts2.size))) { + lastIndex = i + + val part1 = parts1[i] + val part2 = parts2[i] + + val numericPart1 = numericParts1[i] + val numericPart2 = numericParts2[i] + + when { + part1 == part2 -> continue + numericPart1 != null && numericPart2 == null -> return 1 + numericPart2 != null && numericPart1 == null -> return -1 + numericPart1 != null && numericPart2 != null -> { + val result = numericPart1.compareTo(numericPart2) + if (result == 0) continue + return result + } + else -> { + // both are strings, we compare them taking into account special meaning + val sm1 = SPECIAL_MEANINGS[part1.lowercase()] + val sm2 = SPECIAL_MEANINGS[part2.lowercase()] + if (sm1 != null) return sm1 - (sm2 ?: 0) + if (sm2 != null) return -sm2 + return part1.compareTo(part2) + } + } + } + if (lastIndex < parts1.size) { + return if (numericParts1[lastIndex] == null) -1 else 1 + } + if (lastIndex < parts2.size) { + return if (numericParts2[lastIndex] == null) 1 else -1 + } + + return 0 + } + } +} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt index 53bd895..b1fde68 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt @@ -9,7 +9,9 @@ import nl.adaptivity.xmlutil.serialization.XmlChildrenName import nl.adaptivity.xmlutil.serialization.XmlElement import nl.adaptivity.xmlutil.serialization.XmlSerialName import org.nixos.gradle2nix.Logger -import org.nixos.gradle2nix.dependencygraph.model.DependencyCoordinates +import org.nixos.gradle2nix.DependencyCoordinates +import org.nixos.gradle2nix.env.ModuleVersionId +import org.nixos.gradle2nix.env.Version sealed interface Coordinates { val group: String? @@ -103,13 +105,13 @@ data class Artifact( data class Component( val group: String, val name: String, - val version: String, + val version: Version, val artifacts: List = emptyList(), ) { - constructor(coordinates: DependencyCoordinates, artifacts: List) : this( - coordinates.group, - coordinates.module, - coordinates.version, + constructor(id: ModuleVersionId, artifacts: List) : this( + id.group, + id.name, + id.version, artifacts ) } diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt index 17fd2e0..991af4d 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt @@ -5,30 +5,24 @@ import io.kotest.common.ExperimentalKotest import io.kotest.common.KotestInternal import io.kotest.core.names.TestName import io.kotest.core.source.sourceRef -import io.kotest.core.spec.style.scopes.ContainerScope -import io.kotest.core.spec.style.scopes.RootScope import io.kotest.core.test.NestedTest import io.kotest.core.test.TestScope import io.kotest.core.test.TestType -import io.kotest.extensions.system.withEnvironment import io.kotest.matchers.equals.beEqual -import io.kotest.matchers.equals.shouldBeEqual import io.kotest.matchers.file.shouldBeAFile -import io.kotest.matchers.paths.shouldBeAFile import io.kotest.matchers.should import java.io.File import java.io.FileFilter import java.nio.file.Files -import java.nio.file.Path import java.nio.file.Paths -import kotlin.io.path.createTempDirectory -import kotlin.io.path.inputStream import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerializationException +import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream import kotlinx.serialization.json.encodeToStream import okio.use +import org.nixos.gradle2nix.env.Env private val app = Gradle2Nix() @@ -48,7 +42,7 @@ fun fixture(path: String): File { suspend fun TestScope.fixture( project: String, vararg args: String, - test: suspend TestScope.(Map>) -> Unit + test: suspend TestScope.(Env) -> Unit ) { val tmp = Paths.get("build/tmp/gradle2nix").apply { toFile().mkdirs() } val baseDir = Paths.get("../fixtures", project).toFile() @@ -82,7 +76,7 @@ suspend fun TestScope.fixture( app.main(listOf("-d", tempDir.toString()) + args.withM2()) val file = tempDir.resolve("${app.envFile}.json") file.shouldBeAFile() - val env: Map> = file.inputStream().buffered().use { input -> + val env: Env = file.inputStream().buffered().use { input -> Json.decodeFromStream(input) } test(env) @@ -110,14 +104,12 @@ suspend fun TestScope.golden( if (!goldenFile.exists()) { fail("Golden file '$filename' doesn't exist. Run with --update-golden to generate.") } - val goldenData: Map> = try { - goldenFile.inputStream().buffered().use { input -> - json.decodeFromStream(input) - } + val goldenData = try { + goldenFile.readText() } catch (e: SerializationException) { fail("Failed to load golden data from '$filename'. Run with --update-golden to regenerate.") } - env should beEqual(goldenData) + json.encodeToString(env) should beEqual(goldenData) } } } diff --git a/fixtures/golden/basic/basic-java-project.groovy.json b/fixtures/golden/basic/basic-java-project.groovy.json index 83d14c1..b05be6e 100644 --- a/fixtures/golden/basic/basic-java-project.groovy.json +++ b/fixtures/golden/basic/basic-java-project.groovy.json @@ -1,72 +1,102 @@ { - "com.squareup.okio:okio:2.2.2": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + "com.squareup.moshi:moshi": { + "1.8.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + } + } } }, - "com.squareup.moshi:moshi:1.8.0": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + "com.squareup.okio:okio": { + "2.2.2": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + } + } } }, - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + "org.jetbrains.kotlin:kotlin-stdlib": { + "1.2.60": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + } } }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + "org.jetbrains.kotlin:kotlin-stdlib-common": { + "1.2.60": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + } + } } }, - "org.jetbrains:annotations:13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + "org.jetbrains:annotations": { + "13.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/basic/basic-java-project.kotlin.json b/fixtures/golden/basic/basic-java-project.kotlin.json index 83d14c1..b05be6e 100644 --- a/fixtures/golden/basic/basic-java-project.kotlin.json +++ b/fixtures/golden/basic/basic-java-project.kotlin.json @@ -1,72 +1,102 @@ { - "com.squareup.okio:okio:2.2.2": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + "com.squareup.moshi:moshi": { + "1.8.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + } + } } }, - "com.squareup.moshi:moshi:1.8.0": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + "com.squareup.okio:okio": { + "2.2.2": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + } + } } }, - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + "org.jetbrains.kotlin:kotlin-stdlib": { + "1.2.60": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + } } }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + "org.jetbrains.kotlin:kotlin-stdlib-common": { + "1.2.60": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + } + } } }, - "org.jetbrains:annotations:13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + "org.jetbrains:annotations": { + "13.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/basic/basic-kotlin-project.kotlin.json b/fixtures/golden/basic/basic-kotlin-project.kotlin.json index cf9a936..87a6c03 100644 --- a/fixtures/golden/basic/basic-kotlin-project.kotlin.json +++ b/fixtures/golden/basic/basic-kotlin-project.kotlin.json @@ -1,1258 +1,1778 @@ { - "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.6.21": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.6.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom" - ], - "hash": "sha256-hKJnm90W1DkKJmp58Gzaix+iq38XlowYk0l84ZWOHEQ=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21": { - "kotlin-gradle-plugin-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.jar" - ], - "hash": "sha256-Z1Oi4RJtP5k6lRryrcBrHsTKJxdulsj2Mnd5kBBNFa0=" - }, - "kotlin-gradle-plugin-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.pom" - ], - "hash": "sha256-7RX0N/j1aW6NU7mszIYS6cas9Wfbau0E/ymq3F4DpC4=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.6.21": { - "kotlin-gradle-plugin-api-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.jar" - ], - "hash": "sha256-x0wfF5FsrG1ygGJkmI0V4yGa8kYJB5E3Tq6cua8ufLM=" - }, - "kotlin-gradle-plugin-api-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.pom" - ], - "hash": "sha256-JL0R1cjnNGMHSBUXnPuyYCAJIxyEE5aTr3ydVtzU3z8=" - } - }, - "org.jetbrains.kotlin:kotlin-native-utils:1.6.21": { - "kotlin-native-utils-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.jar" - ], - "hash": "sha256-a9hyJOVq4V/+IQTTx2M9cq9sezWCRa08SnbG1f0NNr8=" - }, - "kotlin-native-utils-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.pom" - ], - "hash": "sha256-92q9t+TzvxouyTxiqybO/lKg7UlBAY53w/74BrCXvq8=" - } - }, - "org.jetbrains.kotlin:kotlin-util-io:1.6.21": { - "kotlin-util-io-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.jar" - ], - "hash": "sha256-wCxUcFYyGLcDvh5xbi0M6leH01y+tryUbfAMAM1CrNI=" - }, - "kotlin-util-io-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.pom" - ], - "hash": "sha256-52nyybmRQIYlhKLAoRLIQ3P0fkryrxbQHOSThRMZMhk=" - } - }, - "org.jetbrains.kotlin:kotlin-project-model:1.6.21": { - "kotlin-project-model-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.jar" - ], - "hash": "sha256-FLaE+Kc+IpZ4ASS/OB3eAT9YLqIzZ6zgGEWAo4Sa6Ng=" - }, - "kotlin-project-model-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.pom" - ], - "hash": "sha256-dgKHUWgMZJAf76wyN5AmtNC9I3rdfw873ujtXH51LG4=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.6.21": { - "kotlin-gradle-plugin-model-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.jar" - ], - "hash": "sha256-YFmxxhMI+4WaAedYsrj9Ctr/dBs9+AI1+t6VrWq4loc=" - }, - "kotlin-gradle-plugin-model-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.pom" - ], - "hash": "sha256-QkLJzsOQLX21n4OMupPDDnMeC10yzDnQ5Ft1gKZUBOo=" - } - }, - "org.jetbrains.kotlin:kotlin-util-klib:1.6.21": { - "kotlin-util-klib-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.jar" - ], - "hash": "sha256-7iGKnoGAwbNIwawc+K1xj2qseLp+JrUIEyNIT2Q8YbI=" - }, - "kotlin-util-klib-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.pom" - ], - "hash": "sha256-EsegqvZnLbHXgxxHGWV/+b9rEXGbD8h9iNcnXzl/lKs=" - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.6.21": { - "kotlin-klib-commonizer-api-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.jar" - ], - "hash": "sha256-0s9pUu7ziUqs+KnYzx6MZ78hW075AmioyQMYNFMKOHQ=" - }, - "kotlin-klib-commonizer-api-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.pom" - ], - "hash": "sha256-FICJ7qPCUPClDqxomfFFq5D1mJM8GrT5qsldYXKHJfQ=" - } - }, - "org.jetbrains.kotlin:kotlin-tooling-metadata:1.6.21": { - "kotlin-tooling-metadata-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.jar" - ], - "hash": "sha256-Tsk9BRYGawtki6mHxtPWX2+wZ9wLu6lcHs5h4EKEiOU=" - }, - "kotlin-tooling-metadata-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.pom" - ], - "hash": "sha256-uwYH34aI9gLBwvTQmWMz/YsDtpMoaGpud15S9/sNFxg=" - } - }, - "com.google.code.gson:gson:2.8.9": { - "gson-2.8.9.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar" - ], - "hash": "sha256-05mSkYVd5JXJTHQ3YbirUXbP6r4oGlqw2OjUUyb9cD4=" - }, - "gson-2.8.9.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom" - ], - "hash": "sha256-r97W5qaQ+/OtSuZa2jl/CpCl9jCzA9G3QbnJeSb91N4=" - } - }, - "com.google.guava:guava:29.0-jre": { - "guava-29.0-jre.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.jar" - ], - "hash": "sha256-sixftm1h57lSJTHQSy+RW1FY6AqgtA7nKCyL+wew2iU=" - }, - "guava-29.0-jre.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.pom" - ], - "hash": "sha256-kCfpNAmJA9KH8bphyLZfAdHR4dp6b7zAS/PeBUQBRCY=" - } - }, - "com.google.guava:failureaccess:1.0.1": { - "failureaccess-1.0.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" - ], - "hash": "sha256-oXHuTHNN0tqDfksWvp30Zhr6typBra8x64Tf2vk2yiY=" - }, - "failureaccess-1.0.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom" - ], - "hash": "sha256-6WBCznj+y6DaK+lkUilHyHtAopG1/TzWcqQ0kkEDxLk=" - } - }, - "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava": { - "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" - ], - "hash": "sha256-s3KgN9QjCqV/vv/e8w/WEj+cDC24XQrO0AyRuXTzP5k=" - }, - "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom" - ], - "hash": "sha256-GNSx2yYVPU5VB5zh92ux/gXNuGLvmVSojLzE/zi4Z5s=" - } - }, - "com.google.code.findbugs:jsr305:3.0.2": { - "jsr305-3.0.2.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" - ], - "hash": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=" - }, - "jsr305-3.0.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom" - ], - "hash": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4=" - } - }, - "org.checkerframework:checker-qual:2.11.1": { - "checker-qual-2.11.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar" - ], - "hash": "sha256-AVIkpLHcbebaBTJz1Np9Oc/qIOYwOBafxFrA0dycWTg=" - }, - "checker-qual-2.11.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom" - ], - "hash": "sha256-zy4MkNj3V0VfSiWOpglzkFNmO9XaannZvVP5NaR955w=" - } - }, - "com.google.errorprone:error_prone_annotations:2.3.4": { - "error_prone_annotations-2.3.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar" - ], - "hash": "sha256-uvfW6pfOYGxT4RtoVLpfLOfvXCTd3wr6GNEmC9JbACw=" - }, - "error_prone_annotations-2.3.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.pom" - ], - "hash": "sha256-EyZziktPfMrPYHuGahH7hRk+9g9qWUYRh85yZfm+W+0=" - } - }, - "com.google.j2objc:j2objc-annotations:1.3": { - "j2objc-annotations-1.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" - ], - "hash": "sha256-Ia8wySJnvWEiwOC00gzMtmQaN+r5VsZUDsRx1YTmSns=" - }, - "j2objc-annotations-1.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom" - ], - "hash": "sha256-X6yoJLoRW+5FhzAzff2y/OpGui/XdNQwTtvzD6aj8FU=" - } - }, - "de.undercouch:gradle-download-task:4.1.1": { - "gradle-download-task-4.1.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.jar" - ], - "hash": "sha256-6wi1cOQI1GRnBecKlJYU1DnqKxFFXxZSqwMw3olU2rk=" - }, - "gradle-download-task-4.1.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.pom" - ], - "hash": "sha256-EQnx9xpUJU1ZAzfYudRD+d/AhyjJwdgzVlXMHcyIwLk=" - } - }, - "com.github.gundy:semver4j:0.16.4": { - "semver4j-0.16.4-nodeps.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4-nodeps.jar" - ], - "hash": "sha256-P1nspRY3TM1P01UWJb9Q+KSxkfcAUI985IZkYKYSivA=" - }, - "semver4j-0.16.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom" - ], - "hash": "sha256-MgAdskQ7M53SH1t5/ynRreci0boIDCFL3oGfD3LRYE0=" - } - }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.21": { - "kotlin-compiler-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar" - ], - "hash": "sha256-X5ZQPNgiqmwg7abHFqVTxBTYAO0Mbn1lX6Gx+/1P7Cs=" - }, - "kotlin-compiler-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom" - ], - "hash": "sha256-wpULrWEPTie9iidbgcDoPIUfGD1gTuH7iRJV9DRa9EE=" - } - }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.6.21": { - "kotlin-daemon-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar" - ], - "hash": "sha256-UcPsHDLDbWVw2DFC6v4qJCk08WXwt4w4YTdpBfkPLhI=" - }, - "kotlin-daemon-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom" - ], - "hash": "sha256-tFZZFoP6YHGHAFr0sx0x1DYE4CHWBFUf8PIubdpWK5o=" - } - }, - "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } - }, - "net.java.dev.jna:jna:5.6.0": { - "jna-5.6.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], - "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" - }, - "jna-5.6.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], - "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" - } - }, - "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.6.21": { - "kotlin-annotation-processing-gradle-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.jar" - ], - "hash": "sha256-tA86gSFVnlAjnFXvh2Z6IYBRG7GTQfzIYZh+T4TOYog=" - }, - "kotlin-annotation-processing-gradle-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.pom" - ], - "hash": "sha256-MImLOrD3X6VZjABz0qoqV9yctWnJ6Mb/O6UXUopMEHE=" - } - }, - "org.jetbrains.kotlin:kotlin-android-extensions:1.6.21": { - "kotlin-android-extensions-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.jar" - ], - "hash": "sha256-QY25MO/hevs27AnooGI1615PYAsrXKFIeEIsn5lEbPs=" - }, - "kotlin-android-extensions-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.pom" - ], - "hash": "sha256-oWU+E091vwu2aNklZdd/Qy3lGijcUcNK9eOBS53tCsQ=" - } - }, - "org.jetbrains.kotlin:kotlin-compiler-runner:1.6.21": { - "kotlin-compiler-runner-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.jar" - ], - "hash": "sha256-IGGw47e3Uwv2cg2LBBC+Eyb7Fs1NrcN+d8Aqz+/loLM=" - }, - "kotlin-compiler-runner-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.pom" - ], - "hash": "sha256-b0Ofb0jeG+QltfdQlLbqpICL6hG8LjzmtUTG4zOQtSU=" - } - }, - "org.jetbrains.kotlin:kotlin-build-common:1.6.21": { - "kotlin-build-common-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.jar" - ], - "hash": "sha256-Y+6kBdNeNOggJcL0FW49R1fLjyWUmWIzVspma9IQAZ0=" - }, - "kotlin-build-common-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.pom" - ], - "hash": "sha256-LRDfBINfB7h6qBoOf+xAbSwawRxU5+CPCOtRGv5btI8=" - } - }, - "org.jetbrains.kotlin:kotlin-daemon-client:1.6.21": { - "kotlin-daemon-client-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.jar" - ], - "hash": "sha256-ZHawBzZPVFzmd6ObkzG8IbVqvXtWbwOfUfIVCKOQL6c=" - }, - "kotlin-daemon-client-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.pom" - ], - "hash": "sha256-Q8EnIKTydrNdwEOWEo6bf7Goq9B6FstAnGwNZwaiMWs=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.21": { - "kotlin-scripting-compiler-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar" - ], - "hash": "sha256-XJNzrzrkC3PW12JLJOjOEXIUSV2GLebSz7YYpxGRBrE=" - }, - "kotlin-scripting-compiler-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom" - ], - "hash": "sha256-C32qtju7PFTd0+NF6wzLI3aAv9TDh7Zfzllt/0uEe9s=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.6.21": { - "kotlin-scripting-compiler-impl-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar" - ], - "hash": "sha256-5ARLjeAehGM5I3BvQ82oDTfYu++M6ahm+dlZYt3SBIA=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom" - ], - "hash": "sha256-gIxqOEi7Xk9sYWmKxYkxIVc8Q9s4FCNW6D3q0EyzhjQ=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-common:1.6.21": { - "kotlin-scripting-common-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar" - ], - "hash": "sha256-v79fA2I3zTPCX7oz1IlI2ZXbgYbOPwnDGvnCnIDOnK4=" - }, - "kotlin-scripting-common-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom" - ], - "hash": "sha256-qgWvDyJWUokIeXiduzo6UY4XdWqFsT1UCo3P3wPL+5w=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm:1.6.21": { - "kotlin-scripting-jvm-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar" - ], - "hash": "sha256-ksA/6r9L3ZLVoixRp0i9NAJ0Z8PY9MZftbV0uGsH0QQ=" - }, - "kotlin-scripting-jvm-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom" - ], - "hash": "sha256-i5q1hXoYheSL2uAPqosix0sNPkCmNPyeCadG+op1fTI=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib:1.6.21": { - "kotlin-stdlib-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.jar" - ], - "hash": "sha256-c5xSZnK7M3Vzso9jr6gwbrCIsMOgln9W1sifSjASpJI=" - }, - "kotlin-stdlib-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.pom" - ], - "hash": "sha256-zkJyW6Ab2DbNqmZ9l032hL9vjxXng5JjMgraf/quHzQ=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21": { - "kotlin-stdlib-common-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.jar" - ], - "hash": "sha256-GDvsWc2fOhSVexkOjIec8RlL0fEGsKe24cu4eQ0kI2M=" - }, - "kotlin-stdlib-common-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom" - ], - "hash": "sha256-W8FW7nP9PC2sil7FSNWBtjMzNUfC/r7Zz2VH//FSa6I=" - } - }, - "org.jetbrains:annotations:13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } - }, - "com.natpryce:konfig:1.6.10.0": { - "konfig-1.6.10.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.jar" - ], - "hash": "sha256-1Va6vANYRVP1/TzEaJTF6jMxCSv7qufqYm1bjUznk7s=" - }, - "konfig-1.6.10.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.pom" - ], - "hash": "sha256-1NTlAHxEbyBlnbIqc2WXwLCFOLy6FL1HEND4VNxxFYg=" - } - }, - "com.github.pengrad:java-telegram-bot-api:4.6.0": { - "java-telegram-bot-api-4.6.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.jar" - ], - "hash": "sha256-w4H/cErewM/mZbrnUYtwiT5Czf83Smb0qYxGfeG/TdU=" - }, - "java-telegram-bot-api-4.6.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.pom" - ], - "hash": "sha256-nZxF//5qwbIbZffUK0k2T/gnnX5pLU9wF0BLLhC+YsE=" - } - }, - "com.google.code.gson:gson:2.8.5": { - "gson-2.8.5.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar" - ], - "hash": "sha256-IzoBSfw2XJ9u29aDz+JmsZvcdzvpjqva9rPJJLSOfYE=" - }, - "gson-2.8.5.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom" - ], - "hash": "sha256-uDCFV6f8zJLZ/nyM0FmSWLNhKF0uzedontqYhDJVoJI=" - } - }, - "com.squareup.okhttp3:okhttp:3.12.3": { - "okhttp-3.12.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.jar" - ], - "hash": "sha256-gUWW1U7f2Ut9nYcSvzeYZ9ObCQQo3TjFEG0N7V2jVv8=" - }, - "okhttp-3.12.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.pom" - ], - "hash": "sha256-xXZHCTgwkLDEfEiizwh2OTvt1Ihmv83hk0NJf/oXuEQ=" - } - }, - "com.squareup.okio:okio:1.15.0": { - "okio-1.15.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.jar" - ], - "hash": "sha256-aT+jGafohDMAYCsgQCO3Z08Qbry1d/LdWAchK2YRi9I=" - }, - "okio-1.15.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom" - ], - "hash": "sha256-8cELFIDRq3X7BRoHsnPjfNolJel+Fgfug+aDO3Dhv84=" - } - }, - "com.squareup.okhttp3:logging-interceptor:3.12.3": { - "logging-interceptor-3.12.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.jar" - ], - "hash": "sha256-NNEihOBDYkI+VFe03a74xNhLyNgN1K0ZQ+Y8hQf4FXY=" - }, - "logging-interceptor-3.12.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.pom" - ], - "hash": "sha256-H/YmwXE+Itb1bpLtvctOnBRMszSoT6gAsHAfmW+xp/I=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3": { - "kotlinx-coroutines-core-1.3.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.jar" - ], - "hash": "sha256-91+LDzJgcX1FNZ+elv9mYT+gY+QGUSCwZ8yQcleghmo=" - }, - "kotlinx-coroutines-core-1.3.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom" - ], - "hash": "sha256-KZmeUobJiKm3K3xt/rmE2fohxRcY9bb5P1Yh5wClN/4=" - } - }, - "io.javalin:javalin:3.7.0": { - "javalin-3.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.jar" - ], - "hash": "sha256-YGYQPPI2In7IacUllknrErvlwFyH8MHp9y86RGYOZ3I=" - }, - "javalin-3.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.pom" - ], - "hash": "sha256-11U3Www5qZiAEH3sDAzdMgDx7qi2npxtFkYdyuR050M=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61": { - "kotlin-stdlib-jdk8-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar" - ], - "hash": "sha256-ODm6fet5g3XaGAe8Rp0c8xXbemJ1WZ9zMYQ3R3LsOyE=" - }, - "kotlin-stdlib-jdk8-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom" - ], - "hash": "sha256-4wGH5XIMpkC45oaG8g3QJQ3O8Bk9VuVWnDxKYSdzErY=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61": { - "kotlin-stdlib-jdk7-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar" - ], - "hash": "sha256-EfSlfj59gfPxUtXc7+Ob13YUtalBJf87EVJrChmsOYk=" - }, - "kotlin-stdlib-jdk7-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom" - ], - "hash": "sha256-xBYICuq9uRGKCO54wo4oVgOM2FhYQipx98Rr8nb2Z6c=" - } - }, - "org.slf4j:slf4j-api:1.8.0-beta4": { - "slf4j-api-1.8.0-beta4.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar" - ], - "hash": "sha256-YCtxIynIS0qDxARk9P39D+QjjFPvOXE5qGcGRznb9OA=" - }, - "slf4j-api-1.8.0-beta4.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.pom" - ], - "hash": "sha256-+DFtKKzyUrIbHp6O7ZqEwq+9yOBA9p06ELq4E9PYWoU=" - } - }, - "org.eclipse.jetty:jetty-server:9.4.25.v20191220": { - "jetty-server-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.jar" - ], - "hash": "sha256-z89tvOS+zuXwZw2bx6do0bc87wyEZj6CrMC5EN8lZfQ=" - }, - "jetty-server-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.pom" - ], - "hash": "sha256-uWOogVUMUf5hOTgJbqfwWZLoGzBBy8faXgb6+8/YZWk=" - } - }, - "javax.servlet:javax.servlet-api:3.1.0": { - "javax.servlet-api-3.1.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" - ], - "hash": "sha256-r0VrLdQcToLPVPPnQ7xniXPZ/jW9TTBx+gXH5TM7hII=" - }, - "javax.servlet-api-3.1.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom" - ], - "hash": "sha256-sxEJ4i6j8t8a15VUMucYo13vUK5sGWmANK+ooM+ekGk=" - } - }, - "org.eclipse.jetty:jetty-http:9.4.25.v20191220": { - "jetty-http-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.jar" - ], - "hash": "sha256-3JxGbw/kvzf9X02iPQFoSwZ63poWAsTzxbaUvMIIR7o=" - }, - "jetty-http-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.pom" - ], - "hash": "sha256-upIlnnZtESJEah+zuPZAXnroxcQS8i6XbLCEyoxhm4c=" - } - }, - "org.eclipse.jetty:jetty-util:9.4.25.v20191220": { - "jetty-util-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.jar" - ], - "hash": "sha256-IjeA1yTBx0Y8MjOoLAdobz/XigIvVg0BAlfb5AKODRQ=" - }, - "jetty-util-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.pom" - ], - "hash": "sha256-iEWSOTxmB1pqb6Z9iY532crIf1lIy10xDPyN5Z7wE8Y=" - } - }, - "org.eclipse.jetty:jetty-io:9.4.25.v20191220": { - "jetty-io-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.jar" - ], - "hash": "sha256-6cMdtQO2B1/UPxVTGQMAfB6Cn8JF2jQEtuQyfyTvlWk=" - }, - "jetty-io-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.pom" - ], - "hash": "sha256-q1nyQDwSIWhSvBzyhOVhETo9LgsZUmMwmLBfOQW9kYE=" - } - }, - "org.eclipse.jetty:jetty-webapp:9.4.25.v20191220": { - "jetty-webapp-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.jar" - ], - "hash": "sha256-qnWB2sNcrVdLA82aFEuibc9DeZ0k7P9enzoGiKJzLvE=" - }, - "jetty-webapp-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.pom" - ], - "hash": "sha256-HRXbctxeN+O+7iEjd1PsYkXn/sXj/ehUK5Yf/ZB9Ufw=" - } - }, - "org.eclipse.jetty:jetty-xml:9.4.25.v20191220": { - "jetty-xml-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.jar" - ], - "hash": "sha256-+xNsUWNTj8WHQuqlbfRIdlu4FvJd43Hasf6u5612tN8=" - }, - "jetty-xml-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.pom" - ], - "hash": "sha256-05fGZk1fr9j7VX7NJU4EZP16bakwG60B4C248SAFvrM=" - } - }, - "org.eclipse.jetty:jetty-servlet:9.4.25.v20191220": { - "jetty-servlet-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.jar" - ], - "hash": "sha256-LU0t1OZdCWL0/xHTycytMKYmN3fgVpwbVzE4aLNHchw=" - }, - "jetty-servlet-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.pom" - ], - "hash": "sha256-tw95bbbqAGKLv7ph5aLgMRLjJ10OaIHJN/ARwn/wXos=" - } - }, - "org.eclipse.jetty:jetty-security:9.4.25.v20191220": { - "jetty-security-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.jar" - ], - "hash": "sha256-Y3HBY7kqyNb6sIyx2rkdDmkOclZoc9j3g706d5Oj2iY=" - }, - "jetty-security-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.pom" - ], - "hash": "sha256-2j1qeYtoSPOXIPxweDTha+S8pC31qiXCWSK5Mvz+rus=" - } - }, - "org.eclipse.jetty.websocket:websocket-server:9.4.25.v20191220": { - "websocket-server-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.jar" - ], - "hash": "sha256-PjO/DwuuXX+/Rx16JWroB4UCkGoxIaCgANkU39F21bo=" - }, - "websocket-server-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.pom" - ], - "hash": "sha256-o9WaXSoxrXskMRuXh2Eog5sNeO+oH4blG6yqelb5MKQ=" - } - }, - "org.eclipse.jetty.websocket:websocket-common:9.4.25.v20191220": { - "websocket-common-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.jar" - ], - "hash": "sha256-1bvWkUvEIbKOB6MXkc2ZKgBnQX1rX9Bapkq1hDrydzw=" - }, - "websocket-common-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.pom" - ], - "hash": "sha256-ukxD7w1zKeye8StLaAa+D3rHPCQRm8vkvj1m7ebbmlQ=" - } - }, - "org.eclipse.jetty.websocket:websocket-api:9.4.25.v20191220": { - "websocket-api-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.jar" - ], - "hash": "sha256-sRCCel9HyDUQMj7hm+h+N7FUDhVTfNAhqTVJ4El0f68=" - }, - "websocket-api-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.pom" - ], - "hash": "sha256-xn/BVBQDGiWCGJri17IMVhDTUvWkf4fSi8+1lJQTWcs=" - } - }, - "org.eclipse.jetty.websocket:websocket-client:9.4.25.v20191220": { - "websocket-client-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.jar" - ], - "hash": "sha256-dIMBH4pyWNlP62P+SjZSCYG8HYXsPdGxSJlX1AcRFOw=" - }, - "websocket-client-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.pom" - ], - "hash": "sha256-AzAQdDEZ7xKiB2CXLdHAu6BwLuiVU5LtP/QdF2RMOs4=" - } - }, - "org.eclipse.jetty:jetty-client:9.4.25.v20191220": { - "jetty-client-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.jar" - ], - "hash": "sha256-qwUsaY1GjdLLjZ1bcH5VqUQDDZFfT59BrDzc+Cs9xuA=" - }, - "jetty-client-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.pom" - ], - "hash": "sha256-ixNwOlizo3BtJIiemlXDSRu+XY+DZdOoKkvvqcbp+eM=" - } - }, - "org.eclipse.jetty.websocket:websocket-servlet:9.4.25.v20191220": { - "websocket-servlet-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.jar" - ], - "hash": "sha256-nYoe6bmGzp/JJM3ai9fvzxwLZ0X3qWa1B8x3WU/vIms=" - }, - "websocket-servlet-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.pom" - ], - "hash": "sha256-WgVNHE2/17gfAqoOIR+pm7ZHZEn6T48swQGjvPtT7wY=" - } - }, - "org.slf4j:slf4j-simple:1.8.0-beta4": { - "slf4j-simple-1.8.0-beta4.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.jar" - ], - "hash": "sha256-usZqvFtEYt/2Lh4ZqzsKZcFg681WTPJZENsAOo5WnP0=" - }, - "slf4j-simple-1.8.0-beta4.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.pom" - ], - "hash": "sha256-oXrS6OU00OgZ6o0UIT3nSNRlD/8qJX0+kqE9oxAoe/c=" - } - }, - "org.xerial:sqlite-jdbc:3.30.1": { - "sqlite-jdbc-3.30.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.jar" - ], - "hash": "sha256-KAA0qJkwABBMWza8XhE5sOgt8d6c/ZUfUpva3q9vRW0=" - }, - "sqlite-jdbc-3.30.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.pom" - ], - "hash": "sha256-eGpZKh7AtwPJJVOlE37gAxGb5UmlGTM05t44WrKGb3I=" - } - }, - "org.postgresql:postgresql:42.2.2": { - "postgresql-42.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.jar" - ], - "hash": "sha256-GZZSQCajAnhT85MuhjnvgTgH0bY/4Ugy9BD/+kJ0+nA=" - }, - "postgresql-42.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.pom" - ], - "hash": "sha256-NbNCwrBu1Cf6VP/xw3GNQ2HvrcNC7DJM7DnBeKm481Y=" - } - }, - "com.fasterxml.jackson.core:jackson-databind:2.10.1": { - "jackson-databind-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar" - ], - "hash": "sha256-LSP0cAFJIjNWWt9aNPIl8q6JVkzuCAJIc+w2t4Qu3kY=" - }, - "jackson-databind-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.pom" - ], - "hash": "sha256-OGlQZeP1ILBbvY6lmC5ba1vZ+FYpZ7g9rLfQerCMauc=" - } - }, - "com.fasterxml.jackson.core:jackson-annotations:2.10.1": { - "jackson-annotations-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar" - ], - "hash": "sha256-Zz+K4Wvs6k+pN0BLOoUUF/r0LfO7xZICi74r/gzJ2Ms=" - }, - "jackson-annotations-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.pom" - ], - "hash": "sha256-7OURA2Z+iBHw/3RYmGryFxhi5UuYE8FwjPk3kESH+Vw=" - } - }, - "com.fasterxml.jackson.core:jackson-core:2.10.1": { - "jackson-core-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar" - ], - "hash": "sha256-eb/73NNJ9ppawlLitAlhMXBDhq9PoU2VOV6poOQjzzM=" - }, - "jackson-core-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.pom" - ], - "hash": "sha256-EXkJC3ILJankJmQwLwM0oiQLMMcoC0IkJeT0UZ5bLP4=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib:1.3.61": { - "kotlin-stdlib-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.jar" - ], - "hash": "sha256-5R5RJhmn52UKMOtOs+nAPmkJx7XjwCZATgdiVMCYuTI=" - }, - "kotlin-stdlib-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom" - ], - "hash": "sha256-2+W6vNjUPpsIwoRWgLU/wbs+BRxIBYAt3Q7T6OLFCoQ=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61": { - "kotlin-stdlib-common-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.jar" - ], - "hash": "sha256-oufzQc8wR7XwChkX73d9MjzasqVzd0aLjtYqoxRpz38=" - }, - "kotlin-stdlib-common-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom" - ], - "hash": "sha256-4i2wCbsaYWNtlCVjWYlzbbXj/KSUgJq/JERo3EdM/AQ=" - } - }, - "org.jetbrains.kotlin:kotlin-script-runtime:1.6.21": { - "kotlin-script-runtime-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.jar" - ], - "hash": "sha256-YGw0p+bo5DnpIIdl59dbHbz4Dzg1Pz4puydFbXs3EXE=" - }, - "kotlin-script-runtime-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.pom" - ], - "hash": "sha256-jVeQOOsdLK0DMFKOKdyMy4rozQ1WClRMXBswqT7O/t4=" - } - }, - "org.jetbrains.kotlin:kotlin-reflect:1.6.21": { - "kotlin-reflect-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.jar" - ], - "hash": "sha256-Hh9XIJ9yOMP9FzWhuTOaVlZVB9yiSfg3G/WdkfYBrqo=" - }, - "kotlin-reflect-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.pom" - ], - "hash": "sha256-2nHh493COI1nVkFnLi8DFtucnSEvlG8CbUoOahM2p/M=" - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.21": { - "kotlin-klib-commonizer-embeddable-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.jar" - ], - "hash": "sha256-1jgafq67fkj8p2v1u55fQ/pW3eb9UQXK6N4TXmMoD3A=" - }, - "kotlin-klib-commonizer-embeddable-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.pom" - ], - "hash": "sha256-bz7nSBQNsbaG5nqJehadbeQv1nQkHVVA3FK7o2Re/i4=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21": { - "kotlin-stdlib-jdk8-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.jar" - ], - "hash": "sha256-2rRUibR3NtWfzkS4BnbxlHqba8qxD9YOh4qDvYKmlUw=" - }, - "kotlin-stdlib-jdk8-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.pom" - ], - "hash": "sha256-g2oReaCNJJFGl9JhLgO4SKCHyAy0sMoj+c+rJH86dcQ=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21": { - "kotlin-stdlib-jdk7-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.jar" - ], - "hash": "sha256-8bBjTbuUFyA4RjAguy3UXKJoSfjOKdYlrLDxVp0R2+4=" - }, - "kotlin-stdlib-jdk7-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.pom" - ], - "hash": "sha256-ARzSjruf3oFrA1nVrhCjZ07A/yxTEMBBLCDv6Oo9oG4=" - } - }, - "com.winterbe:expekt:0.5.0": { - "expekt-0.5.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.jar" - ], - "hash": "sha256-mKJnQqgnRs1u5m7/u8PK/TInA+onhhf734u5tU3O8Xw=" - }, - "expekt-0.5.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.pom" - ], - "hash": "sha256-We03cwfzVZIPORBAQ6YBDDrnbKWfKULGxk3Ttg0pEsc=" - } - }, - "org.spekframework.spek2:spek-dsl-jvm:2.0.9": { - "spek-dsl-jvm-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.jar" - ], - "hash": "sha256-gohf+MCcJfvntBQS/IoIyCAn8kuE6gH3ZL5jm8CYGeg=" - }, - "spek-dsl-jvm-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.pom" - ], - "hash": "sha256-q3b2C4rYViJC615qA1SLpiL6xHDFpE6pzckZ34VzgQQ=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib:1.0.3": { - "kotlin-stdlib-1.0.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.jar" - ], - "hash": "sha256-ZyHVKFgAZF7WgZP35t0H0srOCd6fO3XN8fMFD0Y1l4E=" - }, - "kotlin-stdlib-1.0.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.pom" - ], - "hash": "sha256-QK5yi+5hvXgSHcWjdko/vH1jRYaHuRmI2qXKMhFQNx0=" - } - }, - "org.jetbrains.kotlin:kotlin-runtime:1.0.3": { - "kotlin-runtime-1.0.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.jar" - ], - "hash": "sha256-jBkPOBLPoR0I6wFBuMh36jJC8N3Q6r/llSV0Pq5ifo4=" - }, - "kotlin-runtime-1.0.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.pom" - ], - "hash": "sha256-LaX+tSEGymCnZiDUaRgktUkbyi7ojMJVcwALCX3lRRc=" - } - }, - "org.spekframework.spek2:spek-runner-junit5:2.0.9": { - "spek-runner-junit5-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.jar" - ], - "hash": "sha256-K0ZmWbdh12OKtc2CX8yC3CrA1FPJ6yAKGUAHG4KkpYY=" - }, - "spek-runner-junit5-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.pom" - ], - "hash": "sha256-7GcxgitATmAvUWoOpzJFBWgHoMWg2Kb4SkTjqnfrSjg=" - } - }, - "org.spekframework.spek2:spek-runtime-jvm:2.0.9": { - "spek-runtime-jvm-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.jar" - ], - "hash": "sha256-dZ18fuF78XJYwySioaGwhusrz2QnnBfh+av1Xsph+nQ=" - }, - "spek-runtime-jvm-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.pom" - ], - "hash": "sha256-9o3lUgIMgh6TRueEI5uGtT5rR1+2DQRoWsdGILeiKeU=" - } - }, - "org.jetbrains.kotlin:kotlin-reflect:1.3.50": { - "kotlin-reflect-1.3.50.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar" - ], - "hash": "sha256-ZFgxmepaVK79G9FZUoiSX3hCJu5WLR3SeQEcYHWz16Q=" - }, - "kotlin-reflect-1.3.50.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom" - ], - "hash": "sha256-h0UYHlo+C6/v1GMJxrgQ33JT83n+uYUTHq+NTZwwJjU=" - } - }, - "io.github.classgraph:classgraph:4.8.37": { - "classgraph-4.8.37.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar" - ], - "hash": "sha256-fR0+iCjB7vVJ1B7x7Oc9LFxYz7lRs/Igzwzx3SVVgXM=" - }, - "classgraph-4.8.37.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom" - ], - "hash": "sha256-pJBV0GEleGZQvjPu13rphQCROLhNOWA7wesu08gIWzQ=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.0": { - "kotlinx-coroutines-core-common-1.3.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.jar" - ], - "hash": "sha256-Evof8J9dtFxlGJKP9HmjZPOqEXSRW6JgWkIF7GCwGMM=" - }, - "kotlinx-coroutines-core-common-1.3.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.pom" - ], - "hash": "sha256-V2kqeg3vYTmMQz4s87C0p0l4ZpQuBLFFshG1t57CoYM=" - } - }, - "org.junit.platform:junit-platform-engine:1.5.2": { - "junit-platform-engine-1.5.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.jar" - ], - "hash": "sha256-/yC6StjADvF7rvnFVRL5wC2aaHQPfxrAGppqoCOZMfg=" - }, - "junit-platform-engine-1.5.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.pom" - ], - "hash": "sha256-LUuVVVwh4IXrwd299C156x1VZA3Bk7G35hACQP0vGJ8=" - } - }, - "org.apiguardian:apiguardian-api:1.1.0": { - "apiguardian-api-1.1.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar" - ], - "hash": "sha256-qarp/4rj4XoqGPeRdegrFiZ8JG+708qd+7spCwjc/dQ=" - }, - "apiguardian-api-1.1.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom" - ], - "hash": "sha256-qUW5y1zZt3sscRhE5lnEPsBw71nZ9Qn6n0wYYbSGJxE=" - } - }, - "org.opentest4j:opentest4j:1.2.0": { - "opentest4j-1.2.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" - ], - "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" - }, - "opentest4j-1.2.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" - ], - "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" - } - }, - "org.junit.platform:junit-platform-commons:1.5.2": { - "junit-platform-commons-1.5.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.jar" - ], - "hash": "sha256-/ESv38DyDIXnGmbnlDKBrvO8Hg/WLS1po2y2kB5oLBA=" - }, - "junit-platform-commons-1.5.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.pom" - ], - "hash": "sha256-O9DU3tYyqK+MpYf7Z2QBnedxsda8uJrNViQ1oQCfqto=" + "com.fasterxml.jackson.core:jackson-annotations": { + "2.10.1": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jackson-annotations-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar" + ], + "hash": "sha256-Zz+K4Wvs6k+pN0BLOoUUF/r0LfO7xZICi74r/gzJ2Ms=" + }, + "jackson-annotations-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.pom" + ], + "hash": "sha256-7OURA2Z+iBHw/3RYmGryFxhi5UuYE8FwjPk3kESH+Vw=" + } + } + } + }, + "com.fasterxml.jackson.core:jackson-core": { + "2.10.1": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jackson-core-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar" + ], + "hash": "sha256-eb/73NNJ9ppawlLitAlhMXBDhq9PoU2VOV6poOQjzzM=" + }, + "jackson-core-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.pom" + ], + "hash": "sha256-EXkJC3ILJankJmQwLwM0oiQLMMcoC0IkJeT0UZ5bLP4=" + } + } + } + }, + "com.fasterxml.jackson.core:jackson-databind": { + "2.10.1": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jackson-databind-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar" + ], + "hash": "sha256-LSP0cAFJIjNWWt9aNPIl8q6JVkzuCAJIc+w2t4Qu3kY=" + }, + "jackson-databind-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.pom" + ], + "hash": "sha256-OGlQZeP1ILBbvY6lmC5ba1vZ+FYpZ7g9rLfQerCMauc=" + } + } + } + }, + "com.github.gundy:semver4j": { + "0.16.4": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "semver4j-0.16.4-nodeps.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4-nodeps.jar" + ], + "hash": "sha256-P1nspRY3TM1P01UWJb9Q+KSxkfcAUI985IZkYKYSivA=" + }, + "semver4j-0.16.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom" + ], + "hash": "sha256-MgAdskQ7M53SH1t5/ynRreci0boIDCFL3oGfD3LRYE0=" + } + } + } + }, + "com.github.pengrad:java-telegram-bot-api": { + "4.6.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "java-telegram-bot-api-4.6.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.jar" + ], + "hash": "sha256-w4H/cErewM/mZbrnUYtwiT5Czf83Smb0qYxGfeG/TdU=" + }, + "java-telegram-bot-api-4.6.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.pom" + ], + "hash": "sha256-nZxF//5qwbIbZffUK0k2T/gnnX5pLU9wF0BLLhC+YsE=" + } + } + } + }, + "com.google.code.findbugs:jsr305": { + "3.0.2": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jsr305-3.0.2.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" + ], + "hash": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=" + }, + "jsr305-3.0.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom" + ], + "hash": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4=" + } + } + } + }, + "com.google.code.gson:gson": { + "2.8.9": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "gson-2.8.9.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar" + ], + "hash": "sha256-05mSkYVd5JXJTHQ3YbirUXbP6r4oGlqw2OjUUyb9cD4=" + }, + "gson-2.8.9.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom" + ], + "hash": "sha256-r97W5qaQ+/OtSuZa2jl/CpCl9jCzA9G3QbnJeSb91N4=" + } + } + }, + "2.8.5": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "gson-2.8.5.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar" + ], + "hash": "sha256-IzoBSfw2XJ9u29aDz+JmsZvcdzvpjqva9rPJJLSOfYE=" + }, + "gson-2.8.5.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom" + ], + "hash": "sha256-uDCFV6f8zJLZ/nyM0FmSWLNhKF0uzedontqYhDJVoJI=" + } + } + } + }, + "com.google.errorprone:error_prone_annotations": { + "2.3.4": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "error_prone_annotations-2.3.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar" + ], + "hash": "sha256-uvfW6pfOYGxT4RtoVLpfLOfvXCTd3wr6GNEmC9JbACw=" + }, + "error_prone_annotations-2.3.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.pom" + ], + "hash": "sha256-EyZziktPfMrPYHuGahH7hRk+9g9qWUYRh85yZfm+W+0=" + } + } + } + }, + "com.google.guava:failureaccess": { + "1.0.1": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "failureaccess-1.0.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" + ], + "hash": "sha256-oXHuTHNN0tqDfksWvp30Zhr6typBra8x64Tf2vk2yiY=" + }, + "failureaccess-1.0.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom" + ], + "hash": "sha256-6WBCznj+y6DaK+lkUilHyHtAopG1/TzWcqQ0kkEDxLk=" + } + } + } + }, + "com.google.guava:guava": { + "29.0-jre": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "guava-29.0-jre.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.jar" + ], + "hash": "sha256-sixftm1h57lSJTHQSy+RW1FY6AqgtA7nKCyL+wew2iU=" + }, + "guava-29.0-jre.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.pom" + ], + "hash": "sha256-kCfpNAmJA9KH8bphyLZfAdHR4dp6b7zAS/PeBUQBRCY=" + } + } + } + }, + "com.google.guava:listenablefuture": { + "9999.0-empty-to-avoid-conflict-with-guava": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" + ], + "hash": "sha256-s3KgN9QjCqV/vv/e8w/WEj+cDC24XQrO0AyRuXTzP5k=" + }, + "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom" + ], + "hash": "sha256-GNSx2yYVPU5VB5zh92ux/gXNuGLvmVSojLzE/zi4Z5s=" + } + } + } + }, + "com.google.j2objc:j2objc-annotations": { + "1.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "j2objc-annotations-1.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" + ], + "hash": "sha256-Ia8wySJnvWEiwOC00gzMtmQaN+r5VsZUDsRx1YTmSns=" + }, + "j2objc-annotations-1.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom" + ], + "hash": "sha256-X6yoJLoRW+5FhzAzff2y/OpGui/XdNQwTtvzD6aj8FU=" + } + } + } + }, + "com.natpryce:konfig": { + "1.6.10.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "konfig-1.6.10.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.jar" + ], + "hash": "sha256-1Va6vANYRVP1/TzEaJTF6jMxCSv7qufqYm1bjUznk7s=" + }, + "konfig-1.6.10.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.pom" + ], + "hash": "sha256-1NTlAHxEbyBlnbIqc2WXwLCFOLy6FL1HEND4VNxxFYg=" + } + } + } + }, + "com.squareup.okhttp3:logging-interceptor": { + "3.12.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "logging-interceptor-3.12.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.jar" + ], + "hash": "sha256-NNEihOBDYkI+VFe03a74xNhLyNgN1K0ZQ+Y8hQf4FXY=" + }, + "logging-interceptor-3.12.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.pom" + ], + "hash": "sha256-H/YmwXE+Itb1bpLtvctOnBRMszSoT6gAsHAfmW+xp/I=" + } + } + } + }, + "com.squareup.okhttp3:okhttp": { + "3.12.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "okhttp-3.12.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.jar" + ], + "hash": "sha256-gUWW1U7f2Ut9nYcSvzeYZ9ObCQQo3TjFEG0N7V2jVv8=" + }, + "okhttp-3.12.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.pom" + ], + "hash": "sha256-xXZHCTgwkLDEfEiizwh2OTvt1Ihmv83hk0NJf/oXuEQ=" + } + } + } + }, + "com.squareup.okio:okio": { + "1.15.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "okio-1.15.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.jar" + ], + "hash": "sha256-aT+jGafohDMAYCsgQCO3Z08Qbry1d/LdWAchK2YRi9I=" + }, + "okio-1.15.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom" + ], + "hash": "sha256-8cELFIDRq3X7BRoHsnPjfNolJel+Fgfug+aDO3Dhv84=" + } + } + } + }, + "com.winterbe:expekt": { + "0.5.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "expekt-0.5.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.jar" + ], + "hash": "sha256-mKJnQqgnRs1u5m7/u8PK/TInA+onhhf734u5tU3O8Xw=" + }, + "expekt-0.5.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.pom" + ], + "hash": "sha256-We03cwfzVZIPORBAQ6YBDDrnbKWfKULGxk3Ttg0pEsc=" + } + } + } + }, + "de.undercouch:gradle-download-task": { + "4.1.1": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "gradle-download-task-4.1.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.jar" + ], + "hash": "sha256-6wi1cOQI1GRnBecKlJYU1DnqKxFFXxZSqwMw3olU2rk=" + }, + "gradle-download-task-4.1.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.pom" + ], + "hash": "sha256-EQnx9xpUJU1ZAzfYudRD+d/AhyjJwdgzVlXMHcyIwLk=" + } + } + } + }, + "io.github.classgraph:classgraph": { + "4.8.37": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "classgraph-4.8.37.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar" + ], + "hash": "sha256-fR0+iCjB7vVJ1B7x7Oc9LFxYz7lRs/Igzwzx3SVVgXM=" + }, + "classgraph-4.8.37.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom" + ], + "hash": "sha256-pJBV0GEleGZQvjPu13rphQCROLhNOWA7wesu08gIWzQ=" + } + } + } + }, + "io.javalin:javalin": { + "3.7.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "javalin-3.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.jar" + ], + "hash": "sha256-YGYQPPI2In7IacUllknrErvlwFyH8MHp9y86RGYOZ3I=" + }, + "javalin-3.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.pom" + ], + "hash": "sha256-11U3Www5qZiAEH3sDAzdMgDx7qi2npxtFkYdyuR050M=" + } + } + } + }, + "javax.servlet:javax.servlet-api": { + "3.1.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "javax.servlet-api-3.1.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" + ], + "hash": "sha256-r0VrLdQcToLPVPPnQ7xniXPZ/jW9TTBx+gXH5TM7hII=" + }, + "javax.servlet-api-3.1.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom" + ], + "hash": "sha256-sxEJ4i6j8t8a15VUMucYo13vUK5sGWmANK+ooM+ekGk=" + } + } + } + }, + "net.java.dev.jna:jna": { + "5.6.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" + } + } + } + }, + "org.apiguardian:apiguardian-api": { + "1.1.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "apiguardian-api-1.1.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar" + ], + "hash": "sha256-qarp/4rj4XoqGPeRdegrFiZ8JG+708qd+7spCwjc/dQ=" + }, + "apiguardian-api-1.1.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom" + ], + "hash": "sha256-qUW5y1zZt3sscRhE5lnEPsBw71nZ9Qn6n0wYYbSGJxE=" + } + } + } + }, + "org.checkerframework:checker-qual": { + "2.11.1": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "checker-qual-2.11.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar" + ], + "hash": "sha256-AVIkpLHcbebaBTJz1Np9Oc/qIOYwOBafxFrA0dycWTg=" + }, + "checker-qual-2.11.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom" + ], + "hash": "sha256-zy4MkNj3V0VfSiWOpglzkFNmO9XaannZvVP5NaR955w=" + } + } + } + }, + "org.eclipse.jetty.websocket:websocket-api": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "websocket-api-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.jar" + ], + "hash": "sha256-sRCCel9HyDUQMj7hm+h+N7FUDhVTfNAhqTVJ4El0f68=" + }, + "websocket-api-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.pom" + ], + "hash": "sha256-xn/BVBQDGiWCGJri17IMVhDTUvWkf4fSi8+1lJQTWcs=" + } + } + } + }, + "org.eclipse.jetty.websocket:websocket-client": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "websocket-client-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.jar" + ], + "hash": "sha256-dIMBH4pyWNlP62P+SjZSCYG8HYXsPdGxSJlX1AcRFOw=" + }, + "websocket-client-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.pom" + ], + "hash": "sha256-AzAQdDEZ7xKiB2CXLdHAu6BwLuiVU5LtP/QdF2RMOs4=" + } + } + } + }, + "org.eclipse.jetty.websocket:websocket-common": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "websocket-common-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.jar" + ], + "hash": "sha256-1bvWkUvEIbKOB6MXkc2ZKgBnQX1rX9Bapkq1hDrydzw=" + }, + "websocket-common-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.pom" + ], + "hash": "sha256-ukxD7w1zKeye8StLaAa+D3rHPCQRm8vkvj1m7ebbmlQ=" + } + } + } + }, + "org.eclipse.jetty.websocket:websocket-server": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "websocket-server-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.jar" + ], + "hash": "sha256-PjO/DwuuXX+/Rx16JWroB4UCkGoxIaCgANkU39F21bo=" + }, + "websocket-server-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.pom" + ], + "hash": "sha256-o9WaXSoxrXskMRuXh2Eog5sNeO+oH4blG6yqelb5MKQ=" + } + } + } + }, + "org.eclipse.jetty.websocket:websocket-servlet": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "websocket-servlet-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.jar" + ], + "hash": "sha256-nYoe6bmGzp/JJM3ai9fvzxwLZ0X3qWa1B8x3WU/vIms=" + }, + "websocket-servlet-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.pom" + ], + "hash": "sha256-WgVNHE2/17gfAqoOIR+pm7ZHZEn6T48swQGjvPtT7wY=" + } + } + } + }, + "org.eclipse.jetty:jetty-client": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jetty-client-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.jar" + ], + "hash": "sha256-qwUsaY1GjdLLjZ1bcH5VqUQDDZFfT59BrDzc+Cs9xuA=" + }, + "jetty-client-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.pom" + ], + "hash": "sha256-ixNwOlizo3BtJIiemlXDSRu+XY+DZdOoKkvvqcbp+eM=" + } + } + } + }, + "org.eclipse.jetty:jetty-http": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jetty-http-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.jar" + ], + "hash": "sha256-3JxGbw/kvzf9X02iPQFoSwZ63poWAsTzxbaUvMIIR7o=" + }, + "jetty-http-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.pom" + ], + "hash": "sha256-upIlnnZtESJEah+zuPZAXnroxcQS8i6XbLCEyoxhm4c=" + } + } + } + }, + "org.eclipse.jetty:jetty-io": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jetty-io-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.jar" + ], + "hash": "sha256-6cMdtQO2B1/UPxVTGQMAfB6Cn8JF2jQEtuQyfyTvlWk=" + }, + "jetty-io-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.pom" + ], + "hash": "sha256-q1nyQDwSIWhSvBzyhOVhETo9LgsZUmMwmLBfOQW9kYE=" + } + } + } + }, + "org.eclipse.jetty:jetty-security": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jetty-security-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.jar" + ], + "hash": "sha256-Y3HBY7kqyNb6sIyx2rkdDmkOclZoc9j3g706d5Oj2iY=" + }, + "jetty-security-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.pom" + ], + "hash": "sha256-2j1qeYtoSPOXIPxweDTha+S8pC31qiXCWSK5Mvz+rus=" + } + } + } + }, + "org.eclipse.jetty:jetty-server": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jetty-server-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.jar" + ], + "hash": "sha256-z89tvOS+zuXwZw2bx6do0bc87wyEZj6CrMC5EN8lZfQ=" + }, + "jetty-server-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.pom" + ], + "hash": "sha256-uWOogVUMUf5hOTgJbqfwWZLoGzBBy8faXgb6+8/YZWk=" + } + } + } + }, + "org.eclipse.jetty:jetty-servlet": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jetty-servlet-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.jar" + ], + "hash": "sha256-LU0t1OZdCWL0/xHTycytMKYmN3fgVpwbVzE4aLNHchw=" + }, + "jetty-servlet-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.pom" + ], + "hash": "sha256-tw95bbbqAGKLv7ph5aLgMRLjJ10OaIHJN/ARwn/wXos=" + } + } + } + }, + "org.eclipse.jetty:jetty-util": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jetty-util-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.jar" + ], + "hash": "sha256-IjeA1yTBx0Y8MjOoLAdobz/XigIvVg0BAlfb5AKODRQ=" + }, + "jetty-util-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.pom" + ], + "hash": "sha256-iEWSOTxmB1pqb6Z9iY532crIf1lIy10xDPyN5Z7wE8Y=" + } + } + } + }, + "org.eclipse.jetty:jetty-webapp": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jetty-webapp-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.jar" + ], + "hash": "sha256-qnWB2sNcrVdLA82aFEuibc9DeZ0k7P9enzoGiKJzLvE=" + }, + "jetty-webapp-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.pom" + ], + "hash": "sha256-HRXbctxeN+O+7iEjd1PsYkXn/sXj/ehUK5Yf/ZB9Ufw=" + } + } + } + }, + "org.eclipse.jetty:jetty-xml": { + "9.4.25.v20191220": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jetty-xml-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.jar" + ], + "hash": "sha256-+xNsUWNTj8WHQuqlbfRIdlu4FvJd43Hasf6u5612tN8=" + }, + "jetty-xml-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.pom" + ], + "hash": "sha256-05fGZk1fr9j7VX7NJU4EZP16bakwG60B4C248SAFvrM=" + } + } + } + }, + "org.jetbrains.intellij.deps:trove4j": { + "1.0.20200330": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + } + } + }, + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.6.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom" + ], + "hash": "sha256-hKJnm90W1DkKJmp58Gzaix+iq38XlowYk0l84ZWOHEQ=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-android-extensions-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.jar" + ], + "hash": "sha256-QY25MO/hevs27AnooGI1615PYAsrXKFIeEIsn5lEbPs=" + }, + "kotlin-android-extensions-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.pom" + ], + "hash": "sha256-oWU+E091vwu2aNklZdd/Qy3lGijcUcNK9eOBS53tCsQ=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-annotation-processing-gradle": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-annotation-processing-gradle-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.jar" + ], + "hash": "sha256-tA86gSFVnlAjnFXvh2Z6IYBRG7GTQfzIYZh+T4TOYog=" + }, + "kotlin-annotation-processing-gradle-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.pom" + ], + "hash": "sha256-MImLOrD3X6VZjABz0qoqV9yctWnJ6Mb/O6UXUopMEHE=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-build-common": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-build-common-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.jar" + ], + "hash": "sha256-Y+6kBdNeNOggJcL0FW49R1fLjyWUmWIzVspma9IQAZ0=" + }, + "kotlin-build-common-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.pom" + ], + "hash": "sha256-LRDfBINfB7h6qBoOf+xAbSwawRxU5+CPCOtRGv5btI8=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-compiler-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar" + ], + "hash": "sha256-X5ZQPNgiqmwg7abHFqVTxBTYAO0Mbn1lX6Gx+/1P7Cs=" + }, + "kotlin-compiler-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom" + ], + "hash": "sha256-wpULrWEPTie9iidbgcDoPIUfGD1gTuH7iRJV9DRa9EE=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-compiler-runner-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.jar" + ], + "hash": "sha256-IGGw47e3Uwv2cg2LBBC+Eyb7Fs1NrcN+d8Aqz+/loLM=" + }, + "kotlin-compiler-runner-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.pom" + ], + "hash": "sha256-b0Ofb0jeG+QltfdQlLbqpICL6hG8LjzmtUTG4zOQtSU=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-daemon-client-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.jar" + ], + "hash": "sha256-ZHawBzZPVFzmd6ObkzG8IbVqvXtWbwOfUfIVCKOQL6c=" + }, + "kotlin-daemon-client-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.pom" + ], + "hash": "sha256-Q8EnIKTydrNdwEOWEo6bf7Goq9B6FstAnGwNZwaiMWs=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-daemon-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar" + ], + "hash": "sha256-UcPsHDLDbWVw2DFC6v4qJCk08WXwt4w4YTdpBfkPLhI=" + }, + "kotlin-daemon-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom" + ], + "hash": "sha256-tFZZFoP6YHGHAFr0sx0x1DYE4CHWBFUf8PIubdpWK5o=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.jar" + ], + "hash": "sha256-Z1Oi4RJtP5k6lRryrcBrHsTKJxdulsj2Mnd5kBBNFa0=" + }, + "kotlin-gradle-plugin-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.pom" + ], + "hash": "sha256-7RX0N/j1aW6NU7mszIYS6cas9Wfbau0E/ymq3F4DpC4=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-api-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.jar" + ], + "hash": "sha256-x0wfF5FsrG1ygGJkmI0V4yGa8kYJB5E3Tq6cua8ufLM=" + }, + "kotlin-gradle-plugin-api-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.pom" + ], + "hash": "sha256-JL0R1cjnNGMHSBUXnPuyYCAJIxyEE5aTr3ydVtzU3z8=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-model-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.jar" + ], + "hash": "sha256-YFmxxhMI+4WaAedYsrj9Ctr/dBs9+AI1+t6VrWq4loc=" + }, + "kotlin-gradle-plugin-model-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.pom" + ], + "hash": "sha256-QkLJzsOQLX21n4OMupPDDnMeC10yzDnQ5Ft1gKZUBOo=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-klib-commonizer-api-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.jar" + ], + "hash": "sha256-0s9pUu7ziUqs+KnYzx6MZ78hW075AmioyQMYNFMKOHQ=" + }, + "kotlin-klib-commonizer-api-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.pom" + ], + "hash": "sha256-FICJ7qPCUPClDqxomfFFq5D1mJM8GrT5qsldYXKHJfQ=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-klib-commonizer-embeddable-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.jar" + ], + "hash": "sha256-1jgafq67fkj8p2v1u55fQ/pW3eb9UQXK6N4TXmMoD3A=" + }, + "kotlin-klib-commonizer-embeddable-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.pom" + ], + "hash": "sha256-bz7nSBQNsbaG5nqJehadbeQv1nQkHVVA3FK7o2Re/i4=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-native-utils": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-native-utils-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.jar" + ], + "hash": "sha256-a9hyJOVq4V/+IQTTx2M9cq9sezWCRa08SnbG1f0NNr8=" + }, + "kotlin-native-utils-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.pom" + ], + "hash": "sha256-92q9t+TzvxouyTxiqybO/lKg7UlBAY53w/74BrCXvq8=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-project-model": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-project-model-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.jar" + ], + "hash": "sha256-FLaE+Kc+IpZ4ASS/OB3eAT9YLqIzZ6zgGEWAo4Sa6Ng=" + }, + "kotlin-project-model-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.pom" + ], + "hash": "sha256-dgKHUWgMZJAf76wyN5AmtNC9I3rdfw873ujtXH51LG4=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-reflect-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.jar" + ], + "hash": "sha256-Hh9XIJ9yOMP9FzWhuTOaVlZVB9yiSfg3G/WdkfYBrqo=" + }, + "kotlin-reflect-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.pom" + ], + "hash": "sha256-2nHh493COI1nVkFnLi8DFtucnSEvlG8CbUoOahM2p/M=" + } + } + }, + "1.3.50": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-reflect-1.3.50.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar" + ], + "hash": "sha256-ZFgxmepaVK79G9FZUoiSX3hCJu5WLR3SeQEcYHWz16Q=" + }, + "kotlin-reflect-1.3.50.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom" + ], + "hash": "sha256-h0UYHlo+C6/v1GMJxrgQ33JT83n+uYUTHq+NTZwwJjU=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-runtime": { + "1.0.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-runtime-1.0.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.jar" + ], + "hash": "sha256-jBkPOBLPoR0I6wFBuMh36jJC8N3Q6r/llSV0Pq5ifo4=" + }, + "kotlin-runtime-1.0.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.pom" + ], + "hash": "sha256-LaX+tSEGymCnZiDUaRgktUkbyi7ojMJVcwALCX3lRRc=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-script-runtime-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.jar" + ], + "hash": "sha256-YGw0p+bo5DnpIIdl59dbHbz4Dzg1Pz4puydFbXs3EXE=" + }, + "kotlin-script-runtime-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.pom" + ], + "hash": "sha256-jVeQOOsdLK0DMFKOKdyMy4rozQ1WClRMXBswqT7O/t4=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-common-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar" + ], + "hash": "sha256-v79fA2I3zTPCX7oz1IlI2ZXbgYbOPwnDGvnCnIDOnK4=" + }, + "kotlin-scripting-common-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom" + ], + "hash": "sha256-qgWvDyJWUokIeXiduzo6UY4XdWqFsT1UCo3P3wPL+5w=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-compiler-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar" + ], + "hash": "sha256-XJNzrzrkC3PW12JLJOjOEXIUSV2GLebSz7YYpxGRBrE=" + }, + "kotlin-scripting-compiler-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom" + ], + "hash": "sha256-C32qtju7PFTd0+NF6wzLI3aAv9TDh7Zfzllt/0uEe9s=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-compiler-impl-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar" + ], + "hash": "sha256-5ARLjeAehGM5I3BvQ82oDTfYu++M6ahm+dlZYt3SBIA=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom" + ], + "hash": "sha256-gIxqOEi7Xk9sYWmKxYkxIVc8Q9s4FCNW6D3q0EyzhjQ=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-jvm-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar" + ], + "hash": "sha256-ksA/6r9L3ZLVoixRp0i9NAJ0Z8PY9MZftbV0uGsH0QQ=" + }, + "kotlin-scripting-jvm-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom" + ], + "hash": "sha256-i5q1hXoYheSL2uAPqosix0sNPkCmNPyeCadG+op1fTI=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.jar" + ], + "hash": "sha256-c5xSZnK7M3Vzso9jr6gwbrCIsMOgln9W1sifSjASpJI=" + }, + "kotlin-stdlib-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.pom" + ], + "hash": "sha256-zkJyW6Ab2DbNqmZ9l032hL9vjxXng5JjMgraf/quHzQ=" + } + } + }, + "1.3.61": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.jar" + ], + "hash": "sha256-5R5RJhmn52UKMOtOs+nAPmkJx7XjwCZATgdiVMCYuTI=" + }, + "kotlin-stdlib-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom" + ], + "hash": "sha256-2+W6vNjUPpsIwoRWgLU/wbs+BRxIBYAt3Q7T6OLFCoQ=" + } + } + }, + "1.0.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-1.0.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.jar" + ], + "hash": "sha256-ZyHVKFgAZF7WgZP35t0H0srOCd6fO3XN8fMFD0Y1l4E=" + }, + "kotlin-stdlib-1.0.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.pom" + ], + "hash": "sha256-QK5yi+5hvXgSHcWjdko/vH1jRYaHuRmI2qXKMhFQNx0=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-common-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.jar" + ], + "hash": "sha256-GDvsWc2fOhSVexkOjIec8RlL0fEGsKe24cu4eQ0kI2M=" + }, + "kotlin-stdlib-common-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom" + ], + "hash": "sha256-W8FW7nP9PC2sil7FSNWBtjMzNUfC/r7Zz2VH//FSa6I=" + } + } + }, + "1.3.61": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-common-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.jar" + ], + "hash": "sha256-oufzQc8wR7XwChkX73d9MjzasqVzd0aLjtYqoxRpz38=" + }, + "kotlin-stdlib-common-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom" + ], + "hash": "sha256-4i2wCbsaYWNtlCVjWYlzbbXj/KSUgJq/JERo3EdM/AQ=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-jdk7-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.jar" + ], + "hash": "sha256-8bBjTbuUFyA4RjAguy3UXKJoSfjOKdYlrLDxVp0R2+4=" + }, + "kotlin-stdlib-jdk7-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.pom" + ], + "hash": "sha256-ARzSjruf3oFrA1nVrhCjZ07A/yxTEMBBLCDv6Oo9oG4=" + } + } + }, + "1.3.61": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-jdk7-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar" + ], + "hash": "sha256-EfSlfj59gfPxUtXc7+Ob13YUtalBJf87EVJrChmsOYk=" + }, + "kotlin-stdlib-jdk7-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom" + ], + "hash": "sha256-xBYICuq9uRGKCO54wo4oVgOM2FhYQipx98Rr8nb2Z6c=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-jdk8-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.jar" + ], + "hash": "sha256-2rRUibR3NtWfzkS4BnbxlHqba8qxD9YOh4qDvYKmlUw=" + }, + "kotlin-stdlib-jdk8-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.pom" + ], + "hash": "sha256-g2oReaCNJJFGl9JhLgO4SKCHyAy0sMoj+c+rJH86dcQ=" + } + } + }, + "1.3.61": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-jdk8-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar" + ], + "hash": "sha256-ODm6fet5g3XaGAe8Rp0c8xXbemJ1WZ9zMYQ3R3LsOyE=" + }, + "kotlin-stdlib-jdk8-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom" + ], + "hash": "sha256-4wGH5XIMpkC45oaG8g3QJQ3O8Bk9VuVWnDxKYSdzErY=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-tooling-metadata": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-tooling-metadata-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.jar" + ], + "hash": "sha256-Tsk9BRYGawtki6mHxtPWX2+wZ9wLu6lcHs5h4EKEiOU=" + }, + "kotlin-tooling-metadata-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.pom" + ], + "hash": "sha256-uwYH34aI9gLBwvTQmWMz/YsDtpMoaGpud15S9/sNFxg=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-util-io": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-util-io-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.jar" + ], + "hash": "sha256-wCxUcFYyGLcDvh5xbi0M6leH01y+tryUbfAMAM1CrNI=" + }, + "kotlin-util-io-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.pom" + ], + "hash": "sha256-52nyybmRQIYlhKLAoRLIQ3P0fkryrxbQHOSThRMZMhk=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-util-klib": { + "1.6.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-util-klib-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.jar" + ], + "hash": "sha256-7iGKnoGAwbNIwawc+K1xj2qseLp+JrUIEyNIT2Q8YbI=" + }, + "kotlin-util-klib-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.pom" + ], + "hash": "sha256-EsegqvZnLbHXgxxHGWV/+b9rEXGbD8h9iNcnXzl/lKs=" + } + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "1.3.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlinx-coroutines-core-1.3.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.jar" + ], + "hash": "sha256-91+LDzJgcX1FNZ+elv9mYT+gY+QGUSCwZ8yQcleghmo=" + }, + "kotlinx-coroutines-core-1.3.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom" + ], + "hash": "sha256-KZmeUobJiKm3K3xt/rmE2fohxRcY9bb5P1Yh5wClN/4=" + } + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-common": { + "1.3.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlinx-coroutines-core-common-1.3.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.jar" + ], + "hash": "sha256-Evof8J9dtFxlGJKP9HmjZPOqEXSRW6JgWkIF7GCwGMM=" + }, + "kotlinx-coroutines-core-common-1.3.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.pom" + ], + "hash": "sha256-V2kqeg3vYTmMQz4s87C0p0l4ZpQuBLFFshG1t57CoYM=" + } + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "1.5.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + } + } + } + }, + "org.jetbrains:annotations": { + "13.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } + } + }, + "org.junit.platform:junit-platform-commons": { + "1.5.2": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "junit-platform-commons-1.5.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.jar" + ], + "hash": "sha256-/ESv38DyDIXnGmbnlDKBrvO8Hg/WLS1po2y2kB5oLBA=" + }, + "junit-platform-commons-1.5.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.pom" + ], + "hash": "sha256-O9DU3tYyqK+MpYf7Z2QBnedxsda8uJrNViQ1oQCfqto=" + } + } + } + }, + "org.junit.platform:junit-platform-engine": { + "1.5.2": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "junit-platform-engine-1.5.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.jar" + ], + "hash": "sha256-/yC6StjADvF7rvnFVRL5wC2aaHQPfxrAGppqoCOZMfg=" + }, + "junit-platform-engine-1.5.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.pom" + ], + "hash": "sha256-LUuVVVwh4IXrwd299C156x1VZA3Bk7G35hACQP0vGJ8=" + } + } + } + }, + "org.opentest4j:opentest4j": { + "1.2.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "opentest4j-1.2.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" + ], + "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" + }, + "opentest4j-1.2.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" + ], + "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" + } + } + } + }, + "org.postgresql:postgresql": { + "42.2.2": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "postgresql-42.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.jar" + ], + "hash": "sha256-GZZSQCajAnhT85MuhjnvgTgH0bY/4Ugy9BD/+kJ0+nA=" + }, + "postgresql-42.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.pom" + ], + "hash": "sha256-NbNCwrBu1Cf6VP/xw3GNQ2HvrcNC7DJM7DnBeKm481Y=" + } + } + } + }, + "org.slf4j:slf4j-api": { + "1.8.0-beta4": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "slf4j-api-1.8.0-beta4.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar" + ], + "hash": "sha256-YCtxIynIS0qDxARk9P39D+QjjFPvOXE5qGcGRznb9OA=" + }, + "slf4j-api-1.8.0-beta4.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.pom" + ], + "hash": "sha256-+DFtKKzyUrIbHp6O7ZqEwq+9yOBA9p06ELq4E9PYWoU=" + } + } + } + }, + "org.slf4j:slf4j-simple": { + "1.8.0-beta4": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "slf4j-simple-1.8.0-beta4.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.jar" + ], + "hash": "sha256-usZqvFtEYt/2Lh4ZqzsKZcFg681WTPJZENsAOo5WnP0=" + }, + "slf4j-simple-1.8.0-beta4.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.pom" + ], + "hash": "sha256-oXrS6OU00OgZ6o0UIT3nSNRlD/8qJX0+kqE9oxAoe/c=" + } + } + } + }, + "org.spekframework.spek2:spek-dsl-jvm": { + "2.0.9": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "spek-dsl-jvm-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.jar" + ], + "hash": "sha256-gohf+MCcJfvntBQS/IoIyCAn8kuE6gH3ZL5jm8CYGeg=" + }, + "spek-dsl-jvm-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.pom" + ], + "hash": "sha256-q3b2C4rYViJC615qA1SLpiL6xHDFpE6pzckZ34VzgQQ=" + } + } + } + }, + "org.spekframework.spek2:spek-runner-junit5": { + "2.0.9": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "spek-runner-junit5-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.jar" + ], + "hash": "sha256-K0ZmWbdh12OKtc2CX8yC3CrA1FPJ6yAKGUAHG4KkpYY=" + }, + "spek-runner-junit5-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.pom" + ], + "hash": "sha256-7GcxgitATmAvUWoOpzJFBWgHoMWg2Kb4SkTjqnfrSjg=" + } + } + } + }, + "org.spekframework.spek2:spek-runtime-jvm": { + "2.0.9": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "spek-runtime-jvm-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.jar" + ], + "hash": "sha256-dZ18fuF78XJYwySioaGwhusrz2QnnBfh+av1Xsph+nQ=" + }, + "spek-runtime-jvm-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.pom" + ], + "hash": "sha256-9o3lUgIMgh6TRueEI5uGtT5rR1+2DQRoWsdGILeiKeU=" + } + } + } + }, + "org.xerial:sqlite-jdbc": { + "3.30.1": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "sqlite-jdbc-3.30.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.jar" + ], + "hash": "sha256-KAA0qJkwABBMWza8XhE5sOgt8d6c/ZUfUpva3q9vRW0=" + }, + "sqlite-jdbc-3.30.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.pom" + ], + "hash": "sha256-eGpZKh7AtwPJJVOlE37gAxGb5UmlGTM05t44WrKGb3I=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json b/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json index 5be4cf3..f10a4a8 100644 --- a/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json +++ b/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json @@ -1,576 +1,820 @@ { - "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.1.0": { - "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.1.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.1.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.1.0.pom" - ], - "hash": "sha256-PKFoMBmO4Pc//RRgknW3A5zR/seULCInsEX6JpbjV2c=" - } - }, - "org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.1.0": { - "gradle-kotlin-dsl-plugins-4.1.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.1.0/gradle-kotlin-dsl-plugins-4.1.0.jar" - ], - "hash": "sha256-jpBY+e9xNsVaJKXPKgoZKNb9oYJ2JZ0KktaxAr8m1Cc=" - }, - "gradle-kotlin-dsl-plugins-4.1.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.1.0/gradle-kotlin-dsl-plugins-4.1.0.module" - ], - "hash": "sha256-0KuS4r6L+a8iIhAL4VOLP2R7SvA0+ZA1RJGKO4dxrq8=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.0": { - "kotlin-stdlib-jdk8-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.jar" - ], - "hash": "sha256-pZ+iT98f+1lLrs2/D9EAEPl3zqECNtSH/jRkl3pzd/o=" - }, - "kotlin-stdlib-jdk8-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.pom" - ], - "hash": "sha256-ZNWY3YjiUEZnMeIDBKtvBsu7urfuMitHA7a1n4gcT5I=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib:1.9.0": { - "kotlin-stdlib-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.jar" - ], - "hash": "sha256-Na7/vi21qkRgcs7lD87ki3+p4vxRyjfAzH19C8OdlS4=" - }, - "kotlin-stdlib-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.pom" - ], - "hash": "sha256-N3UiY/Ysw+MlCFbiiO5Kc9QQLXJqd2JwNPlIBsjBCso=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.0": { - "kotlin-stdlib-common-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.jar" - ], - "hash": "sha256-KDJ0IEvXwCB4nsRvj45yr0JE1/VQszkqV+XKAGrXqiw=" - }, - "kotlin-stdlib-common-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.pom" - ], - "hash": "sha256-NmDTanD+s6vknxG5BjPkHTYnNXbwcbDhCdqbOg3wgqU=" - } - }, - "org.jetbrains:annotations:13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.0": { - "kotlin-stdlib-jdk7-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.jar" - ], - "hash": "sha256-t5eaeqyUBV8Nnx/TtHzl/+HLYDKoQrqfvnGG8IUokXg=" - }, - "kotlin-stdlib-jdk7-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.pom" - ], - "hash": "sha256-wRB08MiYqYuGPGFEcdQ409+Soewzgqbjf5NdfXGVS1o=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0": { - "kotlin-gradle-plugin-1.9.0-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.0/kotlin-gradle-plugin-1.9.0-gradle81.jar" - ], - "hash": "sha256-2UOg4ntHRuAfg0BaSfUmoi9HGx2x1GOdb84m1xHv+/4=" - }, - "kotlin-gradle-plugin-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.0/kotlin-gradle-plugin-1.9.0.module" - ], - "hash": "sha256-/mOWRe2PvcW8Et588lRopNsx52O6ea26ogahTeYP0xQ=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.0": { - "kotlin-gradle-plugin-api-1.9.0-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0-gradle81.jar" - ], - "hash": "sha256-AhbssMeA+V47EBoOlc/DZ/LvVrBvLeqqqZJaDxF8INk=" - }, - "kotlin-gradle-plugin-api-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0.jar" - ], - "hash": "sha256-AhbssMeA+V47EBoOlc/DZ/LvVrBvLeqqqZJaDxF8INk=" - }, - "kotlin-gradle-plugin-api-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0.module" - ], - "hash": "sha256-Gu1WWijZE0KsWkuhRsKFal67xjkoXFKVUhefr8dhTds=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.0": { - "kotlin-gradle-plugins-bom-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.0/kotlin-gradle-plugins-bom-1.9.0.module" - ], - "hash": "sha256-/SufabguQ8tQnwhBsYvzxd99q18eC+oDT8CypZnW4pY=" - }, - "kotlin-gradle-plugins-bom-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.0/kotlin-gradle-plugins-bom-1.9.0.pom" - ], - "hash": "sha256-XTmtkDDf0zsLrCn3UAAJzmKHYulP5h8BF3rhNL24D6E=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.0": { - "kotlin-gradle-plugin-model-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.0/kotlin-gradle-plugin-model-1.9.0.jar" - ], - "hash": "sha256-/wWqtoizSnmSp+NfncTewlhD8Tqelwrv5W3T4SKghBU=" - }, - "kotlin-gradle-plugin-model-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.0/kotlin-gradle-plugin-model-1.9.0.module" - ], - "hash": "sha256-ZvS5FEcM80bgXQP4otWenHRvpu3PZMcS8XagiBqsPkk=" - } - }, - "org.jetbrains.kotlin:kotlin-tooling-core:1.9.0": { - "kotlin-tooling-core-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.jar" - ], - "hash": "sha256-5TmiJCi5ysZ/dbLWHytuKnGDUNe7MYI8fcqJB/kJma4=" - }, - "kotlin-tooling-core-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.pom" - ], - "hash": "sha256-KSbD/CFJWXAcjxYNjdyGn3s/pFKv3o3RdcjnwrvHBSI=" - } - }, - "org.jetbrains.kotlin:kotlin-sam-with-receiver:1.9.0": { - "kotlin-sam-with-receiver-1.9.0-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.0/kotlin-sam-with-receiver-1.9.0-gradle81.jar" - ], - "hash": "sha256-mK1U0XMRxg6FyGlDPV3TdpMTIDABJwCb5+nrsyH8xCs=" - }, - "kotlin-sam-with-receiver-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.0/kotlin-sam-with-receiver-1.9.0.module" - ], - "hash": "sha256-GTPz8nsCrr/6LnvBmWN8TKg90xgHqjgwDLHh+jGsoiU=" - } - }, - "org.jetbrains.kotlin:kotlin-assignment:1.9.0": { - "kotlin-assignment-1.9.0-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.0/kotlin-assignment-1.9.0-gradle81.jar" - ], - "hash": "sha256-mBdB+GlpwM4YQ1pcEJePJ3VGMxbOgqp/gmfsf2qfFNk=" - }, - "kotlin-assignment-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.0/kotlin-assignment-1.9.0.module" - ], - "hash": "sha256-kqBzm0y4NgSm3jddsKP+gTUDhZy8+aLtqZ++CXs8e9Y=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.0": { - "kotlin-gradle-plugin-annotations-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.0/kotlin-gradle-plugin-annotations-1.9.0.jar" - ], - "hash": "sha256-KiZbNbx8VYIUJukbajzU9LkWOKC8fIffz+TgX36IRzg=" - }, - "kotlin-gradle-plugin-annotations-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.0/kotlin-gradle-plugin-annotations-1.9.0.pom" - ], - "hash": "sha256-qjXuWp0dpZMV92nH/tsshwBWD1PFaAupKwsniBpKQnE=" - } - }, - "org.jetbrains.kotlin:kotlin-native-utils:1.9.0": { - "kotlin-native-utils-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.0/kotlin-native-utils-1.9.0.jar" - ], - "hash": "sha256-D0gF93S/tcG20UXf5g09ILGu4ACJbOjs8+7/hM5EAjs=" - }, - "kotlin-native-utils-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.0/kotlin-native-utils-1.9.0.pom" - ], - "hash": "sha256-Kazy3vkmve3Z6yBOx3Tnhq3Ek0EGqSlJAK81FVbn52o=" - } - }, - "org.jetbrains.kotlin:kotlin-util-io:1.9.0": { - "kotlin-util-io-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.0/kotlin-util-io-1.9.0.jar" - ], - "hash": "sha256-gdNtxt4/C+rwTDl6BrVoITujc6vO9Tlyt7gvYX1a9ws=" - }, - "kotlin-util-io-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.0/kotlin-util-io-1.9.0.pom" - ], - "hash": "sha256-BUBa+xn3tgbFKr6haJqi1ew9qQL+4teoV2lDOeSgQJQ=" - } - }, - "org.jetbrains.kotlin:kotlin-util-klib:1.9.0": { - "kotlin-util-klib-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.0/kotlin-util-klib-1.9.0.jar" - ], - "hash": "sha256-wtxr820zabdzdVq4k3uX5Tmk1F04Fb7xm+36FUsS0xM=" - }, - "kotlin-util-klib-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.0/kotlin-util-klib-1.9.0.pom" - ], - "hash": "sha256-acZHGaDgRjb2whMZ/lGKC1gieEu66P7YXmUfv6b4pFs=" - } - }, - "org.jetbrains.kotlin:kotlin-project-model:1.9.0": { - "kotlin-project-model-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.0/kotlin-project-model-1.9.0.jar" - ], - "hash": "sha256-rgk26bTGkh8D73eTYcrLu3XtKyIQR5+S9l8cushuNAw=" - }, - "kotlin-project-model-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.0/kotlin-project-model-1.9.0.pom" - ], - "hash": "sha256-6sHGTGAMYAJ7jmjfrTogPEFbn6IkWB1oz6Xnc+hWa3g=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.0": { - "kotlin-gradle-plugin-idea-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.0/kotlin-gradle-plugin-idea-1.9.0.jar" - ], - "hash": "sha256-C7JszuNyr7m1hPKFfofMLz9TK2Kk9/pFdVjzr8Or6ZU=" - }, - "kotlin-gradle-plugin-idea-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.0/kotlin-gradle-plugin-idea-1.9.0.module" - ], - "hash": "sha256-pVg82bC0AS6VWtlhn7kBe1saosJRsFltr1M0kExcpls=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.0": { - "kotlin-gradle-plugin-idea-proto-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.0/kotlin-gradle-plugin-idea-proto-1.9.0.jar" - ], - "hash": "sha256-54mY6iK81fVtE5gszBJMnHM3vRUHVMvcivKhSNdslwA=" - }, - "kotlin-gradle-plugin-idea-proto-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.0/kotlin-gradle-plugin-idea-proto-1.9.0.pom" - ], - "hash": "sha256-QeElaFOKOjQHBMlww6T2D/WAH/3OQlymjKLAtHIhclA=" - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.0": { - "kotlin-klib-commonizer-api-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.0/kotlin-klib-commonizer-api-1.9.0.jar" - ], - "hash": "sha256-hd4ulysLtvRSjB90j0PEhmMUX8hTnsqWwT0bwNo/k10=" - }, - "kotlin-klib-commonizer-api-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.0/kotlin-klib-commonizer-api-1.9.0.pom" - ], - "hash": "sha256-hE+SCI/0j4v64lYh4yStw1d5CM9lD0/bJWlhC4+vaz4=" - } - }, - "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.0": { - "kotlin-build-tools-api-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.0/kotlin-build-tools-api-1.9.0.jar" - ], - "hash": "sha256-0ZyavegKnPQtJezJLLEUjtOhXu2yZy2qHkZubaWQ7sY=" - }, - "kotlin-build-tools-api-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.0/kotlin-build-tools-api-1.9.0.pom" - ], - "hash": "sha256-iIFxmCZbm8BrPzSTWyv2qpj0gA7OvBzOQREN70m3pCE=" - } - }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.0": { - "kotlin-compiler-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.0/kotlin-compiler-embeddable-1.9.0.jar" - ], - "hash": "sha256-lTtQaR103SGf8/ZkRnDD5UnYfN/AphVPFgKmoKXf43M=" - }, - "kotlin-compiler-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.0/kotlin-compiler-embeddable-1.9.0.pom" - ], - "hash": "sha256-7jyHHO39bM9A0ESUQJbihlXeL5NF2ET+7GPMqcXkt8w=" - } - }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.0": { - "kotlin-daemon-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.0/kotlin-daemon-embeddable-1.9.0.jar" - ], - "hash": "sha256-lDGCoTfs1A5ikFjaUtszbO6bZm+AmWtlWELyCmNz35o=" - }, - "kotlin-daemon-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.0/kotlin-daemon-embeddable-1.9.0.pom" - ], - "hash": "sha256-OOMsu5GFenIGy/3cON1O4L5mX0CgEV/21NF348f4kq8=" - } - }, - "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } - }, - "org.jetbrains.kotlin:kotlin-android-extensions:1.9.0": { - "kotlin-android-extensions-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.0/kotlin-android-extensions-1.9.0.jar" - ], - "hash": "sha256-IGdbuyp7aYKnFEUYpRi5qJZfkK6JuMmHiJgBIkSh6jM=" - }, - "kotlin-android-extensions-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.0/kotlin-android-extensions-1.9.0.pom" - ], - "hash": "sha256-WOHIg3JukUaVIDV95u0Xw/mSnI4IsRdKJ6OtbsDrzVI=" - } - }, - "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.0": { - "kotlin-compiler-runner-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.0/kotlin-compiler-runner-1.9.0.jar" - ], - "hash": "sha256-BbWlXUlJFhpxT838ZKXwTYejZMm73IZBs7t6VVfkPqo=" - }, - "kotlin-compiler-runner-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.0/kotlin-compiler-runner-1.9.0.pom" - ], - "hash": "sha256-GIN9BlVntn5bzy4wTYWm4rbSRDz4En9AdnNKTo3yo2E=" - } - }, - "org.jetbrains.kotlin:kotlin-daemon-client:1.9.0": { - "kotlin-daemon-client-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.0/kotlin-daemon-client-1.9.0.jar" - ], - "hash": "sha256-WoyXfn3H8N4tka5Yva3CBBXe9M9dST5aGD+WxZeZAyA=" - }, - "kotlin-daemon-client-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.0/kotlin-daemon-client-1.9.0.pom" - ], - "hash": "sha256-sv50dBgjzM6JMXCWkg3LnOXBa460Z5jTn9jmdwPFidc=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.0": { - "kotlin-scripting-compiler-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.0/kotlin-scripting-compiler-embeddable-1.9.0.jar" - ], - "hash": "sha256-Rp3RIGiVipevzhGIoBRFVM3tZ95aGqC/XKUwOfKdizY=" - }, - "kotlin-scripting-compiler-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.0/kotlin-scripting-compiler-embeddable-1.9.0.pom" - ], - "hash": "sha256-UJ5ikUwwvT43GcDgLk5Df8vxkRa4ouZYSPbUbFTsXJ4=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.0": { - "kotlin-scripting-compiler-impl-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.0/kotlin-scripting-compiler-impl-embeddable-1.9.0.jar" - ], - "hash": "sha256-ZcUlbiyPvdpCbAMobmomgmfXEu+V7C05yVKSlXN4sE0=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.0/kotlin-scripting-compiler-impl-embeddable-1.9.0.pom" - ], - "hash": "sha256-zaYp8KgbqcAKM95QJ/D4/7+fC45E5BlwNHdmu4WLTmM=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-common:1.9.0": { - "kotlin-scripting-common-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.jar" - ], - "hash": "sha256-KFxBwO7tWaDn3LGIuJ+BVBR/vLvVNUcc9piWzNonP4Q=" - }, - "kotlin-scripting-common-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.pom" - ], - "hash": "sha256-C/MG5PRe6xrDAk4pnUybcL4J7OmsAOcLL/mLPtQA8wc=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.0": { - "kotlin-scripting-jvm-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.0/kotlin-scripting-jvm-1.9.0.jar" - ], - "hash": "sha256-Zp3SvGBBjgdRU/2K2NllvlaetlwvMIOIyxEDud8TUVk=" - }, - "kotlin-scripting-jvm-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.0/kotlin-scripting-jvm-1.9.0.pom" - ], - "hash": "sha256-Ymj4BVjTX9qSRruneTKWkrlNWJWWVQfL6KhIkSxQ5yo=" - } - }, - "org.jetbrains.kotlin:kotlin-reflect:1.9.0": { - "kotlin-reflect-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.0/kotlin-reflect-1.9.0.jar" - ], - "hash": "sha256-IHAVm+UU6o6jziyLHueZPm/2CpNWWimfIAYpqn339YE=" - }, - "kotlin-reflect-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.0/kotlin-reflect-1.9.0.pom" - ], - "hash": "sha256-hXFWVnbRiXIEcTBs7ppV2RbAgDgvNabaaBk6x7EvTNs=" - } - }, - "com.gradle.publish:plugin-publish-plugin:1.2.1": { - "plugin-publish-plugin-1.2.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" - ], - "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" - }, - "plugin-publish-plugin-1.2.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" - ], - "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" - } - }, - "org.apache.maven:maven-model:3.6.3": { - "maven-model-3.6.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" - ], - "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" - }, - "maven-model-3.6.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" - ], - "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" - } - }, - "org.jetbrains.kotlin:kotlin-script-runtime:1.9.0": { - "kotlin-script-runtime-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.0/kotlin-script-runtime-1.9.0.jar" - ], - "hash": "sha256-2E0MykEFD6wqlS0RBEc8Mpr/BMULNxMuV1SiCYCa3Z8=" - }, - "kotlin-script-runtime-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.0/kotlin-script-runtime-1.9.0.pom" - ], - "hash": "sha256-FNwHhdGUFP7sEgI91z64DIPQeIC3PlS48IqHj0I9seY=" - } - }, - "org.jetbrains.kotlin:kotlin-reflect:1.6.10": { - "kotlin-reflect-1.6.10.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" - ], - "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" - }, - "kotlin-reflect-1.6.10.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" - ], - "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" - } - }, - "org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.0": { - "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.0/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.jar" - ], - "hash": "sha256-o7OlA4sNEybfGz/lvyCmaQnt1C3qa2P3BgCm8k/0VYw=" - }, - "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.0/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.pom" - ], - "hash": "sha256-WdgiTXgRi2RAwdRsCRzwLOWSnQaTU0hZnxP9wrmoU88=" - } - }, - "org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.0": { - "kotlin-assignment-compiler-plugin-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.0/kotlin-assignment-compiler-plugin-embeddable-1.9.0.jar" - ], - "hash": "sha256-MBY6DUXnN9gHW0kI0PCv8DXvqGa+iFIvQ37Jbg43KZQ=" - }, - "kotlin-assignment-compiler-plugin-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.0/kotlin-assignment-compiler-plugin-embeddable-1.9.0.pom" - ], - "hash": "sha256-HDfsoLIO1JYF6lVsonWq8eyZUaKZge4TNxZYP2pD4J8=" + "com.gradle.publish:plugin-publish-plugin": { + "1.2.1": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "plugin-publish-plugin-1.2.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" + ], + "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" + }, + "plugin-publish-plugin-1.2.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" + ], + "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" + } + } + } + }, + "org.apache.maven:maven-model": { + "3.6.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "maven-model-3.6.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" + ], + "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" + }, + "maven-model-3.6.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" + ], + "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" + } + } + } + }, + "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin": { + "4.1.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.1.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.1.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.1.0.pom" + ], + "hash": "sha256-PKFoMBmO4Pc//RRgknW3A5zR/seULCInsEX6JpbjV2c=" + } + } + } + }, + "org.gradle.kotlin:gradle-kotlin-dsl-plugins": { + "4.1.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "gradle-kotlin-dsl-plugins-4.1.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.1.0/gradle-kotlin-dsl-plugins-4.1.0.jar" + ], + "hash": "sha256-jpBY+e9xNsVaJKXPKgoZKNb9oYJ2JZ0KktaxAr8m1Cc=" + }, + "gradle-kotlin-dsl-plugins-4.1.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.1.0/gradle-kotlin-dsl-plugins-4.1.0.module" + ], + "hash": "sha256-0KuS4r6L+a8iIhAL4VOLP2R7SvA0+ZA1RJGKO4dxrq8=" + } + } + } + }, + "org.jetbrains.intellij.deps:trove4j": { + "1.0.20200330": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-android-extensions-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.0/kotlin-android-extensions-1.9.0.jar" + ], + "hash": "sha256-IGdbuyp7aYKnFEUYpRi5qJZfkK6JuMmHiJgBIkSh6jM=" + }, + "kotlin-android-extensions-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.0/kotlin-android-extensions-1.9.0.pom" + ], + "hash": "sha256-WOHIg3JukUaVIDV95u0Xw/mSnI4IsRdKJ6OtbsDrzVI=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-assignment": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-assignment-1.9.0-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.0/kotlin-assignment-1.9.0-gradle81.jar" + ], + "hash": "sha256-mBdB+GlpwM4YQ1pcEJePJ3VGMxbOgqp/gmfsf2qfFNk=" + }, + "kotlin-assignment-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.0/kotlin-assignment-1.9.0.module" + ], + "hash": "sha256-kqBzm0y4NgSm3jddsKP+gTUDhZy8+aLtqZ++CXs8e9Y=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-assignment-compiler-plugin-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.0/kotlin-assignment-compiler-plugin-embeddable-1.9.0.jar" + ], + "hash": "sha256-MBY6DUXnN9gHW0kI0PCv8DXvqGa+iFIvQ37Jbg43KZQ=" + }, + "kotlin-assignment-compiler-plugin-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.0/kotlin-assignment-compiler-plugin-embeddable-1.9.0.pom" + ], + "hash": "sha256-HDfsoLIO1JYF6lVsonWq8eyZUaKZge4TNxZYP2pD4J8=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-build-tools-api": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-build-tools-api-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.0/kotlin-build-tools-api-1.9.0.jar" + ], + "hash": "sha256-0ZyavegKnPQtJezJLLEUjtOhXu2yZy2qHkZubaWQ7sY=" + }, + "kotlin-build-tools-api-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.0/kotlin-build-tools-api-1.9.0.pom" + ], + "hash": "sha256-iIFxmCZbm8BrPzSTWyv2qpj0gA7OvBzOQREN70m3pCE=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-compiler-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.0/kotlin-compiler-embeddable-1.9.0.jar" + ], + "hash": "sha256-lTtQaR103SGf8/ZkRnDD5UnYfN/AphVPFgKmoKXf43M=" + }, + "kotlin-compiler-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.0/kotlin-compiler-embeddable-1.9.0.pom" + ], + "hash": "sha256-7jyHHO39bM9A0ESUQJbihlXeL5NF2ET+7GPMqcXkt8w=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-compiler-runner-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.0/kotlin-compiler-runner-1.9.0.jar" + ], + "hash": "sha256-BbWlXUlJFhpxT838ZKXwTYejZMm73IZBs7t6VVfkPqo=" + }, + "kotlin-compiler-runner-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.0/kotlin-compiler-runner-1.9.0.pom" + ], + "hash": "sha256-GIN9BlVntn5bzy4wTYWm4rbSRDz4En9AdnNKTo3yo2E=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-daemon-client-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.0/kotlin-daemon-client-1.9.0.jar" + ], + "hash": "sha256-WoyXfn3H8N4tka5Yva3CBBXe9M9dST5aGD+WxZeZAyA=" + }, + "kotlin-daemon-client-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.0/kotlin-daemon-client-1.9.0.pom" + ], + "hash": "sha256-sv50dBgjzM6JMXCWkg3LnOXBa460Z5jTn9jmdwPFidc=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-daemon-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.0/kotlin-daemon-embeddable-1.9.0.jar" + ], + "hash": "sha256-lDGCoTfs1A5ikFjaUtszbO6bZm+AmWtlWELyCmNz35o=" + }, + "kotlin-daemon-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.0/kotlin-daemon-embeddable-1.9.0.pom" + ], + "hash": "sha256-OOMsu5GFenIGy/3cON1O4L5mX0CgEV/21NF348f4kq8=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-1.9.0-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.0/kotlin-gradle-plugin-1.9.0-gradle81.jar" + ], + "hash": "sha256-2UOg4ntHRuAfg0BaSfUmoi9HGx2x1GOdb84m1xHv+/4=" + }, + "kotlin-gradle-plugin-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.0/kotlin-gradle-plugin-1.9.0.module" + ], + "hash": "sha256-/mOWRe2PvcW8Et588lRopNsx52O6ea26ogahTeYP0xQ=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-annotations-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.0/kotlin-gradle-plugin-annotations-1.9.0.jar" + ], + "hash": "sha256-KiZbNbx8VYIUJukbajzU9LkWOKC8fIffz+TgX36IRzg=" + }, + "kotlin-gradle-plugin-annotations-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.0/kotlin-gradle-plugin-annotations-1.9.0.pom" + ], + "hash": "sha256-qjXuWp0dpZMV92nH/tsshwBWD1PFaAupKwsniBpKQnE=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-api-1.9.0-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0-gradle81.jar" + ], + "hash": "sha256-AhbssMeA+V47EBoOlc/DZ/LvVrBvLeqqqZJaDxF8INk=" + }, + "kotlin-gradle-plugin-api-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0.jar" + ], + "hash": "sha256-AhbssMeA+V47EBoOlc/DZ/LvVrBvLeqqqZJaDxF8INk=" + }, + "kotlin-gradle-plugin-api-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0.module" + ], + "hash": "sha256-Gu1WWijZE0KsWkuhRsKFal67xjkoXFKVUhefr8dhTds=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-idea-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.0/kotlin-gradle-plugin-idea-1.9.0.jar" + ], + "hash": "sha256-C7JszuNyr7m1hPKFfofMLz9TK2Kk9/pFdVjzr8Or6ZU=" + }, + "kotlin-gradle-plugin-idea-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.0/kotlin-gradle-plugin-idea-1.9.0.module" + ], + "hash": "sha256-pVg82bC0AS6VWtlhn7kBe1saosJRsFltr1M0kExcpls=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-idea-proto-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.0/kotlin-gradle-plugin-idea-proto-1.9.0.jar" + ], + "hash": "sha256-54mY6iK81fVtE5gszBJMnHM3vRUHVMvcivKhSNdslwA=" + }, + "kotlin-gradle-plugin-idea-proto-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.0/kotlin-gradle-plugin-idea-proto-1.9.0.pom" + ], + "hash": "sha256-QeElaFOKOjQHBMlww6T2D/WAH/3OQlymjKLAtHIhclA=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-model-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.0/kotlin-gradle-plugin-model-1.9.0.jar" + ], + "hash": "sha256-/wWqtoizSnmSp+NfncTewlhD8Tqelwrv5W3T4SKghBU=" + }, + "kotlin-gradle-plugin-model-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.0/kotlin-gradle-plugin-model-1.9.0.module" + ], + "hash": "sha256-ZvS5FEcM80bgXQP4otWenHRvpu3PZMcS8XagiBqsPkk=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugins-bom": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugins-bom-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.0/kotlin-gradle-plugins-bom-1.9.0.module" + ], + "hash": "sha256-/SufabguQ8tQnwhBsYvzxd99q18eC+oDT8CypZnW4pY=" + }, + "kotlin-gradle-plugins-bom-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.0/kotlin-gradle-plugins-bom-1.9.0.pom" + ], + "hash": "sha256-XTmtkDDf0zsLrCn3UAAJzmKHYulP5h8BF3rhNL24D6E=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-klib-commonizer-api-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.0/kotlin-klib-commonizer-api-1.9.0.jar" + ], + "hash": "sha256-hd4ulysLtvRSjB90j0PEhmMUX8hTnsqWwT0bwNo/k10=" + }, + "kotlin-klib-commonizer-api-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.0/kotlin-klib-commonizer-api-1.9.0.pom" + ], + "hash": "sha256-hE+SCI/0j4v64lYh4yStw1d5CM9lD0/bJWlhC4+vaz4=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-native-utils": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-native-utils-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.0/kotlin-native-utils-1.9.0.jar" + ], + "hash": "sha256-D0gF93S/tcG20UXf5g09ILGu4ACJbOjs8+7/hM5EAjs=" + }, + "kotlin-native-utils-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.0/kotlin-native-utils-1.9.0.pom" + ], + "hash": "sha256-Kazy3vkmve3Z6yBOx3Tnhq3Ek0EGqSlJAK81FVbn52o=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-project-model": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-project-model-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.0/kotlin-project-model-1.9.0.jar" + ], + "hash": "sha256-rgk26bTGkh8D73eTYcrLu3XtKyIQR5+S9l8cushuNAw=" + }, + "kotlin-project-model-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.0/kotlin-project-model-1.9.0.pom" + ], + "hash": "sha256-6sHGTGAMYAJ7jmjfrTogPEFbn6IkWB1oz6Xnc+hWa3g=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-reflect-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.0/kotlin-reflect-1.9.0.jar" + ], + "hash": "sha256-IHAVm+UU6o6jziyLHueZPm/2CpNWWimfIAYpqn339YE=" + }, + "kotlin-reflect-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.0/kotlin-reflect-1.9.0.pom" + ], + "hash": "sha256-hXFWVnbRiXIEcTBs7ppV2RbAgDgvNabaaBk6x7EvTNs=" + } + } + }, + "1.6.10": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-reflect-1.6.10.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" + ], + "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" + }, + "kotlin-reflect-1.6.10.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" + ], + "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-sam-with-receiver": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-sam-with-receiver-1.9.0-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.0/kotlin-sam-with-receiver-1.9.0-gradle81.jar" + ], + "hash": "sha256-mK1U0XMRxg6FyGlDPV3TdpMTIDABJwCb5+nrsyH8xCs=" + }, + "kotlin-sam-with-receiver-1.9.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.0/kotlin-sam-with-receiver-1.9.0.module" + ], + "hash": "sha256-GTPz8nsCrr/6LnvBmWN8TKg90xgHqjgwDLHh+jGsoiU=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.0/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.jar" + ], + "hash": "sha256-o7OlA4sNEybfGz/lvyCmaQnt1C3qa2P3BgCm8k/0VYw=" + }, + "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.0/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.pom" + ], + "hash": "sha256-WdgiTXgRi2RAwdRsCRzwLOWSnQaTU0hZnxP9wrmoU88=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-script-runtime-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.0/kotlin-script-runtime-1.9.0.jar" + ], + "hash": "sha256-2E0MykEFD6wqlS0RBEc8Mpr/BMULNxMuV1SiCYCa3Z8=" + }, + "kotlin-script-runtime-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.0/kotlin-script-runtime-1.9.0.pom" + ], + "hash": "sha256-FNwHhdGUFP7sEgI91z64DIPQeIC3PlS48IqHj0I9seY=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-common-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.jar" + ], + "hash": "sha256-KFxBwO7tWaDn3LGIuJ+BVBR/vLvVNUcc9piWzNonP4Q=" + }, + "kotlin-scripting-common-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.pom" + ], + "hash": "sha256-C/MG5PRe6xrDAk4pnUybcL4J7OmsAOcLL/mLPtQA8wc=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-compiler-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.0/kotlin-scripting-compiler-embeddable-1.9.0.jar" + ], + "hash": "sha256-Rp3RIGiVipevzhGIoBRFVM3tZ95aGqC/XKUwOfKdizY=" + }, + "kotlin-scripting-compiler-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.0/kotlin-scripting-compiler-embeddable-1.9.0.pom" + ], + "hash": "sha256-UJ5ikUwwvT43GcDgLk5Df8vxkRa4ouZYSPbUbFTsXJ4=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-compiler-impl-embeddable-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.0/kotlin-scripting-compiler-impl-embeddable-1.9.0.jar" + ], + "hash": "sha256-ZcUlbiyPvdpCbAMobmomgmfXEu+V7C05yVKSlXN4sE0=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.0/kotlin-scripting-compiler-impl-embeddable-1.9.0.pom" + ], + "hash": "sha256-zaYp8KgbqcAKM95QJ/D4/7+fC45E5BlwNHdmu4WLTmM=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-jvm-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.0/kotlin-scripting-jvm-1.9.0.jar" + ], + "hash": "sha256-Zp3SvGBBjgdRU/2K2NllvlaetlwvMIOIyxEDud8TUVk=" + }, + "kotlin-scripting-jvm-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.0/kotlin-scripting-jvm-1.9.0.pom" + ], + "hash": "sha256-Ymj4BVjTX9qSRruneTKWkrlNWJWWVQfL6KhIkSxQ5yo=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.jar" + ], + "hash": "sha256-Na7/vi21qkRgcs7lD87ki3+p4vxRyjfAzH19C8OdlS4=" + }, + "kotlin-stdlib-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.pom" + ], + "hash": "sha256-N3UiY/Ysw+MlCFbiiO5Kc9QQLXJqd2JwNPlIBsjBCso=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-common-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.jar" + ], + "hash": "sha256-KDJ0IEvXwCB4nsRvj45yr0JE1/VQszkqV+XKAGrXqiw=" + }, + "kotlin-stdlib-common-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.pom" + ], + "hash": "sha256-NmDTanD+s6vknxG5BjPkHTYnNXbwcbDhCdqbOg3wgqU=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-jdk7-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.jar" + ], + "hash": "sha256-t5eaeqyUBV8Nnx/TtHzl/+HLYDKoQrqfvnGG8IUokXg=" + }, + "kotlin-stdlib-jdk7-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.pom" + ], + "hash": "sha256-wRB08MiYqYuGPGFEcdQ409+Soewzgqbjf5NdfXGVS1o=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-jdk8-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.jar" + ], + "hash": "sha256-pZ+iT98f+1lLrs2/D9EAEPl3zqECNtSH/jRkl3pzd/o=" + }, + "kotlin-stdlib-jdk8-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.pom" + ], + "hash": "sha256-ZNWY3YjiUEZnMeIDBKtvBsu7urfuMitHA7a1n4gcT5I=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-tooling-core-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.jar" + ], + "hash": "sha256-5TmiJCi5ysZ/dbLWHytuKnGDUNe7MYI8fcqJB/kJma4=" + }, + "kotlin-tooling-core-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.pom" + ], + "hash": "sha256-KSbD/CFJWXAcjxYNjdyGn3s/pFKv3o3RdcjnwrvHBSI=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-util-io": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-util-io-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.0/kotlin-util-io-1.9.0.jar" + ], + "hash": "sha256-gdNtxt4/C+rwTDl6BrVoITujc6vO9Tlyt7gvYX1a9ws=" + }, + "kotlin-util-io-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.0/kotlin-util-io-1.9.0.pom" + ], + "hash": "sha256-BUBa+xn3tgbFKr6haJqi1ew9qQL+4teoV2lDOeSgQJQ=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-util-klib": { + "1.9.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-util-klib-1.9.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.0/kotlin-util-klib-1.9.0.jar" + ], + "hash": "sha256-wtxr820zabdzdVq4k3uX5Tmk1F04Fb7xm+36FUsS0xM=" + }, + "kotlin-util-klib-1.9.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.0/kotlin-util-klib-1.9.0.pom" + ], + "hash": "sha256-acZHGaDgRjb2whMZ/lGKC1gieEu66P7YXmUfv6b4pFs=" + } + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "1.5.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + } + } + } + }, + "org.jetbrains:annotations": { + "13.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "annotations-13.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/classifier.groovy.json b/fixtures/golden/dependency/classifier.groovy.json index c4ee874..ac1d5ef 100644 --- a/fixtures/golden/dependency/classifier.groovy.json +++ b/fixtures/golden/dependency/classifier.groovy.json @@ -1,16 +1,22 @@ { - "com.badlogicgames.gdx:gdx-platform:1.9.9": { - "gdx-platform-1.9.9-natives-desktop.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" - ], - "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" - }, - "gdx-platform-1.9.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" - ], - "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" + "com.badlogicgames.gdx:gdx-platform": { + "1.9.9": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "gdx-platform-1.9.9-natives-desktop.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" + ], + "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" + }, + "gdx-platform-1.9.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" + ], + "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/classifier.kotlin.json b/fixtures/golden/dependency/classifier.kotlin.json index c4ee874..ac1d5ef 100644 --- a/fixtures/golden/dependency/classifier.kotlin.json +++ b/fixtures/golden/dependency/classifier.kotlin.json @@ -1,16 +1,22 @@ { - "com.badlogicgames.gdx:gdx-platform:1.9.9": { - "gdx-platform-1.9.9-natives-desktop.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" - ], - "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" - }, - "gdx-platform-1.9.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" - ], - "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" + "com.badlogicgames.gdx:gdx-platform": { + "1.9.9": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "gdx-platform-1.9.9-natives-desktop.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" + ], + "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" + }, + "gdx-platform-1.9.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" + ], + "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/maven-bom.kotlin.json b/fixtures/golden/dependency/maven-bom.kotlin.json index 9521858..d73bd87 100644 --- a/fixtures/golden/dependency/maven-bom.kotlin.json +++ b/fixtures/golden/dependency/maven-bom.kotlin.json @@ -1,38 +1,56 @@ { - "io.micrometer:micrometer-bom:1.5.1": { - "micrometer-bom-1.5.1.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom" - ], - "hash": "sha256-K/qF6ds8ck5sWvelJBYk+w+K04oQpT/4BtY57WVLRUI=" + "io.micrometer:micrometer-bom": { + "1.5.1": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "micrometer-bom-1.5.1.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom" + ], + "hash": "sha256-K/qF6ds8ck5sWvelJBYk+w+K04oQpT/4BtY57WVLRUI=" + } + } } }, - "io.micrometer:micrometer-core:1.5.1": { - "micrometer-core-1.5.1.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar" - ], - "hash": "sha256-DtgVYBDVGDBWMwSfeKC6O+fwqd+N2q4eTizJgQ1wfI8=" - }, - "micrometer-core-1.5.1.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom" - ], - "hash": "sha256-Cb4KaUHaOvdOz7VpDax6kJKuT2KWY5Ci73foX2xl6xw=" + "io.micrometer:micrometer-core": { + "1.5.1": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "micrometer-core-1.5.1.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar" + ], + "hash": "sha256-DtgVYBDVGDBWMwSfeKC6O+fwqd+N2q4eTizJgQ1wfI8=" + }, + "micrometer-core-1.5.1.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom" + ], + "hash": "sha256-Cb4KaUHaOvdOz7VpDax6kJKuT2KWY5Ci73foX2xl6xw=" + } + } } }, - "org.hdrhistogram:HdrHistogram:2.1.12": { - "HdrHistogram-2.1.12.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar" - ], - "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" - }, - "HdrHistogram-2.1.12.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom" - ], - "hash": "sha256-f7PnkMFU0bXiMXC7jL9/cO8ICa8XIp8dywENd5llEIA=" + "org.hdrhistogram:HdrHistogram": { + "2.1.12": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "HdrHistogram-2.1.12.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar" + ], + "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" + }, + "HdrHistogram-2.1.12.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom" + ], + "hash": "sha256-f7PnkMFU0bXiMXC7jL9/cO8ICa8XIp8dywENd5llEIA=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot-dynamic.groovy.json b/fixtures/golden/dependency/snapshot-dynamic.groovy.json index 61621f4..6ce329a 100644 --- a/fixtures/golden/dependency/snapshot-dynamic.groovy.json +++ b/fixtures/golden/dependency/snapshot-dynamic.groovy.json @@ -1,14 +1,20 @@ { - "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": { - "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { - "urls": [ - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { - "urls": [ - ], - "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" + "org.apache:test-SNAPSHOT1": { + "2.0.2-SNAPSHOT": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { + "urls": [ + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { + "urls": [ + ], + "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json index 61621f4..6ce329a 100644 --- a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json +++ b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json @@ -1,14 +1,20 @@ { - "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": { - "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { - "urls": [ - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { - "urls": [ - ], - "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" + "org.apache:test-SNAPSHOT1": { + "2.0.2-SNAPSHOT": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { + "urls": [ + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { + "urls": [ + ], + "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot-redirect.groovy.json b/fixtures/golden/dependency/snapshot-redirect.groovy.json index cf94179..a8a87e2 100644 --- a/fixtures/golden/dependency/snapshot-redirect.groovy.json +++ b/fixtures/golden/dependency/snapshot-redirect.groovy.json @@ -1,16 +1,22 @@ { - "com.github.anuken:packr:-SNAPSHOT:packr-1.2-g034efe5-114": { - "packr--SNAPSHOT.pom": { - "urls": [ - "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.pom" - ], - "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" - }, - "packr--SNAPSHOT.jar": { - "urls": [ - "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.jar" - ], - "hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" + "com.github.anuken:packr": { + "-SNAPSHOT": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "packr--SNAPSHOT.jar": { + "urls": [ + "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.jar" + ], + "hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" + }, + "packr--SNAPSHOT.pom": { + "urls": [ + "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.pom" + ], + "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot.groovy.json b/fixtures/golden/dependency/snapshot.groovy.json index 9485cd5..850f908 100644 --- a/fixtures/golden/dependency/snapshot.groovy.json +++ b/fixtures/golden/dependency/snapshot.groovy.json @@ -1,16 +1,22 @@ { - "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": { - "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" - ], - "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" + "org.apache:test-SNAPSHOT2": { + "2.0.2-SNAPSHOT": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" + ], + "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot.kotlin.json b/fixtures/golden/dependency/snapshot.kotlin.json index 9485cd5..850f908 100644 --- a/fixtures/golden/dependency/snapshot.kotlin.json +++ b/fixtures/golden/dependency/snapshot.kotlin.json @@ -1,16 +1,22 @@ { - "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": { - "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" - ], - "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" + "org.apache:test-SNAPSHOT2": { + "2.0.2-SNAPSHOT": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" + ], + "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/integration/settings-buildscript.groovy.json b/fixtures/golden/integration/settings-buildscript.groovy.json index 61a1815..eef03c3 100644 --- a/fixtures/golden/integration/settings-buildscript.groovy.json +++ b/fixtures/golden/integration/settings-buildscript.groovy.json @@ -1,128 +1,182 @@ { - "gradle.plugin.net.vivin:gradle-semantic-build-versioning:4.0.0": { - "gradle-semantic-build-versioning-4.0.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar" - ], - "hash": "sha256-UTjmfOjgGUN4ALk8n2+dD8vr763Jb7xOvAl1yZomHvg=" - }, - "gradle-semantic-build-versioning-4.0.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom" - ], - "hash": "sha256-TygodBYH7RAtletfGJ1JbHhA7UY6zqifHlGmBWdxTvc=" + "com.googlecode.javaewah:JavaEWAH": { + "1.1.6": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "JavaEWAH-1.1.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" + ], + "hash": "sha256-941EoeOHfxznSLSoXfUXHl6Omlw8b2O7kAPbb4TM6VI=" + }, + "JavaEWAH-1.1.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom" + ], + "hash": "sha256-f0/5GbHuF783duBYo/IOYXPbI6XkTPLRB+x1cMGGq/A=" + } + } } }, - "org.eclipse.jgit:org.eclipse.jgit:4.8.0.201706111038-r": { - "org.eclipse.jgit-4.8.0.201706111038-r.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar" - ], - "hash": "sha256-SdkS6NXM4N0I3KPTkBiduGkqj34zY8274YJYFGIACro=" - }, - "org.eclipse.jgit-4.8.0.201706111038-r.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom" - ], - "hash": "sha256-pVap9a38avSbKhLnLcPNfkPbj9whbA81iFlyovWton0=" + "com.jcraft:jsch": { + "0.1.54": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jsch-0.1.54.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" + ], + "hash": "sha256-kusnOjMWdiR4/dT+A6DOGELFb0lsnBL+EjXbgEUOH9s=" + }, + "jsch-0.1.54.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom" + ], + "hash": "sha256-q49RIDm+f2riDhjnQ7Sp2KIJWElEMZF9pYrlqu+KNHg=" + } + } } }, - "com.jcraft:jsch:0.1.54": { - "jsch-0.1.54.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" - ], - "hash": "sha256-kusnOjMWdiR4/dT+A6DOGELFb0lsnBL+EjXbgEUOH9s=" - }, - "jsch-0.1.54.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom" - ], - "hash": "sha256-q49RIDm+f2riDhjnQ7Sp2KIJWElEMZF9pYrlqu+KNHg=" + "commons-codec:commons-codec": { + "1.6": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "commons-codec-1.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" + ], + "hash": "sha256-VLNOlBuOFBS9PkDXNu/TSBdy3CbbMpb2qkXOyfYgPYY=" + }, + "commons-codec-1.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom" + ], + "hash": "sha256-oG410//zprgT2UiU6/PkmPlUDIZMWzmueDkH46bHKIk=" + } + } } }, - "com.googlecode.javaewah:JavaEWAH:1.1.6": { - "JavaEWAH-1.1.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" - ], - "hash": "sha256-941EoeOHfxznSLSoXfUXHl6Omlw8b2O7kAPbb4TM6VI=" - }, - "JavaEWAH-1.1.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom" - ], - "hash": "sha256-f0/5GbHuF783duBYo/IOYXPbI6XkTPLRB+x1cMGGq/A=" + "commons-logging:commons-logging": { + "1.1.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "commons-logging-1.1.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" + ], + "hash": "sha256-cJA/b8gumQjI2p8gRD9h2Q8IcKMSZCmR/oRioLk5F4Q=" + }, + "commons-logging-1.1.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom" + ], + "hash": "sha256-MlCsOsa9YO0GMfXNAzUDKymT1j5AWmrgVV0np+SGWEk=" + } + } } }, - "org.apache.httpcomponents:httpclient:4.3.6": { - "httpclient-4.3.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" - ], - "hash": "sha256-eYONnq73PU+FLGOkgIMMOi1LWQ8Ks66BWkiUY+RxQAQ=" - }, - "httpclient-4.3.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom" - ], - "hash": "sha256-0CY09hMekUlhwCqoNnEeuscnBLJ+JsW9Iju62JsbZMM=" + "gradle.plugin.net.vivin:gradle-semantic-build-versioning": { + "4.0.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "gradle-semantic-build-versioning-4.0.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar" + ], + "hash": "sha256-UTjmfOjgGUN4ALk8n2+dD8vr763Jb7xOvAl1yZomHvg=" + }, + "gradle-semantic-build-versioning-4.0.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom" + ], + "hash": "sha256-TygodBYH7RAtletfGJ1JbHhA7UY6zqifHlGmBWdxTvc=" + } + } } }, - "org.apache.httpcomponents:httpcore:4.3.3": { - "httpcore-4.3.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" - ], - "hash": "sha256-UoXegK8WUcSJMTuRqfQMZaTNy2s73nFvzAKNFoaaWpM=" - }, - "httpcore-4.3.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom" - ], - "hash": "sha256-tCf3z2fHWk4/niEI01v0UwNXPBRex3j8rc/6zvF6EmQ=" + "org.apache.httpcomponents:httpclient": { + "4.3.6": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "httpclient-4.3.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" + ], + "hash": "sha256-eYONnq73PU+FLGOkgIMMOi1LWQ8Ks66BWkiUY+RxQAQ=" + }, + "httpclient-4.3.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom" + ], + "hash": "sha256-0CY09hMekUlhwCqoNnEeuscnBLJ+JsW9Iju62JsbZMM=" + } + } } }, - "commons-logging:commons-logging:1.1.3": { - "commons-logging-1.1.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" - ], - "hash": "sha256-cJA/b8gumQjI2p8gRD9h2Q8IcKMSZCmR/oRioLk5F4Q=" - }, - "commons-logging-1.1.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom" - ], - "hash": "sha256-MlCsOsa9YO0GMfXNAzUDKymT1j5AWmrgVV0np+SGWEk=" + "org.apache.httpcomponents:httpcore": { + "4.3.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "httpcore-4.3.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" + ], + "hash": "sha256-UoXegK8WUcSJMTuRqfQMZaTNy2s73nFvzAKNFoaaWpM=" + }, + "httpcore-4.3.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom" + ], + "hash": "sha256-tCf3z2fHWk4/niEI01v0UwNXPBRex3j8rc/6zvF6EmQ=" + } + } } }, - "commons-codec:commons-codec:1.6": { - "commons-codec-1.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" - ], - "hash": "sha256-VLNOlBuOFBS9PkDXNu/TSBdy3CbbMpb2qkXOyfYgPYY=" - }, - "commons-codec-1.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom" - ], - "hash": "sha256-oG410//zprgT2UiU6/PkmPlUDIZMWzmueDkH46bHKIk=" + "org.eclipse.jgit:org.eclipse.jgit": { + "4.8.0.201706111038-r": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "org.eclipse.jgit-4.8.0.201706111038-r.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar" + ], + "hash": "sha256-SdkS6NXM4N0I3KPTkBiduGkqj34zY8274YJYFGIACro=" + }, + "org.eclipse.jgit-4.8.0.201706111038-r.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom" + ], + "hash": "sha256-pVap9a38avSbKhLnLcPNfkPbj9whbA81iFlyovWton0=" + } + } } }, - "org.slf4j:slf4j-api:1.7.2": { - "slf4j-api-1.7.2.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" - ], - "hash": "sha256-O654m0ATM7Kh0WA7f6Vz4ZkIYoGRcHID9utwjN7iwFI=" - }, - "slf4j-api-1.7.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom" - ], - "hash": "sha256-LqynGv4KFRb0q9jp/5B4ONJo84yBw6VCzOjX87h8XUw=" + "org.slf4j:slf4j-api": { + "1.7.2": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "slf4j-api-1.7.2.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" + ], + "hash": "sha256-O654m0ATM7Kh0WA7f6Vz4ZkIYoGRcHID9utwjN7iwFI=" + }, + "slf4j-api-1.7.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom" + ], + "hash": "sha256-LqynGv4KFRb0q9jp/5B4ONJo84yBw6VCzOjX87h8XUw=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/ivy/basic.kotlin.json b/fixtures/golden/ivy/basic.kotlin.json index 4e61434..ae009c4 100644 --- a/fixtures/golden/ivy/basic.kotlin.json +++ b/fixtures/golden/ivy/basic.kotlin.json @@ -1,30 +1,42 @@ { - "org.opendof.core-java:dof-cipher-sms4:1.0": { - "dof-cipher-sms4-1.0.jar": { - "urls": [ - "https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/dof-cipher-sms4-1.0.jar" - ], - "hash": "sha256-/Joo51NA6nBPEwFuFcnDc10JQZDE8P3jF3P4gl0vpMA=" - }, - "ivy-1.0.xml": { - "urls": [ - "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" - ], - "hash": "sha256-rh+pQpXqPP/cmBD8slvwMrKlWCUb3JNzW3l58hd7oJ8=" + "org.opendof.core-java:dof-cipher-sms4": { + "1.0": { + "needsPomRedirect": false, + "needsIvyRedirect": true, + "files": { + "dof-cipher-sms4-1.0.jar": { + "urls": [ + "https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/dof-cipher-sms4-1.0.jar" + ], + "hash": "sha256-/Joo51NA6nBPEwFuFcnDc10JQZDE8P3jF3P4gl0vpMA=" + }, + "ivy-1.0.xml": { + "urls": [ + "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" + ], + "hash": "sha256-rh+pQpXqPP/cmBD8slvwMrKlWCUb3JNzW3l58hd7oJ8=" + } + } } }, - "org.opendof.core-java:dof-oal:7.0.2": { - "dof-oal-7.0.2.jar": { - "urls": [ - "https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/dof-oal-7.0.2.jar" - ], - "hash": "sha256-u+FUhQGBA8MRl28mXMTSnZ2HY2ysPHq7h9lANmHBK40=" - }, - "ivy-7.0.2.xml": { - "urls": [ - "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml" - ], - "hash": "sha256-KZoUVyoDcfH/B/9V1SVqNiA/XIb3zlwoJkjb/jD+xig=" + "org.opendof.core-java:dof-oal": { + "7.0.2": { + "needsPomRedirect": false, + "needsIvyRedirect": true, + "files": { + "dof-oal-7.0.2.jar": { + "urls": [ + "https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/dof-oal-7.0.2.jar" + ], + "hash": "sha256-u+FUhQGBA8MRl28mXMTSnZ2HY2ysPHq7h9lANmHBK40=" + }, + "ivy-7.0.2.xml": { + "urls": [ + "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml" + ], + "hash": "sha256-KZoUVyoDcfH/B/9V1SVqNiA/XIb3zlwoJkjb/jD+xig=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json index 58789dd..9ce6993 100644 --- a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json +++ b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json @@ -1,494 +1,698 @@ { - "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.21": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" - ], - "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21": { - "kotlin-gradle-plugin-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" - ], - "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" - }, - "kotlin-gradle-plugin-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" - ], - "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.21": { - "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" - ], - "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" - } - }, - "org.jetbrains.kotlin:kotlin-native-utils:1.7.21": { - "kotlin-native-utils-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" - ], - "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" - }, - "kotlin-native-utils-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" - ], - "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" - } - }, - "org.jetbrains.kotlin:kotlin-util-io:1.7.21": { - "kotlin-util-io-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" - ], - "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" - }, - "kotlin-util-io-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" - ], - "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" - } - }, - "org.jetbrains.kotlin:kotlin-project-model:1.7.21": { - "kotlin-project-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" - ], - "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" - }, - "kotlin-project-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" - ], - "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" - } - }, - "org.jetbrains.kotlin:kotlin-tooling-core:1.7.21": { - "kotlin-tooling-core-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" - ], - "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" - }, - "kotlin-tooling-core-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" - ], - "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.7.21": { - "kotlin-gradle-plugin-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" - ], - "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" - }, - "kotlin-gradle-plugin-model-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" - ], - "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.7.21": { - "kotlin-gradle-plugin-idea-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" - ], - "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" - }, - "kotlin-gradle-plugin-idea-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" - ], - "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.7.21": { - "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" - ], - "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" - }, - "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" - ], - "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" - } - }, - "org.jetbrains.kotlin:kotlin-util-klib:1.7.21": { - "kotlin-util-klib-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" - ], - "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" - }, - "kotlin-util-klib-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" - ], - "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.7.21": { - "kotlin-klib-commonizer-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" - ], - "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" - }, - "kotlin-klib-commonizer-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" - ], - "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" - } - }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21": { - "kotlin-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" - }, - "kotlin-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" - } - }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.21": { - "kotlin-daemon-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" - ], - "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" - }, - "kotlin-daemon-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" - ], - "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" - } - }, - "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } - }, - "net.java.dev.jna:jna:5.6.0": { - "jna-5.6.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], - "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" - }, - "jna-5.6.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], - "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" - } - }, - "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.21": { - "kotlin-annotation-processing-gradle-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" - ], - "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" - }, - "kotlin-annotation-processing-gradle-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" - ], - "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" - } - }, - "org.jetbrains.kotlin:kotlin-android-extensions:1.7.21": { - "kotlin-android-extensions-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" - ], - "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" - }, - "kotlin-android-extensions-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" - ], - "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" - } - }, - "org.jetbrains.kotlin:kotlin-compiler-runner:1.7.21": { - "kotlin-compiler-runner-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" - ], - "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" - }, - "kotlin-compiler-runner-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" - ], - "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" - } - }, - "org.jetbrains.kotlin:kotlin-build-common:1.7.21": { - "kotlin-build-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" - ], - "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" - }, - "kotlin-build-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" - ], - "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" - } - }, - "org.jetbrains.kotlin:kotlin-daemon-client:1.7.21": { - "kotlin-daemon-client-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" - ], - "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" - }, - "kotlin-daemon-client-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" - ], - "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.7.21": { - "kotlin-scripting-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" - }, - "kotlin-scripting-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.7.21": { - "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" - ], - "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" - ], - "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-common:1.7.21": { - "kotlin-scripting-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" - ], - "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" - }, - "kotlin-scripting-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" - ], - "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.21": { - "kotlin-scripting-jvm-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" - ], - "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" - }, - "kotlin-scripting-jvm-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" - ], - "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21": { - "kotlin-stdlib-jdk8-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" - ], - "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" - }, - "kotlin-stdlib-jdk8-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" - ], - "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib:1.7.21": { - "kotlin-stdlib-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" - ], - "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" - }, - "kotlin-stdlib-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" - ], - "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.7.21": { - "kotlin-stdlib-common-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" - ], - "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" - }, - "kotlin-stdlib-common-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" - ], - "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" - } - }, - "org.jetbrains:annotations:13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21": { - "kotlin-stdlib-jdk7-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" - ], - "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" - }, - "kotlin-stdlib-jdk7-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" - ], - "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" - } - }, - "org.jetbrains.kotlin:kotlin-script-runtime:1.7.21": { - "kotlin-script-runtime-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" - ], - "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" - }, - "kotlin-script-runtime-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" - ], - "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" - } - }, - "org.jetbrains.kotlin:kotlin-reflect:1.7.21": { - "kotlin-reflect-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" - ], - "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" - }, - "kotlin-reflect-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" - ], - "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.21": { - "kotlin-klib-commonizer-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" - ], - "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" - }, - "kotlin-klib-commonizer-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" - ], - "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" + "net.java.dev.jna:jna": { + "5.6.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" + } + } + } + }, + "org.jetbrains.intellij.deps:trove4j": { + "1.0.20200330": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + } + } + }, + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" + ], + "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-android-extensions-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" + ], + "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" + }, + "kotlin-android-extensions-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" + ], + "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-annotation-processing-gradle": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-annotation-processing-gradle-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" + ], + "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" + }, + "kotlin-annotation-processing-gradle-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" + ], + "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-build-common": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-build-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" + ], + "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" + }, + "kotlin-build-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" + ], + "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" + }, + "kotlin-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-compiler-runner-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" + ], + "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" + }, + "kotlin-compiler-runner-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" + ], + "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-daemon-client-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" + ], + "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" + }, + "kotlin-daemon-client-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" + ], + "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-daemon-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" + ], + "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" + }, + "kotlin-daemon-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" + ], + "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" + ], + "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" + }, + "kotlin-gradle-plugin-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" + ], + "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" + ], + "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-idea-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" + ], + "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" + }, + "kotlin-gradle-plugin-idea-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" + ], + "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" + ], + "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" + }, + "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" + ], + "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" + ], + "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" + }, + "kotlin-gradle-plugin-model-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" + ], + "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-klib-commonizer-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" + ], + "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" + }, + "kotlin-klib-commonizer-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" + ], + "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-klib-commonizer-embeddable-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" + ], + "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" + }, + "kotlin-klib-commonizer-embeddable-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" + ], + "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-native-utils": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-native-utils-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" + ], + "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" + }, + "kotlin-native-utils-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" + ], + "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-project-model": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-project-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" + ], + "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" + }, + "kotlin-project-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" + ], + "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-reflect-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" + ], + "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" + }, + "kotlin-reflect-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" + ], + "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-script-runtime-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" + ], + "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" + }, + "kotlin-script-runtime-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" + ], + "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" + ], + "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" + }, + "kotlin-scripting-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" + ], + "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" + }, + "kotlin-scripting-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" + ], + "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" + ], + "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-jvm-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" + ], + "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" + }, + "kotlin-scripting-jvm-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" + ], + "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" + ], + "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" + }, + "kotlin-stdlib-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" + ], + "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-common-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" + ], + "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" + }, + "kotlin-stdlib-common-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" + ], + "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-jdk7-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" + ], + "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" + }, + "kotlin-stdlib-jdk7-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" + ], + "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-jdk8-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" + ], + "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" + }, + "kotlin-stdlib-jdk8-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" + ], + "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-tooling-core-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" + ], + "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" + }, + "kotlin-tooling-core-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" + ], + "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-util-io": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-util-io-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" + ], + "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" + }, + "kotlin-util-io-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" + ], + "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-util-klib": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-util-klib-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" + ], + "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" + }, + "kotlin-util-klib-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" + ], + "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" + } + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "1.5.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + } + } + } + }, + "org.jetbrains:annotations": { + "13.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json index 58789dd..9ce6993 100644 --- a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json +++ b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json @@ -1,494 +1,698 @@ { - "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.21": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" - ], - "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21": { - "kotlin-gradle-plugin-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" - ], - "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" - }, - "kotlin-gradle-plugin-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" - ], - "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.21": { - "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" - ], - "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" - } - }, - "org.jetbrains.kotlin:kotlin-native-utils:1.7.21": { - "kotlin-native-utils-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" - ], - "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" - }, - "kotlin-native-utils-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" - ], - "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" - } - }, - "org.jetbrains.kotlin:kotlin-util-io:1.7.21": { - "kotlin-util-io-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" - ], - "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" - }, - "kotlin-util-io-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" - ], - "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" - } - }, - "org.jetbrains.kotlin:kotlin-project-model:1.7.21": { - "kotlin-project-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" - ], - "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" - }, - "kotlin-project-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" - ], - "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" - } - }, - "org.jetbrains.kotlin:kotlin-tooling-core:1.7.21": { - "kotlin-tooling-core-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" - ], - "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" - }, - "kotlin-tooling-core-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" - ], - "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.7.21": { - "kotlin-gradle-plugin-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" - ], - "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" - }, - "kotlin-gradle-plugin-model-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" - ], - "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.7.21": { - "kotlin-gradle-plugin-idea-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" - ], - "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" - }, - "kotlin-gradle-plugin-idea-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" - ], - "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.7.21": { - "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" - ], - "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" - }, - "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" - ], - "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" - } - }, - "org.jetbrains.kotlin:kotlin-util-klib:1.7.21": { - "kotlin-util-klib-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" - ], - "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" - }, - "kotlin-util-klib-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" - ], - "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.7.21": { - "kotlin-klib-commonizer-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" - ], - "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" - }, - "kotlin-klib-commonizer-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" - ], - "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" - } - }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21": { - "kotlin-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" - }, - "kotlin-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" - } - }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.21": { - "kotlin-daemon-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" - ], - "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" - }, - "kotlin-daemon-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" - ], - "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" - } - }, - "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } - }, - "net.java.dev.jna:jna:5.6.0": { - "jna-5.6.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], - "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" - }, - "jna-5.6.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], - "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" - } - }, - "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.21": { - "kotlin-annotation-processing-gradle-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" - ], - "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" - }, - "kotlin-annotation-processing-gradle-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" - ], - "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" - } - }, - "org.jetbrains.kotlin:kotlin-android-extensions:1.7.21": { - "kotlin-android-extensions-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" - ], - "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" - }, - "kotlin-android-extensions-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" - ], - "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" - } - }, - "org.jetbrains.kotlin:kotlin-compiler-runner:1.7.21": { - "kotlin-compiler-runner-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" - ], - "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" - }, - "kotlin-compiler-runner-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" - ], - "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" - } - }, - "org.jetbrains.kotlin:kotlin-build-common:1.7.21": { - "kotlin-build-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" - ], - "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" - }, - "kotlin-build-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" - ], - "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" - } - }, - "org.jetbrains.kotlin:kotlin-daemon-client:1.7.21": { - "kotlin-daemon-client-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" - ], - "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" - }, - "kotlin-daemon-client-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" - ], - "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.7.21": { - "kotlin-scripting-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" - }, - "kotlin-scripting-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.7.21": { - "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" - ], - "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" - ], - "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-common:1.7.21": { - "kotlin-scripting-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" - ], - "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" - }, - "kotlin-scripting-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" - ], - "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.21": { - "kotlin-scripting-jvm-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" - ], - "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" - }, - "kotlin-scripting-jvm-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" - ], - "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21": { - "kotlin-stdlib-jdk8-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" - ], - "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" - }, - "kotlin-stdlib-jdk8-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" - ], - "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib:1.7.21": { - "kotlin-stdlib-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" - ], - "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" - }, - "kotlin-stdlib-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" - ], - "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.7.21": { - "kotlin-stdlib-common-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" - ], - "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" - }, - "kotlin-stdlib-common-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" - ], - "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" - } - }, - "org.jetbrains:annotations:13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21": { - "kotlin-stdlib-jdk7-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" - ], - "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" - }, - "kotlin-stdlib-jdk7-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" - ], - "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" - } - }, - "org.jetbrains.kotlin:kotlin-script-runtime:1.7.21": { - "kotlin-script-runtime-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" - ], - "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" - }, - "kotlin-script-runtime-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" - ], - "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" - } - }, - "org.jetbrains.kotlin:kotlin-reflect:1.7.21": { - "kotlin-reflect-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" - ], - "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" - }, - "kotlin-reflect-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" - ], - "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.21": { - "kotlin-klib-commonizer-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" - ], - "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" - }, - "kotlin-klib-commonizer-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" - ], - "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" + "net.java.dev.jna:jna": { + "5.6.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" + } + } + } + }, + "org.jetbrains.intellij.deps:trove4j": { + "1.0.20200330": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + } + } + }, + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" + ], + "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-android-extensions-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" + ], + "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" + }, + "kotlin-android-extensions-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" + ], + "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-annotation-processing-gradle": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-annotation-processing-gradle-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" + ], + "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" + }, + "kotlin-annotation-processing-gradle-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" + ], + "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-build-common": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-build-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" + ], + "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" + }, + "kotlin-build-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" + ], + "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" + }, + "kotlin-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-compiler-runner-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" + ], + "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" + }, + "kotlin-compiler-runner-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" + ], + "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-daemon-client-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" + ], + "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" + }, + "kotlin-daemon-client-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" + ], + "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-daemon-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" + ], + "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" + }, + "kotlin-daemon-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" + ], + "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" + ], + "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" + }, + "kotlin-gradle-plugin-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" + ], + "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" + ], + "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-idea-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" + ], + "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" + }, + "kotlin-gradle-plugin-idea-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" + ], + "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" + ], + "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" + }, + "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" + ], + "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-gradle-plugin-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" + ], + "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" + }, + "kotlin-gradle-plugin-model-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" + ], + "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-klib-commonizer-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" + ], + "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" + }, + "kotlin-klib-commonizer-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" + ], + "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-klib-commonizer-embeddable-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" + ], + "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" + }, + "kotlin-klib-commonizer-embeddable-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" + ], + "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-native-utils": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-native-utils-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" + ], + "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" + }, + "kotlin-native-utils-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" + ], + "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-project-model": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-project-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" + ], + "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" + }, + "kotlin-project-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" + ], + "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-reflect-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" + ], + "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" + }, + "kotlin-reflect-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" + ], + "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-script-runtime-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" + ], + "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" + }, + "kotlin-script-runtime-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" + ], + "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" + ], + "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" + }, + "kotlin-scripting-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" + ], + "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" + }, + "kotlin-scripting-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" + ], + "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" + ], + "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-scripting-jvm-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" + ], + "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" + }, + "kotlin-scripting-jvm-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" + ], + "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" + ], + "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" + }, + "kotlin-stdlib-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" + ], + "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-common-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" + ], + "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" + }, + "kotlin-stdlib-common-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" + ], + "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-jdk7-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" + ], + "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" + }, + "kotlin-stdlib-jdk7-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" + ], + "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-jdk8-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" + ], + "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" + }, + "kotlin-stdlib-jdk8-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" + ], + "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-tooling-core-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" + ], + "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" + }, + "kotlin-tooling-core-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" + ], + "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-util-io": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-util-io-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" + ], + "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" + }, + "kotlin-util-io-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" + ], + "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" + } + } + } + }, + "org.jetbrains.kotlin:kotlin-util-klib": { + "1.7.21": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-util-klib-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" + ], + "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" + }, + "kotlin-util-klib-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" + ], + "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" + } + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "1.5.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + } + } + } + }, + "org.jetbrains:annotations": { + "13.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/settings/buildscript.groovy.json b/fixtures/golden/settings/buildscript.groovy.json index 09eb001..a8acd89 100644 --- a/fixtures/golden/settings/buildscript.groovy.json +++ b/fixtures/golden/settings/buildscript.groovy.json @@ -1,16 +1,22 @@ { - "org.apache:test:1.0.0": { - "test-1.0.0.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" - ], - "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" - }, - "test-1.0.0.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ], - "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" + "org.apache:test": { + "1.0.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "test-1.0.0.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "test-1.0.0.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" + ], + "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/settings/dependency-resolution-management.kotlin.json b/fixtures/golden/settings/dependency-resolution-management.kotlin.json index 09eb001..a8acd89 100644 --- a/fixtures/golden/settings/dependency-resolution-management.kotlin.json +++ b/fixtures/golden/settings/dependency-resolution-management.kotlin.json @@ -1,16 +1,22 @@ { - "org.apache:test:1.0.0": { - "test-1.0.0.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" - ], - "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" - }, - "test-1.0.0.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ], - "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" + "org.apache:test": { + "1.0.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "test-1.0.0.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "test-1.0.0.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" + ], + "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/subprojects/multi-module.groovy.json b/fixtures/golden/subprojects/multi-module.groovy.json index 1503a9e..f0dc3ab 100644 --- a/fixtures/golden/subprojects/multi-module.groovy.json +++ b/fixtures/golden/subprojects/multi-module.groovy.json @@ -1,114 +1,160 @@ { - "junit:junit:4.12": { - "junit-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" - ], - "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" - }, - "junit-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" - ], - "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" + "com.squareup.moshi:moshi": { + "1.8.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + } + } } }, - "org.hamcrest:hamcrest-core:1.3": { - "hamcrest-core-1.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" - ], - "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" + "com.squareup.okio:okio": { + "2.2.2": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + } + } }, - "hamcrest-core-1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" - ], - "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" + "1.16.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "okio-1.16.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" + ], + "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" + }, + "okio-1.16.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" + ], + "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" + } + } } }, - "com.squareup.okio:okio:2.2.2": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + "junit:junit": { + "4.12": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "junit-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" + ], + "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" + }, + "junit-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" + ], + "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" + } + } } }, - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + "org.hamcrest:hamcrest-core": { + "1.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "hamcrest-core-1.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" + ], + "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" + }, + "hamcrest-core-1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" + ], + "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" + } + } } }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + "org.jetbrains.kotlin:kotlin-stdlib": { + "1.2.60": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + } } }, - "org.jetbrains:annotations:13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + "org.jetbrains.kotlin:kotlin-stdlib-common": { + "1.2.60": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + } + } } }, - "com.squareup.moshi:moshi:1.8.0": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" - } - }, - "com.squareup.okio:okio:1.16.0": { - "okio-1.16.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" - ], - "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" - }, - "okio-1.16.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" - ], - "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" + "org.jetbrains:annotations": { + "13.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } } } } \ No newline at end of file diff --git a/fixtures/golden/subprojects/multi-module.kotlin.json b/fixtures/golden/subprojects/multi-module.kotlin.json index 1503a9e..f0dc3ab 100644 --- a/fixtures/golden/subprojects/multi-module.kotlin.json +++ b/fixtures/golden/subprojects/multi-module.kotlin.json @@ -1,114 +1,160 @@ { - "junit:junit:4.12": { - "junit-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" - ], - "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" - }, - "junit-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" - ], - "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" + "com.squareup.moshi:moshi": { + "1.8.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + } + } } }, - "org.hamcrest:hamcrest-core:1.3": { - "hamcrest-core-1.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" - ], - "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" + "com.squareup.okio:okio": { + "2.2.2": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + } + } }, - "hamcrest-core-1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" - ], - "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" + "1.16.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "okio-1.16.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" + ], + "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" + }, + "okio-1.16.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" + ], + "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" + } + } } }, - "com.squareup.okio:okio:2.2.2": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" + "junit:junit": { + "4.12": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "junit-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" + ], + "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" + }, + "junit-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" + ], + "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" + } + } } }, - "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + "org.hamcrest:hamcrest-core": { + "1.3": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "hamcrest-core-1.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" + ], + "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" + }, + "hamcrest-core-1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" + ], + "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" + } + } } }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + "org.jetbrains.kotlin:kotlin-stdlib": { + "1.2.60": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + } } }, - "org.jetbrains:annotations:13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + "org.jetbrains.kotlin:kotlin-stdlib-common": { + "1.2.60": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + } + } } }, - "com.squareup.moshi:moshi:1.8.0": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" - } - }, - "com.squareup.okio:okio:1.16.0": { - "okio-1.16.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" - ], - "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" - }, - "okio-1.16.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" - ], - "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" + "org.jetbrains:annotations": { + "13.0": { + "needsPomRedirect": true, + "needsIvyRedirect": false, + "files": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } } } } \ No newline at end of file diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt b/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt index bba02ca..d57205f 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt @@ -1,4 +1,4 @@ -package org.nixos.gradle2nix.dependencygraph.model +package org.nixos.gradle2nix import kotlinx.serialization.Serializable diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt b/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt index b450e25..2fc1b46 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt @@ -1,8 +1,7 @@ package org.nixos.gradle2nix.dependencygraph.model import kotlinx.serialization.Serializable - -// private const val DEFAULT_MAVEN_REPOSITORY_URL = "https://repo.maven.apache.org/maven2" +import org.nixos.gradle2nix.DependencyCoordinates @Serializable data class ResolvedDependency( @@ -13,20 +12,3 @@ data class ResolvedDependency( val repository: String?, val dependencies: List ) -//{ -// fun packageUrl() = -// PackageURLBuilder -// .aPackageURL() -// .withType("maven") -// .withNamespace(coordinates.group.ifEmpty { coordinates.module }) // TODO: This is a sign of broken mapping from component -> PURL -// .withName(coordinates.module) -// .withVersion(coordinates.version) -// .also { -// if (repositoryUrl != null && repositoryUrl != DEFAULT_MAVEN_REPOSITORY_URL) { -// it.withQualifier("repository_url", repositoryUrl) -// } -// } -// .build() -// .toString() -// -//} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt index c9010c4..4f47178 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt @@ -20,7 +20,7 @@ import org.nixos.gradle2nix.PARAM_INCLUDE_CONFIGURATIONS import org.nixos.gradle2nix.PARAM_INCLUDE_PROJECTS import org.nixos.gradle2nix.PARAM_REPORT_DIR import org.nixos.gradle2nix.dependencygraph.DependencyGraphRenderer -import org.nixos.gradle2nix.dependencygraph.model.DependencyCoordinates +import org.nixos.gradle2nix.DependencyCoordinates import org.nixos.gradle2nix.dependencygraph.model.DependencySource import org.nixos.gradle2nix.dependencygraph.model.Repository import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration From 8ceeeb9611ba4a06dfffc78ec8def3539f383c45 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Tue, 19 Dec 2023 13:52:14 -0800 Subject: [PATCH 08/34] WIP --- .../org/nixos/gradle2nix/GradleRunner.kt | 11 +- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 5 +- .../kotlin/org/nixos/gradle2nix/Process.kt | 149 +- .../kotlin/org/nixos/gradle2nix/env/Env.kt | 68 +- .../metadata/VerificationMetadata.kt | 7 +- .../kotlin/org/nixos/gradle2nix/GoldenTest.kt | 3 + .../kotlin/org/nixos/gradle2nix/TestUtil.kt | 2 +- build.gradle.kts | 2 +- default.nix | 5 +- .../kotlin/buildSrc/build.gradle.kts | 9 + .../apply-plugin-publish.gradle.kts | 5 - .../com/example/ApplyPluginPublishPlugin.kt | 10 + .../basic/basic-java-project.groovy.json | 130 +- .../basic/basic-java-project.kotlin.json | 130 +- .../basic/basic-kotlin-project.kotlin.json | 2340 ++- .../buildsrc/plugin-in-buildsrc.kotlin.json | 1178 +- .../golden/dependency/classifier.groovy.json | 26 +- .../golden/dependency/classifier.kotlin.json | 26 +- .../golden/dependency/maven-bom.kotlin.json | 66 +- .../dependency/snapshot-dynamic.groovy.json | 22 +- .../dependency/snapshot-dynamic.kotlin.json | 22 +- .../dependency/snapshot-redirect.groovy.json | 26 +- .../golden/dependency/snapshot.groovy.json | 26 +- .../golden/dependency/snapshot.kotlin.json | 26 +- fixtures/golden/included-build.groovy.json | 48 + .../settings-buildscript.groovy.json | 234 +- fixtures/golden/ivy/basic.kotlin.json | 52 +- .../resolves-from-default-repo.groovy.json | 946 +- .../resolves-from-default-repo.kotlin.json | 946 +- .../golden/settings/buildscript.groovy.json | 26 +- ...pendency-resolution-management.kotlin.json | 26 +- .../subprojects/multi-module.groovy.json | 208 +- .../subprojects/multi-module.kotlin.json | 208 +- fixtures/included-build/groovy/build.gradle | 10 + .../groovy/included-child/build.gradle | 11 + .../groovy/included-child/settings.gradle | 10 + .../included-build/groovy/settings.gradle | 1 + .../m2/org/apache/foo/1.0.0/foo-1.0.0.jar | Bin 0 -> 190 bytes .../m2/org/apache/foo/1.0.0/foo-1.0.0.pom | 14 + .../m2/org/apache/foo/2.0.0/foo-2.0.0.jar | Bin 0 -> 190 bytes .../m2/org/apache/foo/2.0.0/foo-2.0.0.pom | 14 + .../m2/org/apache/foo/maven-metadata.xml | 31 + .../org/apache/test/1.0.0/test-1.0.0.pom.sha1 | 1 - .../m2/org/apache/test/2.0.0/test-2.0.0.jar | Bin 0 -> 190 bytes .../m2/org/apache/test/2.0.0/test-2.0.0.pom | 14 + .../m2/org/apache/test/maven-metadata.xml | 11 +- flake.lock | 12 +- gradle-env.json | 11707 +++------------- gradle-env.nix | 345 +- gradle/libs.versions.toml | 4 +- gradle/wrapper/gradle-wrapper.jar | Bin 61574 -> 63721 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 19 +- .../nixos/gradle2nix/DependencyCoordinates.kt | 8 - .../gradle2nix/model/DependencyCoordinates.kt | 35 + .../{ => model}/DependencySource.kt | 17 +- .../{ => model}/PluginParameters.kt | 2 +- .../gradle2nix/{ => model}/Repository.kt | 2 +- .../gradle2nix/model/ResolvedArtifact.kt | 16 + .../{ => model}/ResolvedConfiguration.kt | 2 +- .../{ => model}/ResolvedDependency.kt | 5 +- .../gradle2nix/model/ResolvedMetadata.kt | 9 + .../gradle2nix/NixDependencyGraphRenderer.kt | 2 +- .../AbstractDependencyExtractorPlugin.kt | 21 +- .../DependencyGraphRenderer.kt | 2 +- .../extractor/DependencyExtractor.kt | 218 +- .../DependencyExtractorBuildService.kt | 1 - .../util/BuildOperationTracker.kt | 64 + .../ForceDependencyResolutionPlugin.kt | 4 +- 69 files changed, 5970 insertions(+), 13633 deletions(-) delete mode 100644 fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/apply-plugin-publish.gradle.kts create mode 100644 fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com/example/ApplyPluginPublishPlugin.kt create mode 100644 fixtures/golden/included-build.groovy.json create mode 100644 fixtures/included-build/groovy/build.gradle create mode 100644 fixtures/included-build/groovy/included-child/build.gradle create mode 100644 fixtures/included-build/groovy/included-child/settings.gradle create mode 100644 fixtures/included-build/groovy/settings.gradle create mode 100644 fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.jar create mode 100644 fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.pom create mode 100644 fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.jar create mode 100644 fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.pom create mode 100644 fixtures/repositories/m2/org/apache/foo/maven-metadata.xml delete mode 100644 fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom.sha1 create mode 100644 fixtures/repositories/m2/org/apache/test/2.0.0/test-2.0.0.jar create mode 100644 fixtures/repositories/m2/org/apache/test/2.0.0/test-2.0.0.pom delete mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt rename model/src/main/kotlin/org/nixos/gradle2nix/{ => model}/DependencySource.kt (54%) rename model/src/main/kotlin/org/nixos/gradle2nix/{ => model}/PluginParameters.kt (89%) rename model/src/main/kotlin/org/nixos/gradle2nix/{ => model}/Repository.kt (88%) create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt rename model/src/main/kotlin/org/nixos/gradle2nix/{ => model}/ResolvedConfiguration.kt (91%) rename model/src/main/kotlin/org/nixos/gradle2nix/{ => model}/ResolvedDependency.kt (64%) create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedMetadata.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/BuildOperationTracker.kt diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt index d1fd211..fa3844a 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt @@ -2,6 +2,9 @@ package org.nixos.gradle2nix import org.gradle.tooling.GradleConnector import org.gradle.tooling.ProjectConnection +import org.nixos.gradle2nix.model.PARAM_INCLUDE_CONFIGURATIONS +import org.nixos.gradle2nix.model.PARAM_INCLUDE_PROJECTS +import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK fun connect(config: Config): ProjectConnection = GradleConnector.newConnector() @@ -28,19 +31,23 @@ fun ProjectConnection.build( } addArguments(config.gradleArgs) addArguments( + "--gradle-user-home=${config.gradleHome}", "--init-script=${config.appHome}/init.gradle", "--write-verification-metadata", "sha256" ) if (config.projectFilter != null) { - addArguments("-D${PARAM_INCLUDE_PROJECTS}") + addArguments("-D$PARAM_INCLUDE_PROJECTS") } if (config.configurationFilter != null) { - addArguments("-D${PARAM_INCLUDE_CONFIGURATIONS}") + addArguments("-D$PARAM_INCLUDE_CONFIGURATIONS") } if (config.logger.verbose) { setStandardOutput(System.err) setStandardError(System.err) } + if (config.logger.stacktrace) { + addArguments("--stacktrace") + } } .run() } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index 553f4d2..2a38fe5 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -116,7 +116,8 @@ class Gradle2Nix : CliktCommand( if (appHome == null) { System.err.println("Error: could not locate the /share directory in the gradle2nix installation") } - val gradleHome = System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") + val gradleHome = + System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") val logger = Logger(verbose = !quiet, stacktrace = debug) val config = Config( @@ -152,7 +153,7 @@ class Gradle2Nix : CliktCommand( val env = try { processDependencies(config) } catch (e: Throwable) { - logger.error("Dependency parsing failed", e) + logger.error("dependency parsing failed", e) } val outDir = outDir ?: projectDir diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt index bda35c1..104ab41 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -14,9 +14,8 @@ import okio.HashingSource import okio.blackholeSink import okio.buffer import okio.source -import org.nixos.gradle2nix.dependencygraph.model.Repository -import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration -import org.nixos.gradle2nix.dependencygraph.model.ResolvedDependency +import org.nixos.gradle2nix.model.Repository +import org.nixos.gradle2nix.model.ResolvedConfiguration import org.nixos.gradle2nix.env.ArtifactFile import org.nixos.gradle2nix.env.ArtifactSet import org.nixos.gradle2nix.env.Env @@ -49,6 +48,8 @@ fun processDependencies(config: Config): Env { ModuleVersionId(ModuleId(it.group, it.name), it.version) } ?: emptyMap() val moduleCache = mutableMapOf() + val pomCache = mutableMapOf?>() + val ivyCache = mutableMapOf?>() val configurations = readDependencyGraph(config) val repositories = configurations @@ -64,11 +65,11 @@ fun processDependencies(config: Config): Env { } if (repositories.isEmpty()) { config.logger.warn("no repositories found in any configuration") - return Env(emptyMap()) + return emptyMap() } config.logger.debug("Repositories:\n ${repositories.values.joinToString("\n ")}") - val modules = configurations.asSequence() + return configurations.asSequence() .flatMap { it.allDependencies.asSequence() } .filterNot { it.id.startsWith("project ") || it.repository == null || it.repository !in repositories } .groupBy { ModuleId(it.coordinates.group, it.coordinates.module) } @@ -83,34 +84,40 @@ fun processDependencies(config: Config): Env { val component = verificationComponents[componentId] ?: verifyComponentFilesInCache(config, componentId) ?: verifyComponentFilesInTestRepository(config, componentId) + ?: config.logger.error("$componentId: no dependency metadata found") + val gradleModule = moduleCache.getOrPut(componentId) { - maybeGetGradleModule(config.logger, componentId, dep.repositories) + maybeDownloadGradleModule(config.logger, component, dep.repositories)?.artifact?.second + } + val pomArtifact = pomCache.getOrPut(componentId) { + maybeDownloadMavenPom(config.logger, component, dep.repositories, gradleModule) } - ArtifactSet( - needsPomRedirect = repositories.values.any { - "mavenPom" in it.metadataSources && - "ignoreGradleMetadataRedirection" !in it.metadataSources - }, - needsIvyRedirect = repositories.values.any { - "ivyDescriptor" in it.metadataSources && - "ignoreGradleMetadataRedirection" !in it.metadataSources - }, - files = (component?.artifacts ?: emptyList()).associate { meta -> - meta.name to ArtifactFile( - urls = dep.repositories - .flatMap { repository -> artifactUrls(componentId, meta.name, repository, gradleModule) } - .distinct(), - hash = meta.checksums.first().toSri() + val ivyArtifact = ivyCache.getOrPut(componentId) { + maybeDownloadIvyDescriptor(config.logger, component, dep.repositories, gradleModule) + } + + val files = buildMap { + if (pomArtifact != null) put(pomArtifact.first, pomArtifact.second) + if (ivyArtifact != null) put(ivyArtifact.first, ivyArtifact.second) + for (artifact in component.artifacts) { + put( + artifact.name, + ArtifactFile( + urls = dep.repositories.flatMap { repo -> + artifactUrls(componentId, artifact.name, repo, gradleModule) + }.distinct(), + hash = artifact.checksums.first().toSri() + ) ) - }.toSortedMap() - ) + } + }.toSortedMap() + + ArtifactSet(files) } .toSortedMap(Version.Comparator.reversed()) Module(versions) } .toSortedMap(compareBy(ModuleId::toString)) - - return Env(modules) } private fun readVerificationMetadata(config: Config): VerificationMetadata? { @@ -162,25 +169,87 @@ private fun verifyComponentFilesInTestRepository( return Component(id, verifications.toList()) } -@OptIn(ExperimentalSerializationApi::class) -private fun maybeGetGradleModule(logger: Logger, id: ModuleVersionId, repos: List): GradleModule? { - val filename = with(id) { "$name-$version.module" } - val reposWithGradleMetadata = repos - .filter { "gradleMetadata" in it.metadataSources } - .flatMap { artifactUrls(id, filename, it, null)} - - for (url in reposWithGradleMetadata) { +private fun maybeDownloadGradleModule( + logger: Logger, + component: Component, + repos: List +): ArtifactDownload>? { + if (component.artifacts.none { it.name.endsWith(".module") }) return null + val filename = with(component.id) { "$name-$version.module" } + return maybeDownloadArtifact(logger, component.id, filename, repos)?.let { artifact -> try { - return URL(url).openStream().buffered().use { input -> - JsonFormat.decodeFromStream(input) - } + ArtifactDownload( + filename to JsonFormat.decodeFromString(artifact.artifact), + artifact.url, + artifact.hash + ) } catch (e: SerializationException) { - logger.error("$id: failed to parse Gradle module metadata ($url)", e) + logger.warn("${component.id}: failed to parse Gradle module metadata from ${artifact.url}") + null + } + } +} + +private fun maybeDownloadMavenPom( + logger: Logger, + component: Component, + repos: List, + gradleModule: GradleModule? +): Pair? { + if (component.artifacts.any { it.name.endsWith(".pom") }) return null + val pomRepos = repos.filter { "mavenPom" in it.metadataSources } + if (pomRepos.isEmpty()) return null + val filename = with(component.id) { "$name-$version.pom" } + + return maybeDownloadArtifact(logger, component.id, filename, pomRepos)?.let { artifact -> + filename to ArtifactFile( + urls = pomRepos.flatMap { repo -> + artifactUrls(component.id, filename, repo, gradleModule) + }.distinct(), + hash = artifact.hash.toSri() + ) + } +} + +private fun maybeDownloadIvyDescriptor( + logger: Logger, + component: Component, + repos: List, + gradleModule: GradleModule? +): Pair? { + if (component.artifacts.any { it.name == "ivy.xml" }) return null + val ivyRepos = repos.filter { "ivyDescriptor" in it.metadataSources } + if (ivyRepos.isEmpty()) return null + return maybeDownloadArtifact(logger, component.id, "ivy.xml", ivyRepos)?.let { artifact -> + "ivy.xml" to ArtifactFile( + urls = ivyRepos.flatMap { repo -> + artifactUrls(component.id, "ivy.xml", repo, gradleModule) + }.distinct(), + hash = artifact.hash.toSri() + ) + } +} + +private fun maybeDownloadArtifact( + logger: Logger, + id: ModuleVersionId, + filename: String, + repos: List +): ArtifactDownload? { + val urls = repos.flatMap { artifactUrls(id, filename, it, null)} + + for (url in urls) { + try { + val source = HashingSource.sha256(URL(url).openStream().source()) + val text = source.buffer().readUtf8() + val hash = source.hash + return ArtifactDownload(text, url, Sha256(hash.hex())) } catch (e: IOException) { // Pass } } + logger.debug("artifact $filename not found in any repository") return null } @@ -276,3 +345,9 @@ private data class MergedDependency( val id: ModuleVersionId, val repositories: List ) + +private data class ArtifactDownload( + val artifact: T, + val url: String, + val hash: Checksum +) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt b/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt index 797c0dc..414215b 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt @@ -12,11 +12,7 @@ import kotlinx.serialization.encoding.Encoder import org.gradle.internal.impldep.com.google.common.collect.ImmutableMap import org.gradle.internal.impldep.com.google.common.primitives.Longs -@Serializable -@JvmInline -value class Env( - val modules: Map, -) +typealias Env = Map @Serializable @JvmInline @@ -25,23 +21,30 @@ value class Module( ) @Serializable -data class ArtifactSet( - val needsPomRedirect: Boolean, - val needsIvyRedirect: Boolean, +@JvmInline +value class ArtifactSet( val files: Map ) @Serializable -data class ArtifactFile( +data class ArtifactFile internal constructor( val urls: List, val hash: String, -) +) { + + companion object { + operator fun invoke(urls: List, hash: String) = ArtifactFile(urls.sorted(), hash) + } +} @Serializable(ModuleId.Serializer::class) data class ModuleId( val group: String, val name: String, -) { +) : Comparable { + + override fun compareTo(other: ModuleId): Int = + compareValuesBy(this, other, ModuleId::group, ModuleId::name) override fun toString(): String = "$group:$name" @@ -52,7 +55,7 @@ data class ModuleId( ) override fun serialize(encoder: Encoder, value: ModuleId) { - encoder.encodeString("${value.name}:${value.group}") + encoder.encodeString(value.toString()) } override fun deserialize(decoder: Decoder): ModuleId { @@ -66,20 +69,55 @@ data class ModuleId( } } +@Serializable(ModuleVersionId.Serializer::class) data class ModuleVersionId( val moduleId: ModuleId, val version: Version -) { +) : Comparable { + constructor(group: String, name: String, version: Version) : this(ModuleId(group, name), version) + val group: String get() = moduleId.group val name: String get() = moduleId.name - override fun toString(): String = "$moduleId:$version" + override fun compareTo(other: ModuleVersionId): Int = + compareValuesBy( + this, + other, + ModuleVersionId::moduleId, + ModuleVersionId::version + ) + + + override fun toString(): String = "$group:$name:$version" + + internal object Serializer : KSerializer { + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor( + Version::class.qualifiedName!!, + PrimitiveKind.STRING + ) + + override fun serialize(encoder: Encoder, value: ModuleVersionId) { + encoder.encodeString(value.toString()) + } + + override fun deserialize(decoder: Decoder): ModuleVersionId { + val encoded = decoder.decodeString() + val parts = encoded.split(":") + if (parts.size != 3 || parts.any(String::isBlank)) { + throw SerializationException("invalid module version id: $encoded") + } + return ModuleVersionId( + moduleId = ModuleId(parts[0], parts[1]), + version = Version(parts[3]) + ) + } + } } @Serializable(Version.Serializer::class) class Version(val source: String, val parts: List, base: Version?) : Comparable { - val base: Version + private val base: Version val numericParts: List init { diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt index b1fde68..54b8c23 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt @@ -3,13 +3,12 @@ package org.nixos.gradle2nix.metadata import java.io.File import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable -import nl.adaptivity.xmlutil.XmlStreaming import nl.adaptivity.xmlutil.serialization.XML import nl.adaptivity.xmlutil.serialization.XmlChildrenName import nl.adaptivity.xmlutil.serialization.XmlElement import nl.adaptivity.xmlutil.serialization.XmlSerialName +import nl.adaptivity.xmlutil.xmlStreaming import org.nixos.gradle2nix.Logger -import org.nixos.gradle2nix.DependencyCoordinates import org.nixos.gradle2nix.env.ModuleVersionId import org.nixos.gradle2nix.env.Version @@ -108,6 +107,8 @@ data class Component( val version: Version, val artifacts: List = emptyList(), ) { + val id: ModuleVersionId get() = ModuleVersionId(group, name, version) + constructor(id: ModuleVersionId, artifacts: List) : this( id.group, id.name, @@ -134,7 +135,7 @@ val XmlFormat = XML { fun parseVerificationMetadata(logger: Logger, metadata: File): VerificationMetadata? { return try { - metadata.reader().buffered().let(XmlStreaming::newReader).use { input -> + metadata.reader().buffered().let(xmlStreaming::newReader).use { input -> XmlFormat.decodeFromReader(input) } } catch (e: Exception) { diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt b/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt index b5ce104..0f521ee 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt @@ -17,6 +17,9 @@ class GoldenTest : FunSpec({ golden("dependency/snapshot-dynamic") golden("dependency/snapshot-redirect") } + context("included-build") { + golden("included-build") + } context("integration") { golden("integration/settings-buildscript") } diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt index 991af4d..8e1d2a7 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt @@ -73,7 +73,7 @@ suspend fun TestScope.fixture( if (!tempDir.resolve("settings.gradle").exists() && !tempDir.resolve("settings.gradle.kts").exists()) { Files.createFile(tempDir.resolve("settings.gradle").toPath()) } - app.main(listOf("-d", tempDir.toString()) + args.withM2()) + app.main(listOf("-d", tempDir.toString()) + listOf("--debug") + args.withM2() + "-Dorg.gradle.internal.operations.trace=${tempDir.resolve("build").absolutePath}") val file = tempDir.resolve("${app.envFile}.json") file.shouldBeAFile() val env: Env = file.inputStream().buffered().use { input -> diff --git a/build.gradle.kts b/build.gradle.kts index 1193cf2..b62f9cc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,7 +16,7 @@ subprojects { tasks { wrapper { - gradleVersion = "8.3" + gradleVersion = libs.versions.gradle.get() distributionType = Wrapper.DistributionType.ALL } } diff --git a/default.nix b/default.nix index a391bc3..9371914 100644 --- a/default.nix +++ b/default.nix @@ -35,4 +35,7 @@ let }; }; -in gradle2nix +in buildGradle { + envSpec = ./gradle-env.json; + pname = "gradle2nix"; +} diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts index a77804b..13cc02c 100644 --- a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts +++ b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts @@ -9,3 +9,12 @@ repositories { dependencies { implementation("com.gradle.publish:plugin-publish-plugin:1.2.1") } + +gradlePlugin { + plugins { + register("apply-plugin-publish") { + id = "com.example.apply-plugin-publish" + implementationClass = "com.example.ApplyPluginPublishPlugin" + } + } +} diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/apply-plugin-publish.gradle.kts b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/apply-plugin-publish.gradle.kts deleted file mode 100644 index 7c0993e..0000000 --- a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com.example/apply-plugin-publish.gradle.kts +++ /dev/null @@ -1,5 +0,0 @@ -package com.example - -plugins { - id("com.gradle.plugin-publish") -} diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com/example/ApplyPluginPublishPlugin.kt b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com/example/ApplyPluginPublishPlugin.kt new file mode 100644 index 0000000..b376c1a --- /dev/null +++ b/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com/example/ApplyPluginPublishPlugin.kt @@ -0,0 +1,10 @@ +package com.example + +import org.gradle.api.Plugin +import org.gradle.api.Project + +open class ApplyPluginPublishPlugin : Plugin { + override fun apply(project: Project) { + project.pluginManager.apply("com.gradle.plugin-publish") + } +} diff --git a/fixtures/golden/basic/basic-java-project.groovy.json b/fixtures/golden/basic/basic-java-project.groovy.json index b05be6e..6bdf5d6 100644 --- a/fixtures/golden/basic/basic-java-project.groovy.json +++ b/fixtures/golden/basic/basic-java-project.groovy.json @@ -1,101 +1,81 @@ { "com.squareup.moshi:moshi": { "1.8.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" - } + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" } } }, "com.squareup.okio:okio": { "2.2.2": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" - } + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } } }, "org.jetbrains.kotlin:kotlin-stdlib": { "1.2.60": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" - } + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-common": { "1.2.60": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" - } + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" } } }, "org.jetbrains:annotations": { "13.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } } } diff --git a/fixtures/golden/basic/basic-java-project.kotlin.json b/fixtures/golden/basic/basic-java-project.kotlin.json index b05be6e..6bdf5d6 100644 --- a/fixtures/golden/basic/basic-java-project.kotlin.json +++ b/fixtures/golden/basic/basic-java-project.kotlin.json @@ -1,101 +1,81 @@ { "com.squareup.moshi:moshi": { "1.8.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" - } + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" } } }, "com.squareup.okio:okio": { "2.2.2": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" - } + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } } }, "org.jetbrains.kotlin:kotlin-stdlib": { "1.2.60": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" - } + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-common": { "1.2.60": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" - } + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" } } }, "org.jetbrains:annotations": { "13.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } } } diff --git a/fixtures/golden/basic/basic-kotlin-project.kotlin.json b/fixtures/golden/basic/basic-kotlin-project.kotlin.json index 87a6c03..2aca94e 100644 --- a/fixtures/golden/basic/basic-kotlin-project.kotlin.json +++ b/fixtures/golden/basic/basic-kotlin-project.kotlin.json @@ -1,1777 +1,1427 @@ { "com.fasterxml.jackson.core:jackson-annotations": { "2.10.1": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jackson-annotations-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar" - ], - "hash": "sha256-Zz+K4Wvs6k+pN0BLOoUUF/r0LfO7xZICi74r/gzJ2Ms=" - }, - "jackson-annotations-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.pom" - ], - "hash": "sha256-7OURA2Z+iBHw/3RYmGryFxhi5UuYE8FwjPk3kESH+Vw=" - } + "jackson-annotations-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar" + ], + "hash": "sha256-Zz+K4Wvs6k+pN0BLOoUUF/r0LfO7xZICi74r/gzJ2Ms=" + }, + "jackson-annotations-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.pom" + ], + "hash": "sha256-7OURA2Z+iBHw/3RYmGryFxhi5UuYE8FwjPk3kESH+Vw=" } } }, "com.fasterxml.jackson.core:jackson-core": { "2.10.1": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jackson-core-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar" - ], - "hash": "sha256-eb/73NNJ9ppawlLitAlhMXBDhq9PoU2VOV6poOQjzzM=" - }, - "jackson-core-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.pom" - ], - "hash": "sha256-EXkJC3ILJankJmQwLwM0oiQLMMcoC0IkJeT0UZ5bLP4=" - } + "jackson-core-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar" + ], + "hash": "sha256-eb/73NNJ9ppawlLitAlhMXBDhq9PoU2VOV6poOQjzzM=" + }, + "jackson-core-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.pom" + ], + "hash": "sha256-EXkJC3ILJankJmQwLwM0oiQLMMcoC0IkJeT0UZ5bLP4=" } } }, "com.fasterxml.jackson.core:jackson-databind": { "2.10.1": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jackson-databind-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar" - ], - "hash": "sha256-LSP0cAFJIjNWWt9aNPIl8q6JVkzuCAJIc+w2t4Qu3kY=" - }, - "jackson-databind-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.pom" - ], - "hash": "sha256-OGlQZeP1ILBbvY6lmC5ba1vZ+FYpZ7g9rLfQerCMauc=" - } + "jackson-databind-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar" + ], + "hash": "sha256-LSP0cAFJIjNWWt9aNPIl8q6JVkzuCAJIc+w2t4Qu3kY=" + }, + "jackson-databind-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.pom" + ], + "hash": "sha256-OGlQZeP1ILBbvY6lmC5ba1vZ+FYpZ7g9rLfQerCMauc=" } } }, "com.github.gundy:semver4j": { "0.16.4": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "semver4j-0.16.4-nodeps.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4-nodeps.jar" - ], - "hash": "sha256-P1nspRY3TM1P01UWJb9Q+KSxkfcAUI985IZkYKYSivA=" - }, - "semver4j-0.16.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom" - ], - "hash": "sha256-MgAdskQ7M53SH1t5/ynRreci0boIDCFL3oGfD3LRYE0=" - } + "semver4j-0.16.4-nodeps.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4-nodeps.jar" + ], + "hash": "sha256-P1nspRY3TM1P01UWJb9Q+KSxkfcAUI985IZkYKYSivA=" + }, + "semver4j-0.16.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom" + ], + "hash": "sha256-MgAdskQ7M53SH1t5/ynRreci0boIDCFL3oGfD3LRYE0=" } } }, "com.github.pengrad:java-telegram-bot-api": { "4.6.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "java-telegram-bot-api-4.6.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.jar" - ], - "hash": "sha256-w4H/cErewM/mZbrnUYtwiT5Czf83Smb0qYxGfeG/TdU=" - }, - "java-telegram-bot-api-4.6.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.pom" - ], - "hash": "sha256-nZxF//5qwbIbZffUK0k2T/gnnX5pLU9wF0BLLhC+YsE=" - } + "java-telegram-bot-api-4.6.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.jar" + ], + "hash": "sha256-w4H/cErewM/mZbrnUYtwiT5Czf83Smb0qYxGfeG/TdU=" + }, + "java-telegram-bot-api-4.6.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.pom" + ], + "hash": "sha256-nZxF//5qwbIbZffUK0k2T/gnnX5pLU9wF0BLLhC+YsE=" } } }, "com.google.code.findbugs:jsr305": { "3.0.2": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jsr305-3.0.2.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" - ], - "hash": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=" - }, - "jsr305-3.0.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom" - ], - "hash": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4=" - } + "jsr305-3.0.2.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" + ], + "hash": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=" + }, + "jsr305-3.0.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom" + ], + "hash": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4=" } } }, "com.google.code.gson:gson": { "2.8.9": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "gson-2.8.9.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar" - ], - "hash": "sha256-05mSkYVd5JXJTHQ3YbirUXbP6r4oGlqw2OjUUyb9cD4=" - }, - "gson-2.8.9.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom" - ], - "hash": "sha256-r97W5qaQ+/OtSuZa2jl/CpCl9jCzA9G3QbnJeSb91N4=" - } + "gson-2.8.9.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar" + ], + "hash": "sha256-05mSkYVd5JXJTHQ3YbirUXbP6r4oGlqw2OjUUyb9cD4=" + }, + "gson-2.8.9.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom" + ], + "hash": "sha256-r97W5qaQ+/OtSuZa2jl/CpCl9jCzA9G3QbnJeSb91N4=" } }, "2.8.5": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "gson-2.8.5.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar" - ], - "hash": "sha256-IzoBSfw2XJ9u29aDz+JmsZvcdzvpjqva9rPJJLSOfYE=" - }, - "gson-2.8.5.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom" - ], - "hash": "sha256-uDCFV6f8zJLZ/nyM0FmSWLNhKF0uzedontqYhDJVoJI=" - } + "gson-2.8.5.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar" + ], + "hash": "sha256-IzoBSfw2XJ9u29aDz+JmsZvcdzvpjqva9rPJJLSOfYE=" + }, + "gson-2.8.5.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom" + ], + "hash": "sha256-uDCFV6f8zJLZ/nyM0FmSWLNhKF0uzedontqYhDJVoJI=" } } }, "com.google.errorprone:error_prone_annotations": { "2.3.4": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "error_prone_annotations-2.3.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar" - ], - "hash": "sha256-uvfW6pfOYGxT4RtoVLpfLOfvXCTd3wr6GNEmC9JbACw=" - }, - "error_prone_annotations-2.3.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.pom" - ], - "hash": "sha256-EyZziktPfMrPYHuGahH7hRk+9g9qWUYRh85yZfm+W+0=" - } + "error_prone_annotations-2.3.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar" + ], + "hash": "sha256-uvfW6pfOYGxT4RtoVLpfLOfvXCTd3wr6GNEmC9JbACw=" + }, + "error_prone_annotations-2.3.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.pom" + ], + "hash": "sha256-EyZziktPfMrPYHuGahH7hRk+9g9qWUYRh85yZfm+W+0=" } } }, "com.google.guava:failureaccess": { "1.0.1": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "failureaccess-1.0.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" - ], - "hash": "sha256-oXHuTHNN0tqDfksWvp30Zhr6typBra8x64Tf2vk2yiY=" - }, - "failureaccess-1.0.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom" - ], - "hash": "sha256-6WBCznj+y6DaK+lkUilHyHtAopG1/TzWcqQ0kkEDxLk=" - } + "failureaccess-1.0.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" + ], + "hash": "sha256-oXHuTHNN0tqDfksWvp30Zhr6typBra8x64Tf2vk2yiY=" + }, + "failureaccess-1.0.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom" + ], + "hash": "sha256-6WBCznj+y6DaK+lkUilHyHtAopG1/TzWcqQ0kkEDxLk=" } } }, "com.google.guava:guava": { "29.0-jre": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "guava-29.0-jre.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.jar" - ], - "hash": "sha256-sixftm1h57lSJTHQSy+RW1FY6AqgtA7nKCyL+wew2iU=" - }, - "guava-29.0-jre.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.pom" - ], - "hash": "sha256-kCfpNAmJA9KH8bphyLZfAdHR4dp6b7zAS/PeBUQBRCY=" - } + "guava-29.0-jre.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.jar" + ], + "hash": "sha256-sixftm1h57lSJTHQSy+RW1FY6AqgtA7nKCyL+wew2iU=" + }, + "guava-29.0-jre.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.pom" + ], + "hash": "sha256-kCfpNAmJA9KH8bphyLZfAdHR4dp6b7zAS/PeBUQBRCY=" } } }, "com.google.guava:listenablefuture": { "9999.0-empty-to-avoid-conflict-with-guava": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" - ], - "hash": "sha256-s3KgN9QjCqV/vv/e8w/WEj+cDC24XQrO0AyRuXTzP5k=" - }, - "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom" - ], - "hash": "sha256-GNSx2yYVPU5VB5zh92ux/gXNuGLvmVSojLzE/zi4Z5s=" - } + "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" + ], + "hash": "sha256-s3KgN9QjCqV/vv/e8w/WEj+cDC24XQrO0AyRuXTzP5k=" + }, + "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom" + ], + "hash": "sha256-GNSx2yYVPU5VB5zh92ux/gXNuGLvmVSojLzE/zi4Z5s=" } } }, "com.google.j2objc:j2objc-annotations": { "1.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "j2objc-annotations-1.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" - ], - "hash": "sha256-Ia8wySJnvWEiwOC00gzMtmQaN+r5VsZUDsRx1YTmSns=" - }, - "j2objc-annotations-1.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom" - ], - "hash": "sha256-X6yoJLoRW+5FhzAzff2y/OpGui/XdNQwTtvzD6aj8FU=" - } + "j2objc-annotations-1.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" + ], + "hash": "sha256-Ia8wySJnvWEiwOC00gzMtmQaN+r5VsZUDsRx1YTmSns=" + }, + "j2objc-annotations-1.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom" + ], + "hash": "sha256-X6yoJLoRW+5FhzAzff2y/OpGui/XdNQwTtvzD6aj8FU=" } } }, "com.natpryce:konfig": { "1.6.10.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "konfig-1.6.10.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.jar" - ], - "hash": "sha256-1Va6vANYRVP1/TzEaJTF6jMxCSv7qufqYm1bjUznk7s=" - }, - "konfig-1.6.10.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.pom" - ], - "hash": "sha256-1NTlAHxEbyBlnbIqc2WXwLCFOLy6FL1HEND4VNxxFYg=" - } + "konfig-1.6.10.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.jar" + ], + "hash": "sha256-1Va6vANYRVP1/TzEaJTF6jMxCSv7qufqYm1bjUznk7s=" + }, + "konfig-1.6.10.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.pom" + ], + "hash": "sha256-1NTlAHxEbyBlnbIqc2WXwLCFOLy6FL1HEND4VNxxFYg=" } } }, "com.squareup.okhttp3:logging-interceptor": { "3.12.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "logging-interceptor-3.12.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.jar" - ], - "hash": "sha256-NNEihOBDYkI+VFe03a74xNhLyNgN1K0ZQ+Y8hQf4FXY=" - }, - "logging-interceptor-3.12.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.pom" - ], - "hash": "sha256-H/YmwXE+Itb1bpLtvctOnBRMszSoT6gAsHAfmW+xp/I=" - } + "logging-interceptor-3.12.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.jar" + ], + "hash": "sha256-NNEihOBDYkI+VFe03a74xNhLyNgN1K0ZQ+Y8hQf4FXY=" + }, + "logging-interceptor-3.12.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.pom" + ], + "hash": "sha256-H/YmwXE+Itb1bpLtvctOnBRMszSoT6gAsHAfmW+xp/I=" } } }, "com.squareup.okhttp3:okhttp": { "3.12.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "okhttp-3.12.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.jar" - ], - "hash": "sha256-gUWW1U7f2Ut9nYcSvzeYZ9ObCQQo3TjFEG0N7V2jVv8=" - }, - "okhttp-3.12.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.pom" - ], - "hash": "sha256-xXZHCTgwkLDEfEiizwh2OTvt1Ihmv83hk0NJf/oXuEQ=" - } + "okhttp-3.12.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.jar" + ], + "hash": "sha256-gUWW1U7f2Ut9nYcSvzeYZ9ObCQQo3TjFEG0N7V2jVv8=" + }, + "okhttp-3.12.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.pom" + ], + "hash": "sha256-xXZHCTgwkLDEfEiizwh2OTvt1Ihmv83hk0NJf/oXuEQ=" } } }, "com.squareup.okio:okio": { "1.15.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "okio-1.15.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.jar" - ], - "hash": "sha256-aT+jGafohDMAYCsgQCO3Z08Qbry1d/LdWAchK2YRi9I=" - }, - "okio-1.15.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom" - ], - "hash": "sha256-8cELFIDRq3X7BRoHsnPjfNolJel+Fgfug+aDO3Dhv84=" - } + "okio-1.15.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.jar" + ], + "hash": "sha256-aT+jGafohDMAYCsgQCO3Z08Qbry1d/LdWAchK2YRi9I=" + }, + "okio-1.15.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom" + ], + "hash": "sha256-8cELFIDRq3X7BRoHsnPjfNolJel+Fgfug+aDO3Dhv84=" } } }, "com.winterbe:expekt": { "0.5.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "expekt-0.5.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.jar" - ], - "hash": "sha256-mKJnQqgnRs1u5m7/u8PK/TInA+onhhf734u5tU3O8Xw=" - }, - "expekt-0.5.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.pom" - ], - "hash": "sha256-We03cwfzVZIPORBAQ6YBDDrnbKWfKULGxk3Ttg0pEsc=" - } + "expekt-0.5.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.jar" + ], + "hash": "sha256-mKJnQqgnRs1u5m7/u8PK/TInA+onhhf734u5tU3O8Xw=" + }, + "expekt-0.5.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.pom" + ], + "hash": "sha256-We03cwfzVZIPORBAQ6YBDDrnbKWfKULGxk3Ttg0pEsc=" } } }, "de.undercouch:gradle-download-task": { "4.1.1": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "gradle-download-task-4.1.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.jar" - ], - "hash": "sha256-6wi1cOQI1GRnBecKlJYU1DnqKxFFXxZSqwMw3olU2rk=" - }, - "gradle-download-task-4.1.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.pom" - ], - "hash": "sha256-EQnx9xpUJU1ZAzfYudRD+d/AhyjJwdgzVlXMHcyIwLk=" - } + "gradle-download-task-4.1.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.jar" + ], + "hash": "sha256-6wi1cOQI1GRnBecKlJYU1DnqKxFFXxZSqwMw3olU2rk=" + }, + "gradle-download-task-4.1.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.pom" + ], + "hash": "sha256-EQnx9xpUJU1ZAzfYudRD+d/AhyjJwdgzVlXMHcyIwLk=" } } }, "io.github.classgraph:classgraph": { "4.8.37": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "classgraph-4.8.37.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar" - ], - "hash": "sha256-fR0+iCjB7vVJ1B7x7Oc9LFxYz7lRs/Igzwzx3SVVgXM=" - }, - "classgraph-4.8.37.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom" - ], - "hash": "sha256-pJBV0GEleGZQvjPu13rphQCROLhNOWA7wesu08gIWzQ=" - } + "classgraph-4.8.37.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar" + ], + "hash": "sha256-fR0+iCjB7vVJ1B7x7Oc9LFxYz7lRs/Igzwzx3SVVgXM=" + }, + "classgraph-4.8.37.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom" + ], + "hash": "sha256-pJBV0GEleGZQvjPu13rphQCROLhNOWA7wesu08gIWzQ=" } } }, "io.javalin:javalin": { "3.7.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "javalin-3.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.jar" - ], - "hash": "sha256-YGYQPPI2In7IacUllknrErvlwFyH8MHp9y86RGYOZ3I=" - }, - "javalin-3.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.pom" - ], - "hash": "sha256-11U3Www5qZiAEH3sDAzdMgDx7qi2npxtFkYdyuR050M=" - } + "javalin-3.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.jar" + ], + "hash": "sha256-YGYQPPI2In7IacUllknrErvlwFyH8MHp9y86RGYOZ3I=" + }, + "javalin-3.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.pom" + ], + "hash": "sha256-11U3Www5qZiAEH3sDAzdMgDx7qi2npxtFkYdyuR050M=" } } }, "javax.servlet:javax.servlet-api": { "3.1.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "javax.servlet-api-3.1.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" - ], - "hash": "sha256-r0VrLdQcToLPVPPnQ7xniXPZ/jW9TTBx+gXH5TM7hII=" - }, - "javax.servlet-api-3.1.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom" - ], - "hash": "sha256-sxEJ4i6j8t8a15VUMucYo13vUK5sGWmANK+ooM+ekGk=" - } + "javax.servlet-api-3.1.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" + ], + "hash": "sha256-r0VrLdQcToLPVPPnQ7xniXPZ/jW9TTBx+gXH5TM7hII=" + }, + "javax.servlet-api-3.1.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom" + ], + "hash": "sha256-sxEJ4i6j8t8a15VUMucYo13vUK5sGWmANK+ooM+ekGk=" } } }, "net.java.dev.jna:jna": { "5.6.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jna-5.6.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], - "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" - }, - "jna-5.6.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], - "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" - } + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" } } }, "org.apiguardian:apiguardian-api": { "1.1.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "apiguardian-api-1.1.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar" - ], - "hash": "sha256-qarp/4rj4XoqGPeRdegrFiZ8JG+708qd+7spCwjc/dQ=" - }, - "apiguardian-api-1.1.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom" - ], - "hash": "sha256-qUW5y1zZt3sscRhE5lnEPsBw71nZ9Qn6n0wYYbSGJxE=" - } + "apiguardian-api-1.1.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar" + ], + "hash": "sha256-qarp/4rj4XoqGPeRdegrFiZ8JG+708qd+7spCwjc/dQ=" + }, + "apiguardian-api-1.1.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom" + ], + "hash": "sha256-qUW5y1zZt3sscRhE5lnEPsBw71nZ9Qn6n0wYYbSGJxE=" } } }, "org.checkerframework:checker-qual": { "2.11.1": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "checker-qual-2.11.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar" - ], - "hash": "sha256-AVIkpLHcbebaBTJz1Np9Oc/qIOYwOBafxFrA0dycWTg=" - }, - "checker-qual-2.11.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom" - ], - "hash": "sha256-zy4MkNj3V0VfSiWOpglzkFNmO9XaannZvVP5NaR955w=" - } + "checker-qual-2.11.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar" + ], + "hash": "sha256-AVIkpLHcbebaBTJz1Np9Oc/qIOYwOBafxFrA0dycWTg=" + }, + "checker-qual-2.11.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom" + ], + "hash": "sha256-zy4MkNj3V0VfSiWOpglzkFNmO9XaannZvVP5NaR955w=" } } }, "org.eclipse.jetty.websocket:websocket-api": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "websocket-api-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.jar" - ], - "hash": "sha256-sRCCel9HyDUQMj7hm+h+N7FUDhVTfNAhqTVJ4El0f68=" - }, - "websocket-api-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.pom" - ], - "hash": "sha256-xn/BVBQDGiWCGJri17IMVhDTUvWkf4fSi8+1lJQTWcs=" - } + "websocket-api-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.jar" + ], + "hash": "sha256-sRCCel9HyDUQMj7hm+h+N7FUDhVTfNAhqTVJ4El0f68=" + }, + "websocket-api-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.pom" + ], + "hash": "sha256-xn/BVBQDGiWCGJri17IMVhDTUvWkf4fSi8+1lJQTWcs=" } } }, "org.eclipse.jetty.websocket:websocket-client": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "websocket-client-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.jar" - ], - "hash": "sha256-dIMBH4pyWNlP62P+SjZSCYG8HYXsPdGxSJlX1AcRFOw=" - }, - "websocket-client-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.pom" - ], - "hash": "sha256-AzAQdDEZ7xKiB2CXLdHAu6BwLuiVU5LtP/QdF2RMOs4=" - } + "websocket-client-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.jar" + ], + "hash": "sha256-dIMBH4pyWNlP62P+SjZSCYG8HYXsPdGxSJlX1AcRFOw=" + }, + "websocket-client-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.pom" + ], + "hash": "sha256-AzAQdDEZ7xKiB2CXLdHAu6BwLuiVU5LtP/QdF2RMOs4=" } } }, "org.eclipse.jetty.websocket:websocket-common": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "websocket-common-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.jar" - ], - "hash": "sha256-1bvWkUvEIbKOB6MXkc2ZKgBnQX1rX9Bapkq1hDrydzw=" - }, - "websocket-common-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.pom" - ], - "hash": "sha256-ukxD7w1zKeye8StLaAa+D3rHPCQRm8vkvj1m7ebbmlQ=" - } + "websocket-common-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.jar" + ], + "hash": "sha256-1bvWkUvEIbKOB6MXkc2ZKgBnQX1rX9Bapkq1hDrydzw=" + }, + "websocket-common-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.pom" + ], + "hash": "sha256-ukxD7w1zKeye8StLaAa+D3rHPCQRm8vkvj1m7ebbmlQ=" } } }, "org.eclipse.jetty.websocket:websocket-server": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "websocket-server-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.jar" - ], - "hash": "sha256-PjO/DwuuXX+/Rx16JWroB4UCkGoxIaCgANkU39F21bo=" - }, - "websocket-server-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.pom" - ], - "hash": "sha256-o9WaXSoxrXskMRuXh2Eog5sNeO+oH4blG6yqelb5MKQ=" - } + "websocket-server-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.jar" + ], + "hash": "sha256-PjO/DwuuXX+/Rx16JWroB4UCkGoxIaCgANkU39F21bo=" + }, + "websocket-server-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.pom" + ], + "hash": "sha256-o9WaXSoxrXskMRuXh2Eog5sNeO+oH4blG6yqelb5MKQ=" } } }, "org.eclipse.jetty.websocket:websocket-servlet": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "websocket-servlet-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.jar" - ], - "hash": "sha256-nYoe6bmGzp/JJM3ai9fvzxwLZ0X3qWa1B8x3WU/vIms=" - }, - "websocket-servlet-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.pom" - ], - "hash": "sha256-WgVNHE2/17gfAqoOIR+pm7ZHZEn6T48swQGjvPtT7wY=" - } + "websocket-servlet-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.jar" + ], + "hash": "sha256-nYoe6bmGzp/JJM3ai9fvzxwLZ0X3qWa1B8x3WU/vIms=" + }, + "websocket-servlet-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.pom" + ], + "hash": "sha256-WgVNHE2/17gfAqoOIR+pm7ZHZEn6T48swQGjvPtT7wY=" } } }, "org.eclipse.jetty:jetty-client": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jetty-client-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.jar" - ], - "hash": "sha256-qwUsaY1GjdLLjZ1bcH5VqUQDDZFfT59BrDzc+Cs9xuA=" - }, - "jetty-client-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.pom" - ], - "hash": "sha256-ixNwOlizo3BtJIiemlXDSRu+XY+DZdOoKkvvqcbp+eM=" - } + "jetty-client-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.jar" + ], + "hash": "sha256-qwUsaY1GjdLLjZ1bcH5VqUQDDZFfT59BrDzc+Cs9xuA=" + }, + "jetty-client-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.pom" + ], + "hash": "sha256-ixNwOlizo3BtJIiemlXDSRu+XY+DZdOoKkvvqcbp+eM=" } } }, "org.eclipse.jetty:jetty-http": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jetty-http-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.jar" - ], - "hash": "sha256-3JxGbw/kvzf9X02iPQFoSwZ63poWAsTzxbaUvMIIR7o=" - }, - "jetty-http-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.pom" - ], - "hash": "sha256-upIlnnZtESJEah+zuPZAXnroxcQS8i6XbLCEyoxhm4c=" - } + "jetty-http-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.jar" + ], + "hash": "sha256-3JxGbw/kvzf9X02iPQFoSwZ63poWAsTzxbaUvMIIR7o=" + }, + "jetty-http-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.pom" + ], + "hash": "sha256-upIlnnZtESJEah+zuPZAXnroxcQS8i6XbLCEyoxhm4c=" } } }, "org.eclipse.jetty:jetty-io": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jetty-io-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.jar" - ], - "hash": "sha256-6cMdtQO2B1/UPxVTGQMAfB6Cn8JF2jQEtuQyfyTvlWk=" - }, - "jetty-io-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.pom" - ], - "hash": "sha256-q1nyQDwSIWhSvBzyhOVhETo9LgsZUmMwmLBfOQW9kYE=" - } + "jetty-io-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.jar" + ], + "hash": "sha256-6cMdtQO2B1/UPxVTGQMAfB6Cn8JF2jQEtuQyfyTvlWk=" + }, + "jetty-io-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.pom" + ], + "hash": "sha256-q1nyQDwSIWhSvBzyhOVhETo9LgsZUmMwmLBfOQW9kYE=" } } }, "org.eclipse.jetty:jetty-security": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jetty-security-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.jar" - ], - "hash": "sha256-Y3HBY7kqyNb6sIyx2rkdDmkOclZoc9j3g706d5Oj2iY=" - }, - "jetty-security-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.pom" - ], - "hash": "sha256-2j1qeYtoSPOXIPxweDTha+S8pC31qiXCWSK5Mvz+rus=" - } + "jetty-security-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.jar" + ], + "hash": "sha256-Y3HBY7kqyNb6sIyx2rkdDmkOclZoc9j3g706d5Oj2iY=" + }, + "jetty-security-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.pom" + ], + "hash": "sha256-2j1qeYtoSPOXIPxweDTha+S8pC31qiXCWSK5Mvz+rus=" } } }, "org.eclipse.jetty:jetty-server": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jetty-server-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.jar" - ], - "hash": "sha256-z89tvOS+zuXwZw2bx6do0bc87wyEZj6CrMC5EN8lZfQ=" - }, - "jetty-server-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.pom" - ], - "hash": "sha256-uWOogVUMUf5hOTgJbqfwWZLoGzBBy8faXgb6+8/YZWk=" - } + "jetty-server-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.jar" + ], + "hash": "sha256-z89tvOS+zuXwZw2bx6do0bc87wyEZj6CrMC5EN8lZfQ=" + }, + "jetty-server-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.pom" + ], + "hash": "sha256-uWOogVUMUf5hOTgJbqfwWZLoGzBBy8faXgb6+8/YZWk=" } } }, "org.eclipse.jetty:jetty-servlet": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jetty-servlet-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.jar" - ], - "hash": "sha256-LU0t1OZdCWL0/xHTycytMKYmN3fgVpwbVzE4aLNHchw=" - }, - "jetty-servlet-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.pom" - ], - "hash": "sha256-tw95bbbqAGKLv7ph5aLgMRLjJ10OaIHJN/ARwn/wXos=" - } + "jetty-servlet-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.jar" + ], + "hash": "sha256-LU0t1OZdCWL0/xHTycytMKYmN3fgVpwbVzE4aLNHchw=" + }, + "jetty-servlet-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.pom" + ], + "hash": "sha256-tw95bbbqAGKLv7ph5aLgMRLjJ10OaIHJN/ARwn/wXos=" } } }, "org.eclipse.jetty:jetty-util": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jetty-util-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.jar" - ], - "hash": "sha256-IjeA1yTBx0Y8MjOoLAdobz/XigIvVg0BAlfb5AKODRQ=" - }, - "jetty-util-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.pom" - ], - "hash": "sha256-iEWSOTxmB1pqb6Z9iY532crIf1lIy10xDPyN5Z7wE8Y=" - } + "jetty-util-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.jar" + ], + "hash": "sha256-IjeA1yTBx0Y8MjOoLAdobz/XigIvVg0BAlfb5AKODRQ=" + }, + "jetty-util-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.pom" + ], + "hash": "sha256-iEWSOTxmB1pqb6Z9iY532crIf1lIy10xDPyN5Z7wE8Y=" } } }, "org.eclipse.jetty:jetty-webapp": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jetty-webapp-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.jar" - ], - "hash": "sha256-qnWB2sNcrVdLA82aFEuibc9DeZ0k7P9enzoGiKJzLvE=" - }, - "jetty-webapp-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.pom" - ], - "hash": "sha256-HRXbctxeN+O+7iEjd1PsYkXn/sXj/ehUK5Yf/ZB9Ufw=" - } + "jetty-webapp-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.jar" + ], + "hash": "sha256-qnWB2sNcrVdLA82aFEuibc9DeZ0k7P9enzoGiKJzLvE=" + }, + "jetty-webapp-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.pom" + ], + "hash": "sha256-HRXbctxeN+O+7iEjd1PsYkXn/sXj/ehUK5Yf/ZB9Ufw=" } } }, "org.eclipse.jetty:jetty-xml": { "9.4.25.v20191220": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jetty-xml-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.jar" - ], - "hash": "sha256-+xNsUWNTj8WHQuqlbfRIdlu4FvJd43Hasf6u5612tN8=" - }, - "jetty-xml-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.pom" - ], - "hash": "sha256-05fGZk1fr9j7VX7NJU4EZP16bakwG60B4C248SAFvrM=" - } + "jetty-xml-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.jar" + ], + "hash": "sha256-+xNsUWNTj8WHQuqlbfRIdlu4FvJd43Hasf6u5612tN8=" + }, + "jetty-xml-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.pom" + ], + "hash": "sha256-05fGZk1fr9j7VX7NJU4EZP16bakwG60B4C248SAFvrM=" } } }, "org.jetbrains.intellij.deps:trove4j": { "1.0.20200330": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } } }, "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.6.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom" - ], - "hash": "sha256-hKJnm90W1DkKJmp58Gzaix+iq38XlowYk0l84ZWOHEQ=" - } + "org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.6.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom" + ], + "hash": "sha256-hKJnm90W1DkKJmp58Gzaix+iq38XlowYk0l84ZWOHEQ=" } } }, "org.jetbrains.kotlin:kotlin-android-extensions": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-android-extensions-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.jar" - ], - "hash": "sha256-QY25MO/hevs27AnooGI1615PYAsrXKFIeEIsn5lEbPs=" - }, - "kotlin-android-extensions-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.pom" - ], - "hash": "sha256-oWU+E091vwu2aNklZdd/Qy3lGijcUcNK9eOBS53tCsQ=" - } + "kotlin-android-extensions-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.jar" + ], + "hash": "sha256-QY25MO/hevs27AnooGI1615PYAsrXKFIeEIsn5lEbPs=" + }, + "kotlin-android-extensions-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.pom" + ], + "hash": "sha256-oWU+E091vwu2aNklZdd/Qy3lGijcUcNK9eOBS53tCsQ=" } } }, "org.jetbrains.kotlin:kotlin-annotation-processing-gradle": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-annotation-processing-gradle-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.jar" - ], - "hash": "sha256-tA86gSFVnlAjnFXvh2Z6IYBRG7GTQfzIYZh+T4TOYog=" - }, - "kotlin-annotation-processing-gradle-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.pom" - ], - "hash": "sha256-MImLOrD3X6VZjABz0qoqV9yctWnJ6Mb/O6UXUopMEHE=" - } + "kotlin-annotation-processing-gradle-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.jar" + ], + "hash": "sha256-tA86gSFVnlAjnFXvh2Z6IYBRG7GTQfzIYZh+T4TOYog=" + }, + "kotlin-annotation-processing-gradle-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.pom" + ], + "hash": "sha256-MImLOrD3X6VZjABz0qoqV9yctWnJ6Mb/O6UXUopMEHE=" } } }, "org.jetbrains.kotlin:kotlin-build-common": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-build-common-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.jar" - ], - "hash": "sha256-Y+6kBdNeNOggJcL0FW49R1fLjyWUmWIzVspma9IQAZ0=" - }, - "kotlin-build-common-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.pom" - ], - "hash": "sha256-LRDfBINfB7h6qBoOf+xAbSwawRxU5+CPCOtRGv5btI8=" - } + "kotlin-build-common-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.jar" + ], + "hash": "sha256-Y+6kBdNeNOggJcL0FW49R1fLjyWUmWIzVspma9IQAZ0=" + }, + "kotlin-build-common-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.pom" + ], + "hash": "sha256-LRDfBINfB7h6qBoOf+xAbSwawRxU5+CPCOtRGv5btI8=" } } }, "org.jetbrains.kotlin:kotlin-compiler-embeddable": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-compiler-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar" - ], - "hash": "sha256-X5ZQPNgiqmwg7abHFqVTxBTYAO0Mbn1lX6Gx+/1P7Cs=" - }, - "kotlin-compiler-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom" - ], - "hash": "sha256-wpULrWEPTie9iidbgcDoPIUfGD1gTuH7iRJV9DRa9EE=" - } + "kotlin-compiler-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar" + ], + "hash": "sha256-X5ZQPNgiqmwg7abHFqVTxBTYAO0Mbn1lX6Gx+/1P7Cs=" + }, + "kotlin-compiler-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom" + ], + "hash": "sha256-wpULrWEPTie9iidbgcDoPIUfGD1gTuH7iRJV9DRa9EE=" } } }, "org.jetbrains.kotlin:kotlin-compiler-runner": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-compiler-runner-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.jar" - ], - "hash": "sha256-IGGw47e3Uwv2cg2LBBC+Eyb7Fs1NrcN+d8Aqz+/loLM=" - }, - "kotlin-compiler-runner-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.pom" - ], - "hash": "sha256-b0Ofb0jeG+QltfdQlLbqpICL6hG8LjzmtUTG4zOQtSU=" - } + "kotlin-compiler-runner-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.jar" + ], + "hash": "sha256-IGGw47e3Uwv2cg2LBBC+Eyb7Fs1NrcN+d8Aqz+/loLM=" + }, + "kotlin-compiler-runner-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.pom" + ], + "hash": "sha256-b0Ofb0jeG+QltfdQlLbqpICL6hG8LjzmtUTG4zOQtSU=" } } }, "org.jetbrains.kotlin:kotlin-daemon-client": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-daemon-client-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.jar" - ], - "hash": "sha256-ZHawBzZPVFzmd6ObkzG8IbVqvXtWbwOfUfIVCKOQL6c=" - }, - "kotlin-daemon-client-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.pom" - ], - "hash": "sha256-Q8EnIKTydrNdwEOWEo6bf7Goq9B6FstAnGwNZwaiMWs=" - } + "kotlin-daemon-client-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.jar" + ], + "hash": "sha256-ZHawBzZPVFzmd6ObkzG8IbVqvXtWbwOfUfIVCKOQL6c=" + }, + "kotlin-daemon-client-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.pom" + ], + "hash": "sha256-Q8EnIKTydrNdwEOWEo6bf7Goq9B6FstAnGwNZwaiMWs=" } } }, "org.jetbrains.kotlin:kotlin-daemon-embeddable": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-daemon-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar" - ], - "hash": "sha256-UcPsHDLDbWVw2DFC6v4qJCk08WXwt4w4YTdpBfkPLhI=" - }, - "kotlin-daemon-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom" - ], - "hash": "sha256-tFZZFoP6YHGHAFr0sx0x1DYE4CHWBFUf8PIubdpWK5o=" - } + "kotlin-daemon-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar" + ], + "hash": "sha256-UcPsHDLDbWVw2DFC6v4qJCk08WXwt4w4YTdpBfkPLhI=" + }, + "kotlin-daemon-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom" + ], + "hash": "sha256-tFZZFoP6YHGHAFr0sx0x1DYE4CHWBFUf8PIubdpWK5o=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.jar" - ], - "hash": "sha256-Z1Oi4RJtP5k6lRryrcBrHsTKJxdulsj2Mnd5kBBNFa0=" - }, - "kotlin-gradle-plugin-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.pom" - ], - "hash": "sha256-7RX0N/j1aW6NU7mszIYS6cas9Wfbau0E/ymq3F4DpC4=" - } + "kotlin-gradle-plugin-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.jar" + ], + "hash": "sha256-Z1Oi4RJtP5k6lRryrcBrHsTKJxdulsj2Mnd5kBBNFa0=" + }, + "kotlin-gradle-plugin-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.pom" + ], + "hash": "sha256-7RX0N/j1aW6NU7mszIYS6cas9Wfbau0E/ymq3F4DpC4=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-api-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.jar" - ], - "hash": "sha256-x0wfF5FsrG1ygGJkmI0V4yGa8kYJB5E3Tq6cua8ufLM=" - }, - "kotlin-gradle-plugin-api-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.pom" - ], - "hash": "sha256-JL0R1cjnNGMHSBUXnPuyYCAJIxyEE5aTr3ydVtzU3z8=" - } + "kotlin-gradle-plugin-api-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.jar" + ], + "hash": "sha256-x0wfF5FsrG1ygGJkmI0V4yGa8kYJB5E3Tq6cua8ufLM=" + }, + "kotlin-gradle-plugin-api-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.pom" + ], + "hash": "sha256-JL0R1cjnNGMHSBUXnPuyYCAJIxyEE5aTr3ydVtzU3z8=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-model-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.jar" - ], - "hash": "sha256-YFmxxhMI+4WaAedYsrj9Ctr/dBs9+AI1+t6VrWq4loc=" - }, - "kotlin-gradle-plugin-model-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.pom" - ], - "hash": "sha256-QkLJzsOQLX21n4OMupPDDnMeC10yzDnQ5Ft1gKZUBOo=" - } + "kotlin-gradle-plugin-model-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.jar" + ], + "hash": "sha256-YFmxxhMI+4WaAedYsrj9Ctr/dBs9+AI1+t6VrWq4loc=" + }, + "kotlin-gradle-plugin-model-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.pom" + ], + "hash": "sha256-QkLJzsOQLX21n4OMupPDDnMeC10yzDnQ5Ft1gKZUBOo=" } } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-klib-commonizer-api-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.jar" - ], - "hash": "sha256-0s9pUu7ziUqs+KnYzx6MZ78hW075AmioyQMYNFMKOHQ=" - }, - "kotlin-klib-commonizer-api-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.pom" - ], - "hash": "sha256-FICJ7qPCUPClDqxomfFFq5D1mJM8GrT5qsldYXKHJfQ=" - } + "kotlin-klib-commonizer-api-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.jar" + ], + "hash": "sha256-0s9pUu7ziUqs+KnYzx6MZ78hW075AmioyQMYNFMKOHQ=" + }, + "kotlin-klib-commonizer-api-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.pom" + ], + "hash": "sha256-FICJ7qPCUPClDqxomfFFq5D1mJM8GrT5qsldYXKHJfQ=" } } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-klib-commonizer-embeddable-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.jar" - ], - "hash": "sha256-1jgafq67fkj8p2v1u55fQ/pW3eb9UQXK6N4TXmMoD3A=" - }, - "kotlin-klib-commonizer-embeddable-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.pom" - ], - "hash": "sha256-bz7nSBQNsbaG5nqJehadbeQv1nQkHVVA3FK7o2Re/i4=" - } + "kotlin-klib-commonizer-embeddable-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.jar" + ], + "hash": "sha256-1jgafq67fkj8p2v1u55fQ/pW3eb9UQXK6N4TXmMoD3A=" + }, + "kotlin-klib-commonizer-embeddable-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.pom" + ], + "hash": "sha256-bz7nSBQNsbaG5nqJehadbeQv1nQkHVVA3FK7o2Re/i4=" } } }, "org.jetbrains.kotlin:kotlin-native-utils": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-native-utils-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.jar" - ], - "hash": "sha256-a9hyJOVq4V/+IQTTx2M9cq9sezWCRa08SnbG1f0NNr8=" - }, - "kotlin-native-utils-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.pom" - ], - "hash": "sha256-92q9t+TzvxouyTxiqybO/lKg7UlBAY53w/74BrCXvq8=" - } + "kotlin-native-utils-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.jar" + ], + "hash": "sha256-a9hyJOVq4V/+IQTTx2M9cq9sezWCRa08SnbG1f0NNr8=" + }, + "kotlin-native-utils-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.pom" + ], + "hash": "sha256-92q9t+TzvxouyTxiqybO/lKg7UlBAY53w/74BrCXvq8=" } } }, "org.jetbrains.kotlin:kotlin-project-model": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-project-model-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.jar" - ], - "hash": "sha256-FLaE+Kc+IpZ4ASS/OB3eAT9YLqIzZ6zgGEWAo4Sa6Ng=" - }, - "kotlin-project-model-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.pom" - ], - "hash": "sha256-dgKHUWgMZJAf76wyN5AmtNC9I3rdfw873ujtXH51LG4=" - } + "kotlin-project-model-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.jar" + ], + "hash": "sha256-FLaE+Kc+IpZ4ASS/OB3eAT9YLqIzZ6zgGEWAo4Sa6Ng=" + }, + "kotlin-project-model-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.pom" + ], + "hash": "sha256-dgKHUWgMZJAf76wyN5AmtNC9I3rdfw873ujtXH51LG4=" } } }, "org.jetbrains.kotlin:kotlin-reflect": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-reflect-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.jar" - ], - "hash": "sha256-Hh9XIJ9yOMP9FzWhuTOaVlZVB9yiSfg3G/WdkfYBrqo=" - }, - "kotlin-reflect-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.pom" - ], - "hash": "sha256-2nHh493COI1nVkFnLi8DFtucnSEvlG8CbUoOahM2p/M=" - } + "kotlin-reflect-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.jar" + ], + "hash": "sha256-Hh9XIJ9yOMP9FzWhuTOaVlZVB9yiSfg3G/WdkfYBrqo=" + }, + "kotlin-reflect-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.pom" + ], + "hash": "sha256-2nHh493COI1nVkFnLi8DFtucnSEvlG8CbUoOahM2p/M=" } }, "1.3.50": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-reflect-1.3.50.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar" - ], - "hash": "sha256-ZFgxmepaVK79G9FZUoiSX3hCJu5WLR3SeQEcYHWz16Q=" - }, - "kotlin-reflect-1.3.50.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom" - ], - "hash": "sha256-h0UYHlo+C6/v1GMJxrgQ33JT83n+uYUTHq+NTZwwJjU=" - } + "kotlin-reflect-1.3.50.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar" + ], + "hash": "sha256-ZFgxmepaVK79G9FZUoiSX3hCJu5WLR3SeQEcYHWz16Q=" + }, + "kotlin-reflect-1.3.50.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom" + ], + "hash": "sha256-h0UYHlo+C6/v1GMJxrgQ33JT83n+uYUTHq+NTZwwJjU=" } } }, "org.jetbrains.kotlin:kotlin-runtime": { "1.0.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-runtime-1.0.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.jar" - ], - "hash": "sha256-jBkPOBLPoR0I6wFBuMh36jJC8N3Q6r/llSV0Pq5ifo4=" - }, - "kotlin-runtime-1.0.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.pom" - ], - "hash": "sha256-LaX+tSEGymCnZiDUaRgktUkbyi7ojMJVcwALCX3lRRc=" - } + "kotlin-runtime-1.0.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.jar" + ], + "hash": "sha256-jBkPOBLPoR0I6wFBuMh36jJC8N3Q6r/llSV0Pq5ifo4=" + }, + "kotlin-runtime-1.0.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.pom" + ], + "hash": "sha256-LaX+tSEGymCnZiDUaRgktUkbyi7ojMJVcwALCX3lRRc=" } } }, "org.jetbrains.kotlin:kotlin-script-runtime": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-script-runtime-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.jar" - ], - "hash": "sha256-YGw0p+bo5DnpIIdl59dbHbz4Dzg1Pz4puydFbXs3EXE=" - }, - "kotlin-script-runtime-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.pom" - ], - "hash": "sha256-jVeQOOsdLK0DMFKOKdyMy4rozQ1WClRMXBswqT7O/t4=" - } + "kotlin-script-runtime-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.jar" + ], + "hash": "sha256-YGw0p+bo5DnpIIdl59dbHbz4Dzg1Pz4puydFbXs3EXE=" + }, + "kotlin-script-runtime-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.pom" + ], + "hash": "sha256-jVeQOOsdLK0DMFKOKdyMy4rozQ1WClRMXBswqT7O/t4=" } } }, "org.jetbrains.kotlin:kotlin-scripting-common": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-common-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar" - ], - "hash": "sha256-v79fA2I3zTPCX7oz1IlI2ZXbgYbOPwnDGvnCnIDOnK4=" - }, - "kotlin-scripting-common-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom" - ], - "hash": "sha256-qgWvDyJWUokIeXiduzo6UY4XdWqFsT1UCo3P3wPL+5w=" - } + "kotlin-scripting-common-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar" + ], + "hash": "sha256-v79fA2I3zTPCX7oz1IlI2ZXbgYbOPwnDGvnCnIDOnK4=" + }, + "kotlin-scripting-common-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom" + ], + "hash": "sha256-qgWvDyJWUokIeXiduzo6UY4XdWqFsT1UCo3P3wPL+5w=" } } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-compiler-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar" - ], - "hash": "sha256-XJNzrzrkC3PW12JLJOjOEXIUSV2GLebSz7YYpxGRBrE=" - }, - "kotlin-scripting-compiler-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom" - ], - "hash": "sha256-C32qtju7PFTd0+NF6wzLI3aAv9TDh7Zfzllt/0uEe9s=" - } + "kotlin-scripting-compiler-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar" + ], + "hash": "sha256-XJNzrzrkC3PW12JLJOjOEXIUSV2GLebSz7YYpxGRBrE=" + }, + "kotlin-scripting-compiler-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom" + ], + "hash": "sha256-C32qtju7PFTd0+NF6wzLI3aAv9TDh7Zfzllt/0uEe9s=" } } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-compiler-impl-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar" - ], - "hash": "sha256-5ARLjeAehGM5I3BvQ82oDTfYu++M6ahm+dlZYt3SBIA=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom" - ], - "hash": "sha256-gIxqOEi7Xk9sYWmKxYkxIVc8Q9s4FCNW6D3q0EyzhjQ=" - } + "kotlin-scripting-compiler-impl-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar" + ], + "hash": "sha256-5ARLjeAehGM5I3BvQ82oDTfYu++M6ahm+dlZYt3SBIA=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom" + ], + "hash": "sha256-gIxqOEi7Xk9sYWmKxYkxIVc8Q9s4FCNW6D3q0EyzhjQ=" } } }, "org.jetbrains.kotlin:kotlin-scripting-jvm": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-jvm-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar" - ], - "hash": "sha256-ksA/6r9L3ZLVoixRp0i9NAJ0Z8PY9MZftbV0uGsH0QQ=" - }, - "kotlin-scripting-jvm-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom" - ], - "hash": "sha256-i5q1hXoYheSL2uAPqosix0sNPkCmNPyeCadG+op1fTI=" - } + "kotlin-scripting-jvm-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar" + ], + "hash": "sha256-ksA/6r9L3ZLVoixRp0i9NAJ0Z8PY9MZftbV0uGsH0QQ=" + }, + "kotlin-scripting-jvm-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom" + ], + "hash": "sha256-i5q1hXoYheSL2uAPqosix0sNPkCmNPyeCadG+op1fTI=" } } }, "org.jetbrains.kotlin:kotlin-stdlib": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.jar" - ], - "hash": "sha256-c5xSZnK7M3Vzso9jr6gwbrCIsMOgln9W1sifSjASpJI=" - }, - "kotlin-stdlib-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.pom" - ], - "hash": "sha256-zkJyW6Ab2DbNqmZ9l032hL9vjxXng5JjMgraf/quHzQ=" - } + "kotlin-stdlib-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.jar" + ], + "hash": "sha256-c5xSZnK7M3Vzso9jr6gwbrCIsMOgln9W1sifSjASpJI=" + }, + "kotlin-stdlib-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.pom" + ], + "hash": "sha256-zkJyW6Ab2DbNqmZ9l032hL9vjxXng5JjMgraf/quHzQ=" } }, "1.3.61": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.jar" - ], - "hash": "sha256-5R5RJhmn52UKMOtOs+nAPmkJx7XjwCZATgdiVMCYuTI=" - }, - "kotlin-stdlib-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom" - ], - "hash": "sha256-2+W6vNjUPpsIwoRWgLU/wbs+BRxIBYAt3Q7T6OLFCoQ=" - } + "kotlin-stdlib-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.jar" + ], + "hash": "sha256-5R5RJhmn52UKMOtOs+nAPmkJx7XjwCZATgdiVMCYuTI=" + }, + "kotlin-stdlib-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom" + ], + "hash": "sha256-2+W6vNjUPpsIwoRWgLU/wbs+BRxIBYAt3Q7T6OLFCoQ=" } }, "1.0.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-1.0.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.jar" - ], - "hash": "sha256-ZyHVKFgAZF7WgZP35t0H0srOCd6fO3XN8fMFD0Y1l4E=" - }, - "kotlin-stdlib-1.0.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.pom" - ], - "hash": "sha256-QK5yi+5hvXgSHcWjdko/vH1jRYaHuRmI2qXKMhFQNx0=" - } + "kotlin-stdlib-1.0.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.jar" + ], + "hash": "sha256-ZyHVKFgAZF7WgZP35t0H0srOCd6fO3XN8fMFD0Y1l4E=" + }, + "kotlin-stdlib-1.0.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.pom" + ], + "hash": "sha256-QK5yi+5hvXgSHcWjdko/vH1jRYaHuRmI2qXKMhFQNx0=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-common": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-common-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.jar" - ], - "hash": "sha256-GDvsWc2fOhSVexkOjIec8RlL0fEGsKe24cu4eQ0kI2M=" - }, - "kotlin-stdlib-common-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom" - ], - "hash": "sha256-W8FW7nP9PC2sil7FSNWBtjMzNUfC/r7Zz2VH//FSa6I=" - } + "kotlin-stdlib-common-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.jar" + ], + "hash": "sha256-GDvsWc2fOhSVexkOjIec8RlL0fEGsKe24cu4eQ0kI2M=" + }, + "kotlin-stdlib-common-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom" + ], + "hash": "sha256-W8FW7nP9PC2sil7FSNWBtjMzNUfC/r7Zz2VH//FSa6I=" } }, "1.3.61": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-common-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.jar" - ], - "hash": "sha256-oufzQc8wR7XwChkX73d9MjzasqVzd0aLjtYqoxRpz38=" - }, - "kotlin-stdlib-common-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom" - ], - "hash": "sha256-4i2wCbsaYWNtlCVjWYlzbbXj/KSUgJq/JERo3EdM/AQ=" - } + "kotlin-stdlib-common-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.jar" + ], + "hash": "sha256-oufzQc8wR7XwChkX73d9MjzasqVzd0aLjtYqoxRpz38=" + }, + "kotlin-stdlib-common-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom" + ], + "hash": "sha256-4i2wCbsaYWNtlCVjWYlzbbXj/KSUgJq/JERo3EdM/AQ=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-jdk7-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.jar" - ], - "hash": "sha256-8bBjTbuUFyA4RjAguy3UXKJoSfjOKdYlrLDxVp0R2+4=" - }, - "kotlin-stdlib-jdk7-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.pom" - ], - "hash": "sha256-ARzSjruf3oFrA1nVrhCjZ07A/yxTEMBBLCDv6Oo9oG4=" - } + "kotlin-stdlib-jdk7-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.jar" + ], + "hash": "sha256-8bBjTbuUFyA4RjAguy3UXKJoSfjOKdYlrLDxVp0R2+4=" + }, + "kotlin-stdlib-jdk7-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.pom" + ], + "hash": "sha256-ARzSjruf3oFrA1nVrhCjZ07A/yxTEMBBLCDv6Oo9oG4=" } }, "1.3.61": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-jdk7-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar" - ], - "hash": "sha256-EfSlfj59gfPxUtXc7+Ob13YUtalBJf87EVJrChmsOYk=" - }, - "kotlin-stdlib-jdk7-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom" - ], - "hash": "sha256-xBYICuq9uRGKCO54wo4oVgOM2FhYQipx98Rr8nb2Z6c=" - } + "kotlin-stdlib-jdk7-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar" + ], + "hash": "sha256-EfSlfj59gfPxUtXc7+Ob13YUtalBJf87EVJrChmsOYk=" + }, + "kotlin-stdlib-jdk7-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom" + ], + "hash": "sha256-xBYICuq9uRGKCO54wo4oVgOM2FhYQipx98Rr8nb2Z6c=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-jdk8-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.jar" - ], - "hash": "sha256-2rRUibR3NtWfzkS4BnbxlHqba8qxD9YOh4qDvYKmlUw=" - }, - "kotlin-stdlib-jdk8-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.pom" - ], - "hash": "sha256-g2oReaCNJJFGl9JhLgO4SKCHyAy0sMoj+c+rJH86dcQ=" - } + "kotlin-stdlib-jdk8-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.jar" + ], + "hash": "sha256-2rRUibR3NtWfzkS4BnbxlHqba8qxD9YOh4qDvYKmlUw=" + }, + "kotlin-stdlib-jdk8-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.pom" + ], + "hash": "sha256-g2oReaCNJJFGl9JhLgO4SKCHyAy0sMoj+c+rJH86dcQ=" } }, "1.3.61": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-jdk8-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar" - ], - "hash": "sha256-ODm6fet5g3XaGAe8Rp0c8xXbemJ1WZ9zMYQ3R3LsOyE=" - }, - "kotlin-stdlib-jdk8-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom" - ], - "hash": "sha256-4wGH5XIMpkC45oaG8g3QJQ3O8Bk9VuVWnDxKYSdzErY=" - } + "kotlin-stdlib-jdk8-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar" + ], + "hash": "sha256-ODm6fet5g3XaGAe8Rp0c8xXbemJ1WZ9zMYQ3R3LsOyE=" + }, + "kotlin-stdlib-jdk8-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom" + ], + "hash": "sha256-4wGH5XIMpkC45oaG8g3QJQ3O8Bk9VuVWnDxKYSdzErY=" } } }, "org.jetbrains.kotlin:kotlin-tooling-metadata": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-tooling-metadata-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.jar" - ], - "hash": "sha256-Tsk9BRYGawtki6mHxtPWX2+wZ9wLu6lcHs5h4EKEiOU=" - }, - "kotlin-tooling-metadata-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.pom" - ], - "hash": "sha256-uwYH34aI9gLBwvTQmWMz/YsDtpMoaGpud15S9/sNFxg=" - } + "kotlin-tooling-metadata-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.jar" + ], + "hash": "sha256-Tsk9BRYGawtki6mHxtPWX2+wZ9wLu6lcHs5h4EKEiOU=" + }, + "kotlin-tooling-metadata-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.pom" + ], + "hash": "sha256-uwYH34aI9gLBwvTQmWMz/YsDtpMoaGpud15S9/sNFxg=" } } }, "org.jetbrains.kotlin:kotlin-util-io": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-util-io-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.jar" - ], - "hash": "sha256-wCxUcFYyGLcDvh5xbi0M6leH01y+tryUbfAMAM1CrNI=" - }, - "kotlin-util-io-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.pom" - ], - "hash": "sha256-52nyybmRQIYlhKLAoRLIQ3P0fkryrxbQHOSThRMZMhk=" - } + "kotlin-util-io-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.jar" + ], + "hash": "sha256-wCxUcFYyGLcDvh5xbi0M6leH01y+tryUbfAMAM1CrNI=" + }, + "kotlin-util-io-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.pom" + ], + "hash": "sha256-52nyybmRQIYlhKLAoRLIQ3P0fkryrxbQHOSThRMZMhk=" } } }, "org.jetbrains.kotlin:kotlin-util-klib": { "1.6.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-util-klib-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.jar" - ], - "hash": "sha256-7iGKnoGAwbNIwawc+K1xj2qseLp+JrUIEyNIT2Q8YbI=" - }, - "kotlin-util-klib-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.pom" - ], - "hash": "sha256-EsegqvZnLbHXgxxHGWV/+b9rEXGbD8h9iNcnXzl/lKs=" - } + "kotlin-util-klib-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.jar" + ], + "hash": "sha256-7iGKnoGAwbNIwawc+K1xj2qseLp+JrUIEyNIT2Q8YbI=" + }, + "kotlin-util-klib-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.pom" + ], + "hash": "sha256-EsegqvZnLbHXgxxHGWV/+b9rEXGbD8h9iNcnXzl/lKs=" } } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "1.3.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlinx-coroutines-core-1.3.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.jar" - ], - "hash": "sha256-91+LDzJgcX1FNZ+elv9mYT+gY+QGUSCwZ8yQcleghmo=" - }, - "kotlinx-coroutines-core-1.3.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom" - ], - "hash": "sha256-KZmeUobJiKm3K3xt/rmE2fohxRcY9bb5P1Yh5wClN/4=" - } + "kotlinx-coroutines-core-1.3.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.jar" + ], + "hash": "sha256-91+LDzJgcX1FNZ+elv9mYT+gY+QGUSCwZ8yQcleghmo=" + }, + "kotlinx-coroutines-core-1.3.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom" + ], + "hash": "sha256-KZmeUobJiKm3K3xt/rmE2fohxRcY9bb5P1Yh5wClN/4=" } } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-common": { "1.3.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlinx-coroutines-core-common-1.3.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.jar" - ], - "hash": "sha256-Evof8J9dtFxlGJKP9HmjZPOqEXSRW6JgWkIF7GCwGMM=" - }, - "kotlinx-coroutines-core-common-1.3.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.pom" - ], - "hash": "sha256-V2kqeg3vYTmMQz4s87C0p0l4ZpQuBLFFshG1t57CoYM=" - } + "kotlinx-coroutines-core-common-1.3.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.jar" + ], + "hash": "sha256-Evof8J9dtFxlGJKP9HmjZPOqEXSRW6JgWkIF7GCwGMM=" + }, + "kotlinx-coroutines-core-common-1.3.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.pom" + ], + "hash": "sha256-V2kqeg3vYTmMQz4s87C0p0l4ZpQuBLFFshG1t57CoYM=" } } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { "1.5.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - } + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } } }, "org.jetbrains:annotations": { "13.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } } }, "org.junit.platform:junit-platform-commons": { "1.5.2": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "junit-platform-commons-1.5.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.jar" - ], - "hash": "sha256-/ESv38DyDIXnGmbnlDKBrvO8Hg/WLS1po2y2kB5oLBA=" - }, - "junit-platform-commons-1.5.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.pom" - ], - "hash": "sha256-O9DU3tYyqK+MpYf7Z2QBnedxsda8uJrNViQ1oQCfqto=" - } + "junit-platform-commons-1.5.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.jar" + ], + "hash": "sha256-/ESv38DyDIXnGmbnlDKBrvO8Hg/WLS1po2y2kB5oLBA=" + }, + "junit-platform-commons-1.5.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.pom" + ], + "hash": "sha256-O9DU3tYyqK+MpYf7Z2QBnedxsda8uJrNViQ1oQCfqto=" } } }, "org.junit.platform:junit-platform-engine": { "1.5.2": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "junit-platform-engine-1.5.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.jar" - ], - "hash": "sha256-/yC6StjADvF7rvnFVRL5wC2aaHQPfxrAGppqoCOZMfg=" - }, - "junit-platform-engine-1.5.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.pom" - ], - "hash": "sha256-LUuVVVwh4IXrwd299C156x1VZA3Bk7G35hACQP0vGJ8=" - } + "junit-platform-engine-1.5.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.jar" + ], + "hash": "sha256-/yC6StjADvF7rvnFVRL5wC2aaHQPfxrAGppqoCOZMfg=" + }, + "junit-platform-engine-1.5.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.pom" + ], + "hash": "sha256-LUuVVVwh4IXrwd299C156x1VZA3Bk7G35hACQP0vGJ8=" } } }, "org.opentest4j:opentest4j": { "1.2.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "opentest4j-1.2.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" - ], - "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" - }, - "opentest4j-1.2.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" - ], - "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" - } + "opentest4j-1.2.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" + ], + "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" + }, + "opentest4j-1.2.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" + ], + "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" } } }, "org.postgresql:postgresql": { "42.2.2": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "postgresql-42.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.jar" - ], - "hash": "sha256-GZZSQCajAnhT85MuhjnvgTgH0bY/4Ugy9BD/+kJ0+nA=" - }, - "postgresql-42.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.pom" - ], - "hash": "sha256-NbNCwrBu1Cf6VP/xw3GNQ2HvrcNC7DJM7DnBeKm481Y=" - } + "postgresql-42.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.jar" + ], + "hash": "sha256-GZZSQCajAnhT85MuhjnvgTgH0bY/4Ugy9BD/+kJ0+nA=" + }, + "postgresql-42.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.pom" + ], + "hash": "sha256-NbNCwrBu1Cf6VP/xw3GNQ2HvrcNC7DJM7DnBeKm481Y=" } } }, "org.slf4j:slf4j-api": { "1.8.0-beta4": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "slf4j-api-1.8.0-beta4.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar" - ], - "hash": "sha256-YCtxIynIS0qDxARk9P39D+QjjFPvOXE5qGcGRznb9OA=" - }, - "slf4j-api-1.8.0-beta4.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.pom" - ], - "hash": "sha256-+DFtKKzyUrIbHp6O7ZqEwq+9yOBA9p06ELq4E9PYWoU=" - } + "slf4j-api-1.8.0-beta4.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar" + ], + "hash": "sha256-YCtxIynIS0qDxARk9P39D+QjjFPvOXE5qGcGRznb9OA=" + }, + "slf4j-api-1.8.0-beta4.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.pom" + ], + "hash": "sha256-+DFtKKzyUrIbHp6O7ZqEwq+9yOBA9p06ELq4E9PYWoU=" } } }, "org.slf4j:slf4j-simple": { "1.8.0-beta4": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "slf4j-simple-1.8.0-beta4.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.jar" - ], - "hash": "sha256-usZqvFtEYt/2Lh4ZqzsKZcFg681WTPJZENsAOo5WnP0=" - }, - "slf4j-simple-1.8.0-beta4.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.pom" - ], - "hash": "sha256-oXrS6OU00OgZ6o0UIT3nSNRlD/8qJX0+kqE9oxAoe/c=" - } + "slf4j-simple-1.8.0-beta4.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.jar" + ], + "hash": "sha256-usZqvFtEYt/2Lh4ZqzsKZcFg681WTPJZENsAOo5WnP0=" + }, + "slf4j-simple-1.8.0-beta4.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.pom" + ], + "hash": "sha256-oXrS6OU00OgZ6o0UIT3nSNRlD/8qJX0+kqE9oxAoe/c=" } } }, "org.spekframework.spek2:spek-dsl-jvm": { "2.0.9": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "spek-dsl-jvm-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.jar" - ], - "hash": "sha256-gohf+MCcJfvntBQS/IoIyCAn8kuE6gH3ZL5jm8CYGeg=" - }, - "spek-dsl-jvm-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.pom" - ], - "hash": "sha256-q3b2C4rYViJC615qA1SLpiL6xHDFpE6pzckZ34VzgQQ=" - } + "spek-dsl-jvm-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.jar" + ], + "hash": "sha256-gohf+MCcJfvntBQS/IoIyCAn8kuE6gH3ZL5jm8CYGeg=" + }, + "spek-dsl-jvm-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.pom" + ], + "hash": "sha256-q3b2C4rYViJC615qA1SLpiL6xHDFpE6pzckZ34VzgQQ=" } } }, "org.spekframework.spek2:spek-runner-junit5": { "2.0.9": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "spek-runner-junit5-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.jar" - ], - "hash": "sha256-K0ZmWbdh12OKtc2CX8yC3CrA1FPJ6yAKGUAHG4KkpYY=" - }, - "spek-runner-junit5-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.pom" - ], - "hash": "sha256-7GcxgitATmAvUWoOpzJFBWgHoMWg2Kb4SkTjqnfrSjg=" - } + "spek-runner-junit5-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.jar" + ], + "hash": "sha256-K0ZmWbdh12OKtc2CX8yC3CrA1FPJ6yAKGUAHG4KkpYY=" + }, + "spek-runner-junit5-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.pom" + ], + "hash": "sha256-7GcxgitATmAvUWoOpzJFBWgHoMWg2Kb4SkTjqnfrSjg=" } } }, "org.spekframework.spek2:spek-runtime-jvm": { "2.0.9": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "spek-runtime-jvm-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.jar" - ], - "hash": "sha256-dZ18fuF78XJYwySioaGwhusrz2QnnBfh+av1Xsph+nQ=" - }, - "spek-runtime-jvm-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.pom" - ], - "hash": "sha256-9o3lUgIMgh6TRueEI5uGtT5rR1+2DQRoWsdGILeiKeU=" - } + "spek-runtime-jvm-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.jar" + ], + "hash": "sha256-dZ18fuF78XJYwySioaGwhusrz2QnnBfh+av1Xsph+nQ=" + }, + "spek-runtime-jvm-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.pom" + ], + "hash": "sha256-9o3lUgIMgh6TRueEI5uGtT5rR1+2DQRoWsdGILeiKeU=" } } }, "org.xerial:sqlite-jdbc": { "3.30.1": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "sqlite-jdbc-3.30.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.jar" - ], - "hash": "sha256-KAA0qJkwABBMWza8XhE5sOgt8d6c/ZUfUpva3q9vRW0=" - }, - "sqlite-jdbc-3.30.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.pom" - ], - "hash": "sha256-eGpZKh7AtwPJJVOlE37gAxGb5UmlGTM05t44WrKGb3I=" - } + "sqlite-jdbc-3.30.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.jar" + ], + "hash": "sha256-KAA0qJkwABBMWza8XhE5sOgt8d6c/ZUfUpva3q9vRW0=" + }, + "sqlite-jdbc-3.30.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.pom" + ], + "hash": "sha256-eGpZKh7AtwPJJVOlE37gAxGb5UmlGTM05t44WrKGb3I=" } } } diff --git a/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json b/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json index f10a4a8..9b675a2 100644 --- a/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json +++ b/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json @@ -1,819 +1,673 @@ { "com.gradle.publish:plugin-publish-plugin": { "1.2.1": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "plugin-publish-plugin-1.2.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" - ], - "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" - }, - "plugin-publish-plugin-1.2.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" - ], - "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" - } + "plugin-publish-plugin-1.2.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" + ], + "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" + }, + "plugin-publish-plugin-1.2.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" + ], + "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" + }, + "plugin-publish-plugin-1.2.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom" + ], + "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" } } }, "org.apache.maven:maven-model": { "3.6.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "maven-model-3.6.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" - ], - "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" - }, - "maven-model-3.6.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" - ], - "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" - } + "maven-model-3.6.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" + ], + "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" + }, + "maven-model-3.6.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" + ], + "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" } } }, "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin": { - "4.1.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.1.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.1.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.1.0.pom" - ], - "hash": "sha256-PKFoMBmO4Pc//RRgknW3A5zR/seULCInsEX6JpbjV2c=" - } + "4.2.1": { + "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.2.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.2.1/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.2.1.pom" + ], + "hash": "sha256-MR/57KF7D2ycyBBOu4jHPTikmFoEiLAWcLwr4J5aIyA=" } } }, "org.gradle.kotlin:gradle-kotlin-dsl-plugins": { - "4.1.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "gradle-kotlin-dsl-plugins-4.1.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.1.0/gradle-kotlin-dsl-plugins-4.1.0.jar" - ], - "hash": "sha256-jpBY+e9xNsVaJKXPKgoZKNb9oYJ2JZ0KktaxAr8m1Cc=" - }, - "gradle-kotlin-dsl-plugins-4.1.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.1.0/gradle-kotlin-dsl-plugins-4.1.0.module" - ], - "hash": "sha256-0KuS4r6L+a8iIhAL4VOLP2R7SvA0+ZA1RJGKO4dxrq8=" - } + "4.2.1": { + "gradle-kotlin-dsl-plugins-4.2.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.2.1/gradle-kotlin-dsl-plugins-4.2.1.jar" + ], + "hash": "sha256-UU8yyenA0IAji9/8ASH0PRYEnFeFqadeuGYMTrplj/o=" + }, + "gradle-kotlin-dsl-plugins-4.2.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.2.1/gradle-kotlin-dsl-plugins-4.2.1.module" + ], + "hash": "sha256-0w8XMxUzcV3LgIG4YvZjGUf4YPHLjgWjJcexiIz/KgA=" + }, + "gradle-kotlin-dsl-plugins-4.2.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.2.1/gradle-kotlin-dsl-plugins-4.2.1.pom" + ], + "hash": "sha256-lMOWsjFHh+ZXZg516zxtQKFdolRygvFMJLsiXKuzJaI=" } } }, "org.jetbrains.intellij.deps:trove4j": { "1.0.20200330": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } } }, "org.jetbrains.kotlin:kotlin-android-extensions": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-android-extensions-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.0/kotlin-android-extensions-1.9.0.jar" - ], - "hash": "sha256-IGdbuyp7aYKnFEUYpRi5qJZfkK6JuMmHiJgBIkSh6jM=" - }, - "kotlin-android-extensions-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.0/kotlin-android-extensions-1.9.0.pom" - ], - "hash": "sha256-WOHIg3JukUaVIDV95u0Xw/mSnI4IsRdKJ6OtbsDrzVI=" - } + "1.9.20": { + "kotlin-android-extensions-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.20/kotlin-android-extensions-1.9.20.jar" + ], + "hash": "sha256-t3EjlGnwrwfhgPdGz95qeVbCtiYeGuIOWx1iCg3Sm/8=" + }, + "kotlin-android-extensions-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.20/kotlin-android-extensions-1.9.20.pom" + ], + "hash": "sha256-DXrbht5Z1d44B+3tGwlbyeFLAK3x3CUKX2LJw/VBg+Y=" } } }, "org.jetbrains.kotlin:kotlin-assignment": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-assignment-1.9.0-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.0/kotlin-assignment-1.9.0-gradle81.jar" - ], - "hash": "sha256-mBdB+GlpwM4YQ1pcEJePJ3VGMxbOgqp/gmfsf2qfFNk=" - }, - "kotlin-assignment-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.0/kotlin-assignment-1.9.0.module" - ], - "hash": "sha256-kqBzm0y4NgSm3jddsKP+gTUDhZy8+aLtqZ++CXs8e9Y=" - } + "1.9.20": { + "kotlin-assignment-1.9.20-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.20/kotlin-assignment-1.9.20-gradle81.jar" + ], + "hash": "sha256-ztlN7cdMOUOlaRsY6tTRZzLwvbQQeLAoJND8foLj/uI=" + }, + "kotlin-assignment-1.9.20.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.20/kotlin-assignment-1.9.20.module" + ], + "hash": "sha256-KfAzaty3JPax04XG7SfYv1FikHMXu8gvuaTjGJ8D5Gc=" + }, + "kotlin-assignment-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.20/kotlin-assignment-1.9.20.pom" + ], + "hash": "sha256-MjMxOtdq5rpN2Npal4hCduW0aik7RJWLw1LKAdRm9+0=" } } }, "org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-assignment-compiler-plugin-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.0/kotlin-assignment-compiler-plugin-embeddable-1.9.0.jar" - ], - "hash": "sha256-MBY6DUXnN9gHW0kI0PCv8DXvqGa+iFIvQ37Jbg43KZQ=" - }, - "kotlin-assignment-compiler-plugin-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.0/kotlin-assignment-compiler-plugin-embeddable-1.9.0.pom" - ], - "hash": "sha256-HDfsoLIO1JYF6lVsonWq8eyZUaKZge4TNxZYP2pD4J8=" - } + "1.9.20": { + "kotlin-assignment-compiler-plugin-embeddable-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.20/kotlin-assignment-compiler-plugin-embeddable-1.9.20.jar" + ], + "hash": "sha256-xiG4V/X+ExIZ2FduGR0G8tt6bfgPoUnQRsMuuiaQat0=" + }, + "kotlin-assignment-compiler-plugin-embeddable-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.20/kotlin-assignment-compiler-plugin-embeddable-1.9.20.pom" + ], + "hash": "sha256-Df0Ud50u4/gHw+/3IBxl0jNX87jMEYK0sFbkdJX9UoE=" } } }, "org.jetbrains.kotlin:kotlin-build-tools-api": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-build-tools-api-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.0/kotlin-build-tools-api-1.9.0.jar" - ], - "hash": "sha256-0ZyavegKnPQtJezJLLEUjtOhXu2yZy2qHkZubaWQ7sY=" - }, - "kotlin-build-tools-api-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.0/kotlin-build-tools-api-1.9.0.pom" - ], - "hash": "sha256-iIFxmCZbm8BrPzSTWyv2qpj0gA7OvBzOQREN70m3pCE=" - } + "1.9.20": { + "kotlin-build-tools-api-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.20/kotlin-build-tools-api-1.9.20.jar" + ], + "hash": "sha256-xyKUjFaDUs3BncioskXRSq5QfU3P/eansmxTXEcsGxc=" + }, + "kotlin-build-tools-api-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.20/kotlin-build-tools-api-1.9.20.pom" + ], + "hash": "sha256-P7w3D4WHo9joDGny3M1lxVFzu0S505QuFVNrzjzNwaY=" } } }, "org.jetbrains.kotlin:kotlin-compiler-embeddable": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-compiler-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.0/kotlin-compiler-embeddable-1.9.0.jar" - ], - "hash": "sha256-lTtQaR103SGf8/ZkRnDD5UnYfN/AphVPFgKmoKXf43M=" - }, - "kotlin-compiler-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.0/kotlin-compiler-embeddable-1.9.0.pom" - ], - "hash": "sha256-7jyHHO39bM9A0ESUQJbihlXeL5NF2ET+7GPMqcXkt8w=" - } + "1.9.20": { + "kotlin-compiler-embeddable-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.20/kotlin-compiler-embeddable-1.9.20.jar" + ], + "hash": "sha256-olAk/l2oRA3gGvBFxPy5VKIvB4c47AJhYIXwz8V7JwI=" + }, + "kotlin-compiler-embeddable-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.20/kotlin-compiler-embeddable-1.9.20.pom" + ], + "hash": "sha256-x9jfyJ5iFEJQRQa5SS+3YxF0BhIM6RByvAZ/+W0mTCM=" } } }, "org.jetbrains.kotlin:kotlin-compiler-runner": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-compiler-runner-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.0/kotlin-compiler-runner-1.9.0.jar" - ], - "hash": "sha256-BbWlXUlJFhpxT838ZKXwTYejZMm73IZBs7t6VVfkPqo=" - }, - "kotlin-compiler-runner-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.0/kotlin-compiler-runner-1.9.0.pom" - ], - "hash": "sha256-GIN9BlVntn5bzy4wTYWm4rbSRDz4En9AdnNKTo3yo2E=" - } + "1.9.20": { + "kotlin-compiler-runner-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.20/kotlin-compiler-runner-1.9.20.jar" + ], + "hash": "sha256-SXacBG+NOSZUpKtSr3lUVb1B6I2Dkq6rkCjw7dXo1Qs=" + }, + "kotlin-compiler-runner-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.20/kotlin-compiler-runner-1.9.20.pom" + ], + "hash": "sha256-XKJ9myEE4yMOf4Grqm62Eb85htdKAOVl4l7rGGENDYo=" } } }, "org.jetbrains.kotlin:kotlin-daemon-client": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-daemon-client-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.0/kotlin-daemon-client-1.9.0.jar" - ], - "hash": "sha256-WoyXfn3H8N4tka5Yva3CBBXe9M9dST5aGD+WxZeZAyA=" - }, - "kotlin-daemon-client-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.0/kotlin-daemon-client-1.9.0.pom" - ], - "hash": "sha256-sv50dBgjzM6JMXCWkg3LnOXBa460Z5jTn9jmdwPFidc=" - } + "1.9.20": { + "kotlin-daemon-client-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.20/kotlin-daemon-client-1.9.20.jar" + ], + "hash": "sha256-WCIwy8/WXTa5S8nRJ/kAJLjPF9+kpn72qSnxTGwnZhw=" + }, + "kotlin-daemon-client-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.20/kotlin-daemon-client-1.9.20.pom" + ], + "hash": "sha256-0qQYFjppSNcrBMvjUgOi4wXhw41WgJAXCshy+IH6k4E=" } } }, "org.jetbrains.kotlin:kotlin-daemon-embeddable": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-daemon-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.0/kotlin-daemon-embeddable-1.9.0.jar" - ], - "hash": "sha256-lDGCoTfs1A5ikFjaUtszbO6bZm+AmWtlWELyCmNz35o=" - }, - "kotlin-daemon-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.0/kotlin-daemon-embeddable-1.9.0.pom" - ], - "hash": "sha256-OOMsu5GFenIGy/3cON1O4L5mX0CgEV/21NF348f4kq8=" - } + "1.9.20": { + "kotlin-daemon-embeddable-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.20/kotlin-daemon-embeddable-1.9.20.jar" + ], + "hash": "sha256-qTnLXW7ip1jJKFvZ8yhoJL6r4S2aS19J94TQvKMp3qU=" + }, + "kotlin-daemon-embeddable-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.20/kotlin-daemon-embeddable-1.9.20.pom" + ], + "hash": "sha256-zYkt52nMILl5jiJTjZljB0sF8cRI8uAat3VH7rZZfUE=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-1.9.0-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.0/kotlin-gradle-plugin-1.9.0-gradle81.jar" - ], - "hash": "sha256-2UOg4ntHRuAfg0BaSfUmoi9HGx2x1GOdb84m1xHv+/4=" - }, - "kotlin-gradle-plugin-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.0/kotlin-gradle-plugin-1.9.0.module" - ], - "hash": "sha256-/mOWRe2PvcW8Et588lRopNsx52O6ea26ogahTeYP0xQ=" - } + "1.9.20": { + "kotlin-gradle-plugin-1.9.20-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.20/kotlin-gradle-plugin-1.9.20-gradle81.jar" + ], + "hash": "sha256-BJEPymUvjb6ASknI5ylxv2QdA82LRaBlukzhDGWE6qw=" + }, + "kotlin-gradle-plugin-1.9.20.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.20/kotlin-gradle-plugin-1.9.20.module" + ], + "hash": "sha256-VVJcPgNpJSnI8ZZgd4mtyO6xogfqEx+NnBwytJf35jY=" + }, + "kotlin-gradle-plugin-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.20/kotlin-gradle-plugin-1.9.20.pom" + ], + "hash": "sha256-HOzt6DD+6ar1QulF/AQWZ1FYqlVgzGKYlcsvd3FBiTY=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-annotations-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.0/kotlin-gradle-plugin-annotations-1.9.0.jar" - ], - "hash": "sha256-KiZbNbx8VYIUJukbajzU9LkWOKC8fIffz+TgX36IRzg=" - }, - "kotlin-gradle-plugin-annotations-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.0/kotlin-gradle-plugin-annotations-1.9.0.pom" - ], - "hash": "sha256-qjXuWp0dpZMV92nH/tsshwBWD1PFaAupKwsniBpKQnE=" - } + "1.9.20": { + "kotlin-gradle-plugin-annotations-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.20/kotlin-gradle-plugin-annotations-1.9.20.jar" + ], + "hash": "sha256-Klw2IuJGhYTRq32rOs2P+2BAO2N90GA69nXibToFQyk=" + }, + "kotlin-gradle-plugin-annotations-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.20/kotlin-gradle-plugin-annotations-1.9.20.pom" + ], + "hash": "sha256-9L+gqiwjkuTyPia38aQZhlvrdqAW2BgIcrsIbMADWU4=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-api-1.9.0-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0-gradle81.jar" - ], - "hash": "sha256-AhbssMeA+V47EBoOlc/DZ/LvVrBvLeqqqZJaDxF8INk=" - }, - "kotlin-gradle-plugin-api-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0.jar" - ], - "hash": "sha256-AhbssMeA+V47EBoOlc/DZ/LvVrBvLeqqqZJaDxF8INk=" - }, - "kotlin-gradle-plugin-api-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.0/kotlin-gradle-plugin-api-1.9.0.module" - ], - "hash": "sha256-Gu1WWijZE0KsWkuhRsKFal67xjkoXFKVUhefr8dhTds=" - } + "1.9.20": { + "kotlin-gradle-plugin-api-1.9.20-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.20/kotlin-gradle-plugin-api-1.9.20-gradle81.jar" + ], + "hash": "sha256-KHwmdl+GkuXrVQWFQSaBnPuwx9XUm75fRXcUJ+oZkT0=" + }, + "kotlin-gradle-plugin-api-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.20/kotlin-gradle-plugin-api-1.9.20.jar" + ], + "hash": "sha256-KHwmdl+GkuXrVQWFQSaBnPuwx9XUm75fRXcUJ+oZkT0=" + }, + "kotlin-gradle-plugin-api-1.9.20.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.20/kotlin-gradle-plugin-api-1.9.20.module" + ], + "hash": "sha256-SD51d/Tp4tPKF/aqZPRlXUYDwrHQ5t/VlRVS70DV10U=" + }, + "kotlin-gradle-plugin-api-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.20/kotlin-gradle-plugin-api-1.9.20.pom" + ], + "hash": "sha256-oZKj3Ob7gpwnvQgdggXYmJlp1R/D7J5tctzERt6H9ys=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-idea-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.0/kotlin-gradle-plugin-idea-1.9.0.jar" - ], - "hash": "sha256-C7JszuNyr7m1hPKFfofMLz9TK2Kk9/pFdVjzr8Or6ZU=" - }, - "kotlin-gradle-plugin-idea-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.0/kotlin-gradle-plugin-idea-1.9.0.module" - ], - "hash": "sha256-pVg82bC0AS6VWtlhn7kBe1saosJRsFltr1M0kExcpls=" - } + "1.9.20": { + "kotlin-gradle-plugin-idea-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.20/kotlin-gradle-plugin-idea-1.9.20.jar" + ], + "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" + }, + "kotlin-gradle-plugin-idea-1.9.20.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.20/kotlin-gradle-plugin-idea-1.9.20.module" + ], + "hash": "sha256-Hms5OB86T5sUl0VOgl+JQuDJxuw9wbii/WNuI3GV+Ks=" + }, + "kotlin-gradle-plugin-idea-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.20/kotlin-gradle-plugin-idea-1.9.20.pom" + ], + "hash": "sha256-m6hUoroB+w9/7fl8b5P2W42otQ6jv1OQofuoDmQqMic=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-idea-proto-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.0/kotlin-gradle-plugin-idea-proto-1.9.0.jar" - ], - "hash": "sha256-54mY6iK81fVtE5gszBJMnHM3vRUHVMvcivKhSNdslwA=" - }, - "kotlin-gradle-plugin-idea-proto-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.0/kotlin-gradle-plugin-idea-proto-1.9.0.pom" - ], - "hash": "sha256-QeElaFOKOjQHBMlww6T2D/WAH/3OQlymjKLAtHIhclA=" - } + "1.9.20": { + "kotlin-gradle-plugin-idea-proto-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.20/kotlin-gradle-plugin-idea-proto-1.9.20.jar" + ], + "hash": "sha256-xnsNiEn+vdmpZO2gvRZ8FnxNBWyo3TiSQdkuHXY8lJA=" + }, + "kotlin-gradle-plugin-idea-proto-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.20/kotlin-gradle-plugin-idea-proto-1.9.20.pom" + ], + "hash": "sha256-1AENSzu56SQPPeDnjo31pYEjbzPWLoBwyP3yUxdwNZQ=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-model-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.0/kotlin-gradle-plugin-model-1.9.0.jar" - ], - "hash": "sha256-/wWqtoizSnmSp+NfncTewlhD8Tqelwrv5W3T4SKghBU=" - }, - "kotlin-gradle-plugin-model-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.0/kotlin-gradle-plugin-model-1.9.0.module" - ], - "hash": "sha256-ZvS5FEcM80bgXQP4otWenHRvpu3PZMcS8XagiBqsPkk=" - } + "1.9.20": { + "kotlin-gradle-plugin-model-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.20/kotlin-gradle-plugin-model-1.9.20.jar" + ], + "hash": "sha256-f5MPDkVLdYGPX4l2ulFfOuyIdnGl/oU4Csl/BdqZhqc=" + }, + "kotlin-gradle-plugin-model-1.9.20.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.20/kotlin-gradle-plugin-model-1.9.20.module" + ], + "hash": "sha256-OZaqq5tUbM9FWxyvDDFuoy6c5kb+tU6XOvTWn7YF8kg=" + }, + "kotlin-gradle-plugin-model-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.20/kotlin-gradle-plugin-model-1.9.20.pom" + ], + "hash": "sha256-jXpoeFaRP5ydn96r2/hg6cEZ65WtmdXbXYisIya1FJs=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugins-bom": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugins-bom-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.0/kotlin-gradle-plugins-bom-1.9.0.module" - ], - "hash": "sha256-/SufabguQ8tQnwhBsYvzxd99q18eC+oDT8CypZnW4pY=" - }, - "kotlin-gradle-plugins-bom-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.0/kotlin-gradle-plugins-bom-1.9.0.pom" - ], - "hash": "sha256-XTmtkDDf0zsLrCn3UAAJzmKHYulP5h8BF3rhNL24D6E=" - } + "1.9.20": { + "kotlin-gradle-plugins-bom-1.9.20.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.20/kotlin-gradle-plugins-bom-1.9.20.module" + ], + "hash": "sha256-dyD4Rc/jGaoablsjOH5pIKNema5CGMoPb24H/RcTCTw=" + }, + "kotlin-gradle-plugins-bom-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.20/kotlin-gradle-plugins-bom-1.9.20.pom" + ], + "hash": "sha256-bzukKj6YFwAoTJVhRu9NcWuJrb5dgDq5JVPewhY0QzA=" } } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-klib-commonizer-api-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.0/kotlin-klib-commonizer-api-1.9.0.jar" - ], - "hash": "sha256-hd4ulysLtvRSjB90j0PEhmMUX8hTnsqWwT0bwNo/k10=" - }, - "kotlin-klib-commonizer-api-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.0/kotlin-klib-commonizer-api-1.9.0.pom" - ], - "hash": "sha256-hE+SCI/0j4v64lYh4yStw1d5CM9lD0/bJWlhC4+vaz4=" - } + "1.9.20": { + "kotlin-klib-commonizer-api-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.20/kotlin-klib-commonizer-api-1.9.20.jar" + ], + "hash": "sha256-ibYmCCiVMELjEKUlkqpbWV9fibZBzGo9OoFV75LYj/4=" + }, + "kotlin-klib-commonizer-api-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.20/kotlin-klib-commonizer-api-1.9.20.pom" + ], + "hash": "sha256-l4D9xWeaTbGhcPpSEPVhzrKtRrb4Kchqwx/HjPkpbGU=" } } }, "org.jetbrains.kotlin:kotlin-native-utils": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-native-utils-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.0/kotlin-native-utils-1.9.0.jar" - ], - "hash": "sha256-D0gF93S/tcG20UXf5g09ILGu4ACJbOjs8+7/hM5EAjs=" - }, - "kotlin-native-utils-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.0/kotlin-native-utils-1.9.0.pom" - ], - "hash": "sha256-Kazy3vkmve3Z6yBOx3Tnhq3Ek0EGqSlJAK81FVbn52o=" - } + "1.9.20": { + "kotlin-native-utils-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.20/kotlin-native-utils-1.9.20.jar" + ], + "hash": "sha256-sPkrySU6kH8M4oUyhkP+ijbCftSUtcWRnuCcKSbY6NI=" + }, + "kotlin-native-utils-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.20/kotlin-native-utils-1.9.20.pom" + ], + "hash": "sha256-8+9ZeAaTG0DO7YHZG2nnzHp4Z+zO2S20S7/mEkd2xbw=" } } }, "org.jetbrains.kotlin:kotlin-project-model": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-project-model-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.0/kotlin-project-model-1.9.0.jar" - ], - "hash": "sha256-rgk26bTGkh8D73eTYcrLu3XtKyIQR5+S9l8cushuNAw=" - }, - "kotlin-project-model-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.0/kotlin-project-model-1.9.0.pom" - ], - "hash": "sha256-6sHGTGAMYAJ7jmjfrTogPEFbn6IkWB1oz6Xnc+hWa3g=" - } + "1.9.20": { + "kotlin-project-model-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.20/kotlin-project-model-1.9.20.jar" + ], + "hash": "sha256-JhqbQOJA4lmsNZwWk4AC7MbAhDSlxuXlv/7iQqPFAhg=" + }, + "kotlin-project-model-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.20/kotlin-project-model-1.9.20.pom" + ], + "hash": "sha256-4FhEBdW+70QKZrKQ1uTA3UPqll3DW3cMHqMmSofSczw=" } } }, "org.jetbrains.kotlin:kotlin-reflect": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-reflect-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.0/kotlin-reflect-1.9.0.jar" - ], - "hash": "sha256-IHAVm+UU6o6jziyLHueZPm/2CpNWWimfIAYpqn339YE=" - }, - "kotlin-reflect-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.0/kotlin-reflect-1.9.0.pom" - ], - "hash": "sha256-hXFWVnbRiXIEcTBs7ppV2RbAgDgvNabaaBk6x7EvTNs=" - } + "1.9.20": { + "kotlin-reflect-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.20/kotlin-reflect-1.9.20.jar" + ], + "hash": "sha256-SbZvmonVD9KVTC6K6sgOT0iLCgkyKiXvrWJhV2cT3A8=" + }, + "kotlin-reflect-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.20/kotlin-reflect-1.9.20.pom" + ], + "hash": "sha256-lCtehgLTF+wTZS8cAiIFK7kIF/KM9v6dRxEvCbPo5n0=" } }, "1.6.10": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-reflect-1.6.10.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" - ], - "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" - }, - "kotlin-reflect-1.6.10.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" - ], - "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" - } + "kotlin-reflect-1.6.10.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" + ], + "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" + }, + "kotlin-reflect-1.6.10.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" + ], + "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" } } }, "org.jetbrains.kotlin:kotlin-sam-with-receiver": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-sam-with-receiver-1.9.0-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.0/kotlin-sam-with-receiver-1.9.0-gradle81.jar" - ], - "hash": "sha256-mK1U0XMRxg6FyGlDPV3TdpMTIDABJwCb5+nrsyH8xCs=" - }, - "kotlin-sam-with-receiver-1.9.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.0/kotlin-sam-with-receiver-1.9.0.module" - ], - "hash": "sha256-GTPz8nsCrr/6LnvBmWN8TKg90xgHqjgwDLHh+jGsoiU=" - } + "1.9.20": { + "kotlin-sam-with-receiver-1.9.20-gradle81.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.20/kotlin-sam-with-receiver-1.9.20-gradle81.jar" + ], + "hash": "sha256-MDCZRpW7ZaAXvjPiQzLpKtDTwdkLyifA9KL3lStV74M=" + }, + "kotlin-sam-with-receiver-1.9.20.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.20/kotlin-sam-with-receiver-1.9.20.module" + ], + "hash": "sha256-goKuJEBF/oGCFBPZSL8mp+/ncYNCGxcOZVj+TC3ORMA=" + }, + "kotlin-sam-with-receiver-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.20/kotlin-sam-with-receiver-1.9.20.pom" + ], + "hash": "sha256-IV1w6BR2xN00PCyRSi9WEhODOXvM4Z8ITLsCqpK2kGM=" } } }, "org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.0/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.jar" - ], - "hash": "sha256-o7OlA4sNEybfGz/lvyCmaQnt1C3qa2P3BgCm8k/0VYw=" - }, - "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.0/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.0.pom" - ], - "hash": "sha256-WdgiTXgRi2RAwdRsCRzwLOWSnQaTU0hZnxP9wrmoU88=" - } + "1.9.20": { + "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.20/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.20.jar" + ], + "hash": "sha256-02IXChzBUxYPDLIDjIRBEDS1bAVamzFvMsC3txaMoPI=" + }, + "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.20/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.20.pom" + ], + "hash": "sha256-lo97qpSJb+esipLfy16Tfd22iSIJudwCJUNUugrXf2A=" } } }, "org.jetbrains.kotlin:kotlin-script-runtime": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-script-runtime-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.0/kotlin-script-runtime-1.9.0.jar" - ], - "hash": "sha256-2E0MykEFD6wqlS0RBEc8Mpr/BMULNxMuV1SiCYCa3Z8=" - }, - "kotlin-script-runtime-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.0/kotlin-script-runtime-1.9.0.pom" - ], - "hash": "sha256-FNwHhdGUFP7sEgI91z64DIPQeIC3PlS48IqHj0I9seY=" - } + "1.9.20": { + "kotlin-script-runtime-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.20/kotlin-script-runtime-1.9.20.jar" + ], + "hash": "sha256-ompiVqdvdmq4us20CbP4yUDZmXEqjoiGQlK2eNZrq54=" + }, + "kotlin-script-runtime-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.20/kotlin-script-runtime-1.9.20.pom" + ], + "hash": "sha256-vNIn0pN0LFEaJLssVoItlfljivUTW5c+fNo+inZoZXk=" } } }, "org.jetbrains.kotlin:kotlin-scripting-common": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-common-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.jar" - ], - "hash": "sha256-KFxBwO7tWaDn3LGIuJ+BVBR/vLvVNUcc9piWzNonP4Q=" - }, - "kotlin-scripting-common-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.pom" - ], - "hash": "sha256-C/MG5PRe6xrDAk4pnUybcL4J7OmsAOcLL/mLPtQA8wc=" - } + "1.9.20": { + "kotlin-scripting-common-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.20/kotlin-scripting-common-1.9.20.jar" + ], + "hash": "sha256-WqCEd8tz95J0E67Gg6SqOz+Z6HvgYwJVzml0UqGkLWU=" + }, + "kotlin-scripting-common-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.20/kotlin-scripting-common-1.9.20.pom" + ], + "hash": "sha256-GH6fO3S9VqCDZJgYx7mkD4vCP2IBKwinvJnD+ohr/wM=" } } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-compiler-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.0/kotlin-scripting-compiler-embeddable-1.9.0.jar" - ], - "hash": "sha256-Rp3RIGiVipevzhGIoBRFVM3tZ95aGqC/XKUwOfKdizY=" - }, - "kotlin-scripting-compiler-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.0/kotlin-scripting-compiler-embeddable-1.9.0.pom" - ], - "hash": "sha256-UJ5ikUwwvT43GcDgLk5Df8vxkRa4ouZYSPbUbFTsXJ4=" - } + "1.9.20": { + "kotlin-scripting-compiler-embeddable-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.20/kotlin-scripting-compiler-embeddable-1.9.20.jar" + ], + "hash": "sha256-IYHdDE1SxvaWrZ8Xk0IzeQ9NaCNLFBjWN2/aflw3TE4=" + }, + "kotlin-scripting-compiler-embeddable-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.20/kotlin-scripting-compiler-embeddable-1.9.20.pom" + ], + "hash": "sha256-JmEo2/Q1466/7mU1fd4QLJ7ZKd/rCQHla+eMoUjFc/c=" } } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-compiler-impl-embeddable-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.0/kotlin-scripting-compiler-impl-embeddable-1.9.0.jar" - ], - "hash": "sha256-ZcUlbiyPvdpCbAMobmomgmfXEu+V7C05yVKSlXN4sE0=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.0/kotlin-scripting-compiler-impl-embeddable-1.9.0.pom" - ], - "hash": "sha256-zaYp8KgbqcAKM95QJ/D4/7+fC45E5BlwNHdmu4WLTmM=" - } + "1.9.20": { + "kotlin-scripting-compiler-impl-embeddable-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.20/kotlin-scripting-compiler-impl-embeddable-1.9.20.jar" + ], + "hash": "sha256-3Jq29pxZKtHx0uK5lLl1CdDuCUgL6mvHce7u8wceuBc=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.20/kotlin-scripting-compiler-impl-embeddable-1.9.20.pom" + ], + "hash": "sha256-bbowA+jK3LFJkt/xNOhmyrWQXquA4nAj3kHCY4WDgZg=" } } }, "org.jetbrains.kotlin:kotlin-scripting-jvm": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-jvm-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.0/kotlin-scripting-jvm-1.9.0.jar" - ], - "hash": "sha256-Zp3SvGBBjgdRU/2K2NllvlaetlwvMIOIyxEDud8TUVk=" - }, - "kotlin-scripting-jvm-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.0/kotlin-scripting-jvm-1.9.0.pom" - ], - "hash": "sha256-Ymj4BVjTX9qSRruneTKWkrlNWJWWVQfL6KhIkSxQ5yo=" - } + "1.9.20": { + "kotlin-scripting-jvm-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.20/kotlin-scripting-jvm-1.9.20.jar" + ], + "hash": "sha256-gJ9zvdTdd2auHvLO2WiJbOnAPWpf5t5vZ5l3iFH3W9M=" + }, + "kotlin-scripting-jvm-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.20/kotlin-scripting-jvm-1.9.20.pom" + ], + "hash": "sha256-v4gcbi/Go36p0J/+mMoHLfzajcgoj9ibJMrcYLFNt14=" } } }, "org.jetbrains.kotlin:kotlin-stdlib": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.jar" - ], - "hash": "sha256-Na7/vi21qkRgcs7lD87ki3+p4vxRyjfAzH19C8OdlS4=" - }, - "kotlin-stdlib-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.pom" - ], - "hash": "sha256-N3UiY/Ysw+MlCFbiiO5Kc9QQLXJqd2JwNPlIBsjBCso=" - } - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-common-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.jar" - ], - "hash": "sha256-KDJ0IEvXwCB4nsRvj45yr0JE1/VQszkqV+XKAGrXqiw=" - }, - "kotlin-stdlib-common-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.pom" - ], - "hash": "sha256-NmDTanD+s6vknxG5BjPkHTYnNXbwcbDhCdqbOg3wgqU=" - } - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-jdk7-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.jar" - ], - "hash": "sha256-t5eaeqyUBV8Nnx/TtHzl/+HLYDKoQrqfvnGG8IUokXg=" - }, - "kotlin-stdlib-jdk7-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.pom" - ], - "hash": "sha256-wRB08MiYqYuGPGFEcdQ409+Soewzgqbjf5NdfXGVS1o=" - } - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-jdk8-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.jar" - ], - "hash": "sha256-pZ+iT98f+1lLrs2/D9EAEPl3zqECNtSH/jRkl3pzd/o=" - }, - "kotlin-stdlib-jdk8-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.pom" - ], - "hash": "sha256-ZNWY3YjiUEZnMeIDBKtvBsu7urfuMitHA7a1n4gcT5I=" - } + "1.9.20": { + "kotlin-stdlib-1.9.20-all.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.20/kotlin-stdlib-1.9.20-all.jar" + ], + "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" + }, + "kotlin-stdlib-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.20/kotlin-stdlib-1.9.20.jar" + ], + "hash": "sha256-KKNbzf9G2GT4DzRqYX5IYoSyCNFzeMQZAN+x3pWpDmw=" + }, + "kotlin-stdlib-1.9.20.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.20/kotlin-stdlib-1.9.20.module" + ], + "hash": "sha256-3Mql0xVHD6s5IFAohru4Xy2myGECxl2cBEEFRO7bIBk=" + }, + "kotlin-stdlib-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.20/kotlin-stdlib-1.9.20.pom" + ], + "hash": "sha256-43IWpzLI6Bqf0FtN2JLDDKwMrXtOP9ovlmP0jogHQcA=" } } }, "org.jetbrains.kotlin:kotlin-tooling-core": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-tooling-core-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.jar" - ], - "hash": "sha256-5TmiJCi5ysZ/dbLWHytuKnGDUNe7MYI8fcqJB/kJma4=" - }, - "kotlin-tooling-core-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.pom" - ], - "hash": "sha256-KSbD/CFJWXAcjxYNjdyGn3s/pFKv3o3RdcjnwrvHBSI=" - } + "1.9.20": { + "kotlin-tooling-core-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.20/kotlin-tooling-core-1.9.20.jar" + ], + "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" + }, + "kotlin-tooling-core-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.20/kotlin-tooling-core-1.9.20.pom" + ], + "hash": "sha256-c9r0kUA5KLFcSTCVeuABrPBPazpLwo/kqld37wlwntY=" } } }, "org.jetbrains.kotlin:kotlin-util-io": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-util-io-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.0/kotlin-util-io-1.9.0.jar" - ], - "hash": "sha256-gdNtxt4/C+rwTDl6BrVoITujc6vO9Tlyt7gvYX1a9ws=" - }, - "kotlin-util-io-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.0/kotlin-util-io-1.9.0.pom" - ], - "hash": "sha256-BUBa+xn3tgbFKr6haJqi1ew9qQL+4teoV2lDOeSgQJQ=" - } + "1.9.20": { + "kotlin-util-io-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.20/kotlin-util-io-1.9.20.jar" + ], + "hash": "sha256-x0/aqunXn98DMn7oc4JR4CSySyTYtTd6GkKaw7f3LMo=" + }, + "kotlin-util-io-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.20/kotlin-util-io-1.9.20.pom" + ], + "hash": "sha256-rbH0NbMLIlY6oK5X0/Y5YkWYhIennq+uOOZnb9ggKok=" } } }, "org.jetbrains.kotlin:kotlin-util-klib": { - "1.9.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-util-klib-1.9.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.0/kotlin-util-klib-1.9.0.jar" - ], - "hash": "sha256-wtxr820zabdzdVq4k3uX5Tmk1F04Fb7xm+36FUsS0xM=" - }, - "kotlin-util-klib-1.9.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.0/kotlin-util-klib-1.9.0.pom" - ], - "hash": "sha256-acZHGaDgRjb2whMZ/lGKC1gieEu66P7YXmUfv6b4pFs=" - } + "1.9.20": { + "kotlin-util-klib-1.9.20.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.20/kotlin-util-klib-1.9.20.jar" + ], + "hash": "sha256-xFPv4noGMtFhUb/fAIShK4zAGf0ss0LiuIkqzM5OkbI=" + }, + "kotlin-util-klib-1.9.20.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.20/kotlin-util-klib-1.9.20.pom" + ], + "hash": "sha256-Vuv6PpLwCiXzwL/tyaYxCV4oYsj/m6WY+T5pGkCe7c0=" } } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { "1.5.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - } + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } } }, "org.jetbrains:annotations": { "13.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "annotations-13.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "annotations-13.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } } } diff --git a/fixtures/golden/dependency/classifier.groovy.json b/fixtures/golden/dependency/classifier.groovy.json index ac1d5ef..4a89135 100644 --- a/fixtures/golden/dependency/classifier.groovy.json +++ b/fixtures/golden/dependency/classifier.groovy.json @@ -1,21 +1,17 @@ { "com.badlogicgames.gdx:gdx-platform": { "1.9.9": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "gdx-platform-1.9.9-natives-desktop.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" - ], - "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" - }, - "gdx-platform-1.9.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" - ], - "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" - } + "gdx-platform-1.9.9-natives-desktop.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" + ], + "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" + }, + "gdx-platform-1.9.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" + ], + "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" } } } diff --git a/fixtures/golden/dependency/classifier.kotlin.json b/fixtures/golden/dependency/classifier.kotlin.json index ac1d5ef..4a89135 100644 --- a/fixtures/golden/dependency/classifier.kotlin.json +++ b/fixtures/golden/dependency/classifier.kotlin.json @@ -1,21 +1,17 @@ { "com.badlogicgames.gdx:gdx-platform": { "1.9.9": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "gdx-platform-1.9.9-natives-desktop.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" - ], - "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" - }, - "gdx-platform-1.9.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" - ], - "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" - } + "gdx-platform-1.9.9-natives-desktop.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" + ], + "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" + }, + "gdx-platform-1.9.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" + ], + "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" } } } diff --git a/fixtures/golden/dependency/maven-bom.kotlin.json b/fixtures/golden/dependency/maven-bom.kotlin.json index d73bd87..c43c01e 100644 --- a/fixtures/golden/dependency/maven-bom.kotlin.json +++ b/fixtures/golden/dependency/maven-bom.kotlin.json @@ -1,55 +1,43 @@ { "io.micrometer:micrometer-bom": { "1.5.1": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "micrometer-bom-1.5.1.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom" - ], - "hash": "sha256-K/qF6ds8ck5sWvelJBYk+w+K04oQpT/4BtY57WVLRUI=" - } + "micrometer-bom-1.5.1.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom" + ], + "hash": "sha256-K/qF6ds8ck5sWvelJBYk+w+K04oQpT/4BtY57WVLRUI=" } } }, "io.micrometer:micrometer-core": { "1.5.1": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "micrometer-core-1.5.1.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar" - ], - "hash": "sha256-DtgVYBDVGDBWMwSfeKC6O+fwqd+N2q4eTizJgQ1wfI8=" - }, - "micrometer-core-1.5.1.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom" - ], - "hash": "sha256-Cb4KaUHaOvdOz7VpDax6kJKuT2KWY5Ci73foX2xl6xw=" - } + "micrometer-core-1.5.1.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar" + ], + "hash": "sha256-DtgVYBDVGDBWMwSfeKC6O+fwqd+N2q4eTizJgQ1wfI8=" + }, + "micrometer-core-1.5.1.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom" + ], + "hash": "sha256-Cb4KaUHaOvdOz7VpDax6kJKuT2KWY5Ci73foX2xl6xw=" } } }, "org.hdrhistogram:HdrHistogram": { "2.1.12": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "HdrHistogram-2.1.12.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar" - ], - "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" - }, - "HdrHistogram-2.1.12.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom" - ], - "hash": "sha256-f7PnkMFU0bXiMXC7jL9/cO8ICa8XIp8dywENd5llEIA=" - } + "HdrHistogram-2.1.12.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar" + ], + "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" + }, + "HdrHistogram-2.1.12.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom" + ], + "hash": "sha256-f7PnkMFU0bXiMXC7jL9/cO8ICa8XIp8dywENd5llEIA=" } } } diff --git a/fixtures/golden/dependency/snapshot-dynamic.groovy.json b/fixtures/golden/dependency/snapshot-dynamic.groovy.json index 6ce329a..5463f25 100644 --- a/fixtures/golden/dependency/snapshot-dynamic.groovy.json +++ b/fixtures/golden/dependency/snapshot-dynamic.groovy.json @@ -1,19 +1,15 @@ { "org.apache:test-SNAPSHOT1": { "2.0.2-SNAPSHOT": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { - "urls": [ - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { - "urls": [ - ], - "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" - } + "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { + "urls": [ + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { + "urls": [ + ], + "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" } } } diff --git a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json index 6ce329a..5463f25 100644 --- a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json +++ b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json @@ -1,19 +1,15 @@ { "org.apache:test-SNAPSHOT1": { "2.0.2-SNAPSHOT": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { - "urls": [ - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { - "urls": [ - ], - "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" - } + "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { + "urls": [ + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { + "urls": [ + ], + "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" } } } diff --git a/fixtures/golden/dependency/snapshot-redirect.groovy.json b/fixtures/golden/dependency/snapshot-redirect.groovy.json index a8a87e2..d3f7334 100644 --- a/fixtures/golden/dependency/snapshot-redirect.groovy.json +++ b/fixtures/golden/dependency/snapshot-redirect.groovy.json @@ -1,21 +1,17 @@ { "com.github.anuken:packr": { "-SNAPSHOT": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "packr--SNAPSHOT.jar": { - "urls": [ - "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.jar" - ], - "hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" - }, - "packr--SNAPSHOT.pom": { - "urls": [ - "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.pom" - ], - "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" - } + "packr--SNAPSHOT.jar": { + "urls": [ + "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.jar" + ], + "hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" + }, + "packr--SNAPSHOT.pom": { + "urls": [ + "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.pom" + ], + "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" } } } diff --git a/fixtures/golden/dependency/snapshot.groovy.json b/fixtures/golden/dependency/snapshot.groovy.json index 850f908..f111b17 100644 --- a/fixtures/golden/dependency/snapshot.groovy.json +++ b/fixtures/golden/dependency/snapshot.groovy.json @@ -1,21 +1,17 @@ { "org.apache:test-SNAPSHOT2": { "2.0.2-SNAPSHOT": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" - ], - "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" - } + "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" + ], + "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" } } } diff --git a/fixtures/golden/dependency/snapshot.kotlin.json b/fixtures/golden/dependency/snapshot.kotlin.json index 850f908..f111b17 100644 --- a/fixtures/golden/dependency/snapshot.kotlin.json +++ b/fixtures/golden/dependency/snapshot.kotlin.json @@ -1,21 +1,17 @@ { "org.apache:test-SNAPSHOT2": { "2.0.2-SNAPSHOT": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" - ], - "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" - } + "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" + ], + "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" } } } diff --git a/fixtures/golden/included-build.groovy.json b/fixtures/golden/included-build.groovy.json new file mode 100644 index 0000000..7556b4e --- /dev/null +++ b/fixtures/golden/included-build.groovy.json @@ -0,0 +1,48 @@ +{ + "org.apache:foo": { + "2.0.0": { + "foo-2.0.0.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "foo-2.0.0.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.pom" + ], + "hash": "sha256-gcL/k4xoI5SK4qDNcyH1uHkgiGQv3WohPb45Gsb9gi8=" + } + }, + "1.0.0": { + "foo-1.0.0.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "foo-1.0.0.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.pom" + ], + "hash": "sha256-roNL3MgAJuUPxIdJJiSpjU3yEFlJFDQ99QvnaWlkVcE=" + } + } + }, + "org.apache:test": { + "1.0.0": { + "test-1.0.0.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "test-1.0.0.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" + ], + "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" + } + } + } +} \ No newline at end of file diff --git a/fixtures/golden/integration/settings-buildscript.groovy.json b/fixtures/golden/integration/settings-buildscript.groovy.json index eef03c3..b92c54f 100644 --- a/fixtures/golden/integration/settings-buildscript.groovy.json +++ b/fixtures/golden/integration/settings-buildscript.groovy.json @@ -1,181 +1,145 @@ { "com.googlecode.javaewah:JavaEWAH": { "1.1.6": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "JavaEWAH-1.1.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" - ], - "hash": "sha256-941EoeOHfxznSLSoXfUXHl6Omlw8b2O7kAPbb4TM6VI=" - }, - "JavaEWAH-1.1.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom" - ], - "hash": "sha256-f0/5GbHuF783duBYo/IOYXPbI6XkTPLRB+x1cMGGq/A=" - } + "JavaEWAH-1.1.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" + ], + "hash": "sha256-941EoeOHfxznSLSoXfUXHl6Omlw8b2O7kAPbb4TM6VI=" + }, + "JavaEWAH-1.1.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom" + ], + "hash": "sha256-f0/5GbHuF783duBYo/IOYXPbI6XkTPLRB+x1cMGGq/A=" } } }, "com.jcraft:jsch": { "0.1.54": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jsch-0.1.54.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" - ], - "hash": "sha256-kusnOjMWdiR4/dT+A6DOGELFb0lsnBL+EjXbgEUOH9s=" - }, - "jsch-0.1.54.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom" - ], - "hash": "sha256-q49RIDm+f2riDhjnQ7Sp2KIJWElEMZF9pYrlqu+KNHg=" - } + "jsch-0.1.54.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" + ], + "hash": "sha256-kusnOjMWdiR4/dT+A6DOGELFb0lsnBL+EjXbgEUOH9s=" + }, + "jsch-0.1.54.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom" + ], + "hash": "sha256-q49RIDm+f2riDhjnQ7Sp2KIJWElEMZF9pYrlqu+KNHg=" } } }, "commons-codec:commons-codec": { "1.6": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "commons-codec-1.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" - ], - "hash": "sha256-VLNOlBuOFBS9PkDXNu/TSBdy3CbbMpb2qkXOyfYgPYY=" - }, - "commons-codec-1.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom" - ], - "hash": "sha256-oG410//zprgT2UiU6/PkmPlUDIZMWzmueDkH46bHKIk=" - } + "commons-codec-1.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" + ], + "hash": "sha256-VLNOlBuOFBS9PkDXNu/TSBdy3CbbMpb2qkXOyfYgPYY=" + }, + "commons-codec-1.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom" + ], + "hash": "sha256-oG410//zprgT2UiU6/PkmPlUDIZMWzmueDkH46bHKIk=" } } }, "commons-logging:commons-logging": { "1.1.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "commons-logging-1.1.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" - ], - "hash": "sha256-cJA/b8gumQjI2p8gRD9h2Q8IcKMSZCmR/oRioLk5F4Q=" - }, - "commons-logging-1.1.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom" - ], - "hash": "sha256-MlCsOsa9YO0GMfXNAzUDKymT1j5AWmrgVV0np+SGWEk=" - } + "commons-logging-1.1.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" + ], + "hash": "sha256-cJA/b8gumQjI2p8gRD9h2Q8IcKMSZCmR/oRioLk5F4Q=" + }, + "commons-logging-1.1.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom" + ], + "hash": "sha256-MlCsOsa9YO0GMfXNAzUDKymT1j5AWmrgVV0np+SGWEk=" } } }, "gradle.plugin.net.vivin:gradle-semantic-build-versioning": { "4.0.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "gradle-semantic-build-versioning-4.0.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar" - ], - "hash": "sha256-UTjmfOjgGUN4ALk8n2+dD8vr763Jb7xOvAl1yZomHvg=" - }, - "gradle-semantic-build-versioning-4.0.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom" - ], - "hash": "sha256-TygodBYH7RAtletfGJ1JbHhA7UY6zqifHlGmBWdxTvc=" - } + "gradle-semantic-build-versioning-4.0.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar" + ], + "hash": "sha256-UTjmfOjgGUN4ALk8n2+dD8vr763Jb7xOvAl1yZomHvg=" + }, + "gradle-semantic-build-versioning-4.0.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom" + ], + "hash": "sha256-TygodBYH7RAtletfGJ1JbHhA7UY6zqifHlGmBWdxTvc=" } } }, "org.apache.httpcomponents:httpclient": { "4.3.6": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "httpclient-4.3.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" - ], - "hash": "sha256-eYONnq73PU+FLGOkgIMMOi1LWQ8Ks66BWkiUY+RxQAQ=" - }, - "httpclient-4.3.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom" - ], - "hash": "sha256-0CY09hMekUlhwCqoNnEeuscnBLJ+JsW9Iju62JsbZMM=" - } + "httpclient-4.3.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" + ], + "hash": "sha256-eYONnq73PU+FLGOkgIMMOi1LWQ8Ks66BWkiUY+RxQAQ=" + }, + "httpclient-4.3.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom" + ], + "hash": "sha256-0CY09hMekUlhwCqoNnEeuscnBLJ+JsW9Iju62JsbZMM=" } } }, "org.apache.httpcomponents:httpcore": { "4.3.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "httpcore-4.3.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" - ], - "hash": "sha256-UoXegK8WUcSJMTuRqfQMZaTNy2s73nFvzAKNFoaaWpM=" - }, - "httpcore-4.3.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom" - ], - "hash": "sha256-tCf3z2fHWk4/niEI01v0UwNXPBRex3j8rc/6zvF6EmQ=" - } + "httpcore-4.3.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" + ], + "hash": "sha256-UoXegK8WUcSJMTuRqfQMZaTNy2s73nFvzAKNFoaaWpM=" + }, + "httpcore-4.3.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom" + ], + "hash": "sha256-tCf3z2fHWk4/niEI01v0UwNXPBRex3j8rc/6zvF6EmQ=" } } }, "org.eclipse.jgit:org.eclipse.jgit": { "4.8.0.201706111038-r": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "org.eclipse.jgit-4.8.0.201706111038-r.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar" - ], - "hash": "sha256-SdkS6NXM4N0I3KPTkBiduGkqj34zY8274YJYFGIACro=" - }, - "org.eclipse.jgit-4.8.0.201706111038-r.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom" - ], - "hash": "sha256-pVap9a38avSbKhLnLcPNfkPbj9whbA81iFlyovWton0=" - } + "org.eclipse.jgit-4.8.0.201706111038-r.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar" + ], + "hash": "sha256-SdkS6NXM4N0I3KPTkBiduGkqj34zY8274YJYFGIACro=" + }, + "org.eclipse.jgit-4.8.0.201706111038-r.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom" + ], + "hash": "sha256-pVap9a38avSbKhLnLcPNfkPbj9whbA81iFlyovWton0=" } } }, "org.slf4j:slf4j-api": { "1.7.2": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "slf4j-api-1.7.2.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" - ], - "hash": "sha256-O654m0ATM7Kh0WA7f6Vz4ZkIYoGRcHID9utwjN7iwFI=" - }, - "slf4j-api-1.7.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom" - ], - "hash": "sha256-LqynGv4KFRb0q9jp/5B4ONJo84yBw6VCzOjX87h8XUw=" - } + "slf4j-api-1.7.2.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" + ], + "hash": "sha256-O654m0ATM7Kh0WA7f6Vz4ZkIYoGRcHID9utwjN7iwFI=" + }, + "slf4j-api-1.7.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom" + ], + "hash": "sha256-LqynGv4KFRb0q9jp/5B4ONJo84yBw6VCzOjX87h8XUw=" } } } diff --git a/fixtures/golden/ivy/basic.kotlin.json b/fixtures/golden/ivy/basic.kotlin.json index ae009c4..a1bc3fb 100644 --- a/fixtures/golden/ivy/basic.kotlin.json +++ b/fixtures/golden/ivy/basic.kotlin.json @@ -1,41 +1,33 @@ { "org.opendof.core-java:dof-cipher-sms4": { "1.0": { - "needsPomRedirect": false, - "needsIvyRedirect": true, - "files": { - "dof-cipher-sms4-1.0.jar": { - "urls": [ - "https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/dof-cipher-sms4-1.0.jar" - ], - "hash": "sha256-/Joo51NA6nBPEwFuFcnDc10JQZDE8P3jF3P4gl0vpMA=" - }, - "ivy-1.0.xml": { - "urls": [ - "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" - ], - "hash": "sha256-rh+pQpXqPP/cmBD8slvwMrKlWCUb3JNzW3l58hd7oJ8=" - } + "dof-cipher-sms4-1.0.jar": { + "urls": [ + "https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/dof-cipher-sms4-1.0.jar" + ], + "hash": "sha256-/Joo51NA6nBPEwFuFcnDc10JQZDE8P3jF3P4gl0vpMA=" + }, + "ivy-1.0.xml": { + "urls": [ + "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" + ], + "hash": "sha256-rh+pQpXqPP/cmBD8slvwMrKlWCUb3JNzW3l58hd7oJ8=" } } }, "org.opendof.core-java:dof-oal": { "7.0.2": { - "needsPomRedirect": false, - "needsIvyRedirect": true, - "files": { - "dof-oal-7.0.2.jar": { - "urls": [ - "https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/dof-oal-7.0.2.jar" - ], - "hash": "sha256-u+FUhQGBA8MRl28mXMTSnZ2HY2ysPHq7h9lANmHBK40=" - }, - "ivy-7.0.2.xml": { - "urls": [ - "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml" - ], - "hash": "sha256-KZoUVyoDcfH/B/9V1SVqNiA/XIb3zlwoJkjb/jD+xig=" - } + "dof-oal-7.0.2.jar": { + "urls": [ + "https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/dof-oal-7.0.2.jar" + ], + "hash": "sha256-u+FUhQGBA8MRl28mXMTSnZ2HY2ysPHq7h9lANmHBK40=" + }, + "ivy-7.0.2.xml": { + "urls": [ + "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml" + ], + "hash": "sha256-KZoUVyoDcfH/B/9V1SVqNiA/XIb3zlwoJkjb/jD+xig=" } } } diff --git a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json index 9ce6993..a1243bf 100644 --- a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json +++ b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json @@ -1,697 +1,591 @@ { "net.java.dev.jna:jna": { "5.6.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jna-5.6.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], - "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" - }, - "jna-5.6.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], - "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" - } + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" } } }, "org.jetbrains.intellij.deps:trove4j": { "1.0.20200330": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } } }, "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" - ], - "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" - } + "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" + ], + "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" } } }, "org.jetbrains.kotlin:kotlin-android-extensions": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-android-extensions-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" - ], - "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" - }, - "kotlin-android-extensions-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" - ], - "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" - } + "kotlin-android-extensions-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" + ], + "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" + }, + "kotlin-android-extensions-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" + ], + "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" } } }, "org.jetbrains.kotlin:kotlin-annotation-processing-gradle": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-annotation-processing-gradle-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" - ], - "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" - }, - "kotlin-annotation-processing-gradle-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" - ], - "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" - } + "kotlin-annotation-processing-gradle-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" + ], + "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" + }, + "kotlin-annotation-processing-gradle-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" + ], + "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" } } }, "org.jetbrains.kotlin:kotlin-build-common": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-build-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" - ], - "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" - }, - "kotlin-build-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" - ], - "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" - } + "kotlin-build-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" + ], + "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" + }, + "kotlin-build-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" + ], + "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" } } }, "org.jetbrains.kotlin:kotlin-compiler-embeddable": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" - }, - "kotlin-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" - } + "kotlin-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" + }, + "kotlin-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" } } }, "org.jetbrains.kotlin:kotlin-compiler-runner": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-compiler-runner-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" - ], - "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" - }, - "kotlin-compiler-runner-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" - ], - "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" - } + "kotlin-compiler-runner-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" + ], + "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" + }, + "kotlin-compiler-runner-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" + ], + "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" } } }, "org.jetbrains.kotlin:kotlin-daemon-client": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-daemon-client-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" - ], - "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" - }, - "kotlin-daemon-client-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" - ], - "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" - } + "kotlin-daemon-client-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" + ], + "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" + }, + "kotlin-daemon-client-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" + ], + "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" } } }, "org.jetbrains.kotlin:kotlin-daemon-embeddable": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-daemon-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" - ], - "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" - }, - "kotlin-daemon-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" - ], - "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" - } + "kotlin-daemon-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" + ], + "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" + }, + "kotlin-daemon-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" + ], + "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" - ], - "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" - }, - "kotlin-gradle-plugin-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" - ], - "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" - } + "kotlin-gradle-plugin-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" + ], + "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" + }, + "kotlin-gradle-plugin-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" + ], + "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" + }, + "kotlin-gradle-plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom" + ], + "hash": "sha256-0gTXpKcf6Scv44M9x0IAkan/EJaky6JfcnihlUI1BGk=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" - ], - "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" - } + "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" + ], + "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" + }, + "kotlin-gradle-plugin-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom" + ], + "hash": "sha256-89unBFqYcdah5QnkF+tjQa3bmHFaL409ZnJlAdq0s0Y=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-idea-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" - ], - "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" - }, - "kotlin-gradle-plugin-idea-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" - ], - "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" - } + "kotlin-gradle-plugin-idea-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" + ], + "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" + }, + "kotlin-gradle-plugin-idea-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" + ], + "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" + }, + "kotlin-gradle-plugin-idea-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom" + ], + "hash": "sha256-Flz/idoRsXIpiJPHg0sNQadm1/PdIPoIvfiJxlXD5zc=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" - ], - "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" - }, - "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" - ], - "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" - } + "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" + ], + "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" + }, + "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" + ], + "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" - ], - "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" - }, - "kotlin-gradle-plugin-model-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" - ], - "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" - } + "kotlin-gradle-plugin-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" + ], + "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" + }, + "kotlin-gradle-plugin-model-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" + ], + "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" + }, + "kotlin-gradle-plugin-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom" + ], + "hash": "sha256-y2vKOdHhBWBXcMCj3ubUXw58XtPFNGiZ9ycQsf//HaY=" } } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-klib-commonizer-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" - ], - "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" - }, - "kotlin-klib-commonizer-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" - ], - "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" - } + "kotlin-klib-commonizer-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" + ], + "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" + }, + "kotlin-klib-commonizer-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" + ], + "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" } } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-klib-commonizer-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" - ], - "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" - }, - "kotlin-klib-commonizer-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" - ], - "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" - } + "kotlin-klib-commonizer-embeddable-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" + ], + "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" + }, + "kotlin-klib-commonizer-embeddable-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" + ], + "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" } } }, "org.jetbrains.kotlin:kotlin-native-utils": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-native-utils-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" - ], - "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" - }, - "kotlin-native-utils-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" - ], - "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" - } + "kotlin-native-utils-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" + ], + "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" + }, + "kotlin-native-utils-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" + ], + "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" } } }, "org.jetbrains.kotlin:kotlin-project-model": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-project-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" - ], - "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" - }, - "kotlin-project-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" - ], - "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" - } + "kotlin-project-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" + ], + "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" + }, + "kotlin-project-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" + ], + "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" } } }, "org.jetbrains.kotlin:kotlin-reflect": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-reflect-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" - ], - "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" - }, - "kotlin-reflect-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" - ], - "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" - } + "kotlin-reflect-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" + ], + "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" + }, + "kotlin-reflect-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" + ], + "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" } } }, "org.jetbrains.kotlin:kotlin-script-runtime": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-script-runtime-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" - ], - "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" - }, - "kotlin-script-runtime-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" - ], - "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" - } + "kotlin-script-runtime-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" + ], + "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" + }, + "kotlin-script-runtime-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" + ], + "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" } } }, "org.jetbrains.kotlin:kotlin-scripting-common": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" - ], - "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" - }, - "kotlin-scripting-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" - ], - "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" - } + "kotlin-scripting-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" + ], + "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" + }, + "kotlin-scripting-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" + ], + "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" } } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" - }, - "kotlin-scripting-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" - } + "kotlin-scripting-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" + }, + "kotlin-scripting-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" } } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" - ], - "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" - ], - "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" - } + "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" + ], + "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" + ], + "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" } } }, "org.jetbrains.kotlin:kotlin-scripting-jvm": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-jvm-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" - ], - "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" - }, - "kotlin-scripting-jvm-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" - ], - "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" - } + "kotlin-scripting-jvm-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" + ], + "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" + }, + "kotlin-scripting-jvm-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" + ], + "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" } } }, "org.jetbrains.kotlin:kotlin-stdlib": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" - ], - "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" - }, - "kotlin-stdlib-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" - ], - "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" - } + "kotlin-stdlib-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" + ], + "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" + }, + "kotlin-stdlib-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" + ], + "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-common": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-common-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" - ], - "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" - }, - "kotlin-stdlib-common-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" - ], - "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" - } + "kotlin-stdlib-common-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" + ], + "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" + }, + "kotlin-stdlib-common-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" + ], + "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-jdk7-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" - ], - "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" - }, - "kotlin-stdlib-jdk7-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" - ], - "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" - } + "kotlin-stdlib-jdk7-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" + ], + "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" + }, + "kotlin-stdlib-jdk7-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" + ], + "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-jdk8-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" - ], - "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" - }, - "kotlin-stdlib-jdk8-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" - ], - "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" - } + "kotlin-stdlib-jdk8-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" + ], + "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" + }, + "kotlin-stdlib-jdk8-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" + ], + "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" } } }, "org.jetbrains.kotlin:kotlin-tooling-core": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-tooling-core-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" - ], - "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" - }, - "kotlin-tooling-core-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" - ], - "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" - } + "kotlin-tooling-core-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" + ], + "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" + }, + "kotlin-tooling-core-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" + ], + "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" } } }, "org.jetbrains.kotlin:kotlin-util-io": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-util-io-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" - ], - "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" - }, - "kotlin-util-io-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" - ], - "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" - } + "kotlin-util-io-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" + ], + "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" + }, + "kotlin-util-io-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" + ], + "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" } } }, "org.jetbrains.kotlin:kotlin-util-klib": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-util-klib-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" - ], - "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" - }, - "kotlin-util-klib-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" - ], - "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" - } + "kotlin-util-klib-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" + ], + "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" + }, + "kotlin-util-klib-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" + ], + "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" } } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { "1.5.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - } + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } } }, "org.jetbrains:annotations": { "13.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } } } diff --git a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json index 9ce6993..a1243bf 100644 --- a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json +++ b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json @@ -1,697 +1,591 @@ { "net.java.dev.jna:jna": { "5.6.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "jna-5.6.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], - "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" - }, - "jna-5.6.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], - "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" - } + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" } } }, "org.jetbrains.intellij.deps:trove4j": { "1.0.20200330": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } } }, "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" - ], - "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" - } + "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" + ], + "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" } } }, "org.jetbrains.kotlin:kotlin-android-extensions": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-android-extensions-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" - ], - "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" - }, - "kotlin-android-extensions-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" - ], - "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" - } + "kotlin-android-extensions-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" + ], + "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" + }, + "kotlin-android-extensions-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" + ], + "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" } } }, "org.jetbrains.kotlin:kotlin-annotation-processing-gradle": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-annotation-processing-gradle-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" - ], - "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" - }, - "kotlin-annotation-processing-gradle-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" - ], - "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" - } + "kotlin-annotation-processing-gradle-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" + ], + "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" + }, + "kotlin-annotation-processing-gradle-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" + ], + "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" } } }, "org.jetbrains.kotlin:kotlin-build-common": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-build-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" - ], - "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" - }, - "kotlin-build-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" - ], - "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" - } + "kotlin-build-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" + ], + "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" + }, + "kotlin-build-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" + ], + "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" } } }, "org.jetbrains.kotlin:kotlin-compiler-embeddable": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" - }, - "kotlin-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" - } + "kotlin-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" + }, + "kotlin-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" } } }, "org.jetbrains.kotlin:kotlin-compiler-runner": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-compiler-runner-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" - ], - "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" - }, - "kotlin-compiler-runner-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" - ], - "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" - } + "kotlin-compiler-runner-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" + ], + "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" + }, + "kotlin-compiler-runner-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" + ], + "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" } } }, "org.jetbrains.kotlin:kotlin-daemon-client": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-daemon-client-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" - ], - "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" - }, - "kotlin-daemon-client-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" - ], - "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" - } + "kotlin-daemon-client-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" + ], + "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" + }, + "kotlin-daemon-client-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" + ], + "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" } } }, "org.jetbrains.kotlin:kotlin-daemon-embeddable": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-daemon-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" - ], - "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" - }, - "kotlin-daemon-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" - ], - "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" - } + "kotlin-daemon-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" + ], + "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" + }, + "kotlin-daemon-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" + ], + "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" - ], - "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" - }, - "kotlin-gradle-plugin-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" - ], - "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" - } + "kotlin-gradle-plugin-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" + ], + "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" + }, + "kotlin-gradle-plugin-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" + ], + "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" + }, + "kotlin-gradle-plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom" + ], + "hash": "sha256-0gTXpKcf6Scv44M9x0IAkan/EJaky6JfcnihlUI1BGk=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" - ], - "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" - } + "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" + ], + "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" + }, + "kotlin-gradle-plugin-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom" + ], + "hash": "sha256-89unBFqYcdah5QnkF+tjQa3bmHFaL409ZnJlAdq0s0Y=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-idea-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" - ], - "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" - }, - "kotlin-gradle-plugin-idea-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" - ], - "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" - } + "kotlin-gradle-plugin-idea-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" + ], + "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" + }, + "kotlin-gradle-plugin-idea-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" + ], + "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" + }, + "kotlin-gradle-plugin-idea-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom" + ], + "hash": "sha256-Flz/idoRsXIpiJPHg0sNQadm1/PdIPoIvfiJxlXD5zc=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" - ], - "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" - }, - "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" - ], - "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" - } + "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" + ], + "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" + }, + "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" + ], + "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" } } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-gradle-plugin-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" - ], - "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" - }, - "kotlin-gradle-plugin-model-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" - ], - "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" - } + "kotlin-gradle-plugin-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" + ], + "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" + }, + "kotlin-gradle-plugin-model-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" + ], + "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" + }, + "kotlin-gradle-plugin-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom" + ], + "hash": "sha256-y2vKOdHhBWBXcMCj3ubUXw58XtPFNGiZ9ycQsf//HaY=" } } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-klib-commonizer-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" - ], - "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" - }, - "kotlin-klib-commonizer-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" - ], - "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" - } + "kotlin-klib-commonizer-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" + ], + "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" + }, + "kotlin-klib-commonizer-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" + ], + "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" } } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-klib-commonizer-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" - ], - "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" - }, - "kotlin-klib-commonizer-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" - ], - "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" - } + "kotlin-klib-commonizer-embeddable-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" + ], + "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" + }, + "kotlin-klib-commonizer-embeddable-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" + ], + "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" } } }, "org.jetbrains.kotlin:kotlin-native-utils": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-native-utils-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" - ], - "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" - }, - "kotlin-native-utils-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" - ], - "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" - } + "kotlin-native-utils-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" + ], + "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" + }, + "kotlin-native-utils-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" + ], + "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" } } }, "org.jetbrains.kotlin:kotlin-project-model": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-project-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" - ], - "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" - }, - "kotlin-project-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" - ], - "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" - } + "kotlin-project-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" + ], + "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" + }, + "kotlin-project-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" + ], + "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" } } }, "org.jetbrains.kotlin:kotlin-reflect": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-reflect-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" - ], - "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" - }, - "kotlin-reflect-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" - ], - "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" - } + "kotlin-reflect-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" + ], + "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" + }, + "kotlin-reflect-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" + ], + "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" } } }, "org.jetbrains.kotlin:kotlin-script-runtime": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-script-runtime-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" - ], - "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" - }, - "kotlin-script-runtime-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" - ], - "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" - } + "kotlin-script-runtime-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" + ], + "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" + }, + "kotlin-script-runtime-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" + ], + "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" } } }, "org.jetbrains.kotlin:kotlin-scripting-common": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" - ], - "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" - }, - "kotlin-scripting-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" - ], - "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" - } + "kotlin-scripting-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" + ], + "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" + }, + "kotlin-scripting-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" + ], + "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" } } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" - }, - "kotlin-scripting-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" - } + "kotlin-scripting-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" + }, + "kotlin-scripting-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" } } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" - ], - "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" - ], - "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" - } + "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" + ], + "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" + ], + "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" } } }, "org.jetbrains.kotlin:kotlin-scripting-jvm": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-scripting-jvm-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" - ], - "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" - }, - "kotlin-scripting-jvm-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" - ], - "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" - } + "kotlin-scripting-jvm-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" + ], + "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" + }, + "kotlin-scripting-jvm-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" + ], + "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" } } }, "org.jetbrains.kotlin:kotlin-stdlib": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" - ], - "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" - }, - "kotlin-stdlib-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" - ], - "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" - } + "kotlin-stdlib-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" + ], + "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" + }, + "kotlin-stdlib-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" + ], + "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-common": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-common-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" - ], - "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" - }, - "kotlin-stdlib-common-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" - ], - "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" - } + "kotlin-stdlib-common-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" + ], + "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" + }, + "kotlin-stdlib-common-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" + ], + "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-jdk7-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" - ], - "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" - }, - "kotlin-stdlib-jdk7-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" - ], - "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" - } + "kotlin-stdlib-jdk7-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" + ], + "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" + }, + "kotlin-stdlib-jdk7-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" + ], + "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-jdk8-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" - ], - "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" - }, - "kotlin-stdlib-jdk8-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" - ], - "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" - } + "kotlin-stdlib-jdk8-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" + ], + "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" + }, + "kotlin-stdlib-jdk8-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" + ], + "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" } } }, "org.jetbrains.kotlin:kotlin-tooling-core": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-tooling-core-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" - ], - "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" - }, - "kotlin-tooling-core-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" - ], - "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" - } + "kotlin-tooling-core-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" + ], + "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" + }, + "kotlin-tooling-core-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" + ], + "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" } } }, "org.jetbrains.kotlin:kotlin-util-io": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-util-io-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" - ], - "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" - }, - "kotlin-util-io-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" - ], - "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" - } + "kotlin-util-io-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" + ], + "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" + }, + "kotlin-util-io-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" + ], + "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" } } }, "org.jetbrains.kotlin:kotlin-util-klib": { "1.7.21": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-util-klib-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" - ], - "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" - }, - "kotlin-util-klib-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" - ], - "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" - } + "kotlin-util-klib-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" + ], + "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" + }, + "kotlin-util-klib-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" + ], + "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" } } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { "1.5.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - } + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } } }, "org.jetbrains:annotations": { "13.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } } } diff --git a/fixtures/golden/settings/buildscript.groovy.json b/fixtures/golden/settings/buildscript.groovy.json index a8acd89..8865774 100644 --- a/fixtures/golden/settings/buildscript.groovy.json +++ b/fixtures/golden/settings/buildscript.groovy.json @@ -1,21 +1,17 @@ { "org.apache:test": { "1.0.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "test-1.0.0.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" - ], - "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" - }, - "test-1.0.0.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ], - "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" - } + "test-1.0.0.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "test-1.0.0.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" + ], + "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" } } } diff --git a/fixtures/golden/settings/dependency-resolution-management.kotlin.json b/fixtures/golden/settings/dependency-resolution-management.kotlin.json index a8acd89..8865774 100644 --- a/fixtures/golden/settings/dependency-resolution-management.kotlin.json +++ b/fixtures/golden/settings/dependency-resolution-management.kotlin.json @@ -1,21 +1,17 @@ { "org.apache:test": { "1.0.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "test-1.0.0.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" - ], - "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" - }, - "test-1.0.0.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ], - "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" - } + "test-1.0.0.jar": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "test-1.0.0.pom": { + "urls": [ + "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" + ], + "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" } } } diff --git a/fixtures/golden/subprojects/multi-module.groovy.json b/fixtures/golden/subprojects/multi-module.groovy.json index f0dc3ab..d9ca950 100644 --- a/fixtures/golden/subprojects/multi-module.groovy.json +++ b/fixtures/golden/subprojects/multi-module.groovy.json @@ -1,159 +1,127 @@ { "com.squareup.moshi:moshi": { "1.8.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" - } + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" } } }, "com.squareup.okio:okio": { "2.2.2": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" - } + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } }, "1.16.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "okio-1.16.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" - ], - "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" - }, - "okio-1.16.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" - ], - "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" - } + "okio-1.16.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" + ], + "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" + }, + "okio-1.16.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" + ], + "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" } } }, "junit:junit": { "4.12": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "junit-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" - ], - "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" - }, - "junit-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" - ], - "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" - } + "junit-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" + ], + "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" + }, + "junit-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" + ], + "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" } } }, "org.hamcrest:hamcrest-core": { "1.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "hamcrest-core-1.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" - ], - "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" - }, - "hamcrest-core-1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" - ], - "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" - } + "hamcrest-core-1.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" + ], + "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" + }, + "hamcrest-core-1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" + ], + "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" } } }, "org.jetbrains.kotlin:kotlin-stdlib": { "1.2.60": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" - } + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-common": { "1.2.60": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" - } + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" } } }, "org.jetbrains:annotations": { "13.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } } } diff --git a/fixtures/golden/subprojects/multi-module.kotlin.json b/fixtures/golden/subprojects/multi-module.kotlin.json index f0dc3ab..d9ca950 100644 --- a/fixtures/golden/subprojects/multi-module.kotlin.json +++ b/fixtures/golden/subprojects/multi-module.kotlin.json @@ -1,159 +1,127 @@ { "com.squareup.moshi:moshi": { "1.8.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" - } + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" } } }, "com.squareup.okio:okio": { "2.2.2": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" - } + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } }, "1.16.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "okio-1.16.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" - ], - "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" - }, - "okio-1.16.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" - ], - "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" - } + "okio-1.16.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" + ], + "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" + }, + "okio-1.16.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" + ], + "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" } } }, "junit:junit": { "4.12": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "junit-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" - ], - "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" - }, - "junit-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" - ], - "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" - } + "junit-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" + ], + "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" + }, + "junit-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" + ], + "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" } } }, "org.hamcrest:hamcrest-core": { "1.3": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "hamcrest-core-1.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" - ], - "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" - }, - "hamcrest-core-1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" - ], - "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" - } + "hamcrest-core-1.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" + ], + "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" + }, + "hamcrest-core-1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" + ], + "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" } } }, "org.jetbrains.kotlin:kotlin-stdlib": { "1.2.60": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" - } + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" } } }, "org.jetbrains.kotlin:kotlin-stdlib-common": { "1.2.60": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" - } + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" } } }, "org.jetbrains:annotations": { "13.0": { - "needsPomRedirect": true, - "needsIvyRedirect": false, - "files": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } } } diff --git a/fixtures/included-build/groovy/build.gradle b/fixtures/included-build/groovy/build.gradle new file mode 100644 index 0000000..72a75a9 --- /dev/null +++ b/fixtures/included-build/groovy/build.gradle @@ -0,0 +1,10 @@ +apply plugin: 'java' + +repositories { + maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } +} + +dependencies { + implementation 'org.test.included:included-child' + implementation 'org.apache:test:1.0.0' +} diff --git a/fixtures/included-build/groovy/included-child/build.gradle b/fixtures/included-build/groovy/included-child/build.gradle new file mode 100644 index 0000000..5a964cf --- /dev/null +++ b/fixtures/included-build/groovy/included-child/build.gradle @@ -0,0 +1,11 @@ +apply plugin: 'java-library' +group = 'org.test.included' +version = '1.0' + +repositories { + maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } +} + +dependencies { + implementation 'org.apache:foo:1.0.0' +} diff --git a/fixtures/included-build/groovy/included-child/settings.gradle b/fixtures/included-build/groovy/included-child/settings.gradle new file mode 100644 index 0000000..a622c5b --- /dev/null +++ b/fixtures/included-build/groovy/included-child/settings.gradle @@ -0,0 +1,10 @@ +buildscript { + repositories { + maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } + } + dependencies { + classpath 'org.apache:foo:2.0.0' + } +} + +rootProject.name = 'included-child' diff --git a/fixtures/included-build/groovy/settings.gradle b/fixtures/included-build/groovy/settings.gradle new file mode 100644 index 0000000..d8e504b --- /dev/null +++ b/fixtures/included-build/groovy/settings.gradle @@ -0,0 +1 @@ +includeBuild 'included-child' diff --git a/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.jar b/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..fde9ffe40ec948dcddbd1daa4b798f8a32d050b5 GIT binary patch literal 190 zcmWIWW@Zs#-~d9y#btpENPv|=fkCe%wYVfSgqMMRpXKg&7%r{gW?*D_!OXzGk^WN1l1nk&B!FejA|@Q4rDA0ENKL>h_WQWo0Scum=OqrfpjQ{!vFxY)*hk& literal 0 HcmV?d00001 diff --git a/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.pom b/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.pom new file mode 100644 index 0000000..c814f43 --- /dev/null +++ b/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.pom @@ -0,0 +1,14 @@ + + + 4.0.0 + + org.apache + foo + 1.0.0 + + foo + + + foo + + diff --git a/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.jar b/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..fde9ffe40ec948dcddbd1daa4b798f8a32d050b5 GIT binary patch literal 190 zcmWIWW@Zs#-~d9y#btpENPv|=fkCe%wYVfSgqMMRpXKg&7%r{gW?*D_!OXzGk^WN1l1nk&B!FejA|@Q4rDA0ENKL>h_WQWo0Scum=OqrfpjQ{!vFxY)*hk& literal 0 HcmV?d00001 diff --git a/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.pom b/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.pom new file mode 100644 index 0000000..bc031e8 --- /dev/null +++ b/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.pom @@ -0,0 +1,14 @@ + + + 4.0.0 + + org.apache + foo + 2.0.0 + + foo + + + foo + + diff --git a/fixtures/repositories/m2/org/apache/foo/maven-metadata.xml b/fixtures/repositories/m2/org/apache/foo/maven-metadata.xml new file mode 100644 index 0000000..e8c0a04 --- /dev/null +++ b/fixtures/repositories/m2/org/apache/foo/maven-metadata.xml @@ -0,0 +1,31 @@ + + + + org.apache + foo + + 2.0.0 + 2.0.0 + + 1.0.0 + 2.0.0 + + + diff --git a/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom.sha1 b/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom.sha1 deleted file mode 100644 index c5dfdc6..0000000 --- a/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom.sha1 +++ /dev/null @@ -1 +0,0 @@ -88e79ca0e696263e63bc9dc759a2e9c0d66e36d9 \ No newline at end of file diff --git a/fixtures/repositories/m2/org/apache/test/2.0.0/test-2.0.0.jar b/fixtures/repositories/m2/org/apache/test/2.0.0/test-2.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..fde9ffe40ec948dcddbd1daa4b798f8a32d050b5 GIT binary patch literal 190 zcmWIWW@Zs#-~d9y#btpENPv|=fkCe%wYVfSgqMMRpXKg&7%r{gW?*D_!OXzGk^WN1l1nk&B!FejA|@Q4rDA0ENKL>h_WQWo0Scum=OqrfpjQ{!vFxY)*hk& literal 0 HcmV?d00001 diff --git a/fixtures/repositories/m2/org/apache/test/2.0.0/test-2.0.0.pom b/fixtures/repositories/m2/org/apache/test/2.0.0/test-2.0.0.pom new file mode 100644 index 0000000..8fd0c3f --- /dev/null +++ b/fixtures/repositories/m2/org/apache/test/2.0.0/test-2.0.0.pom @@ -0,0 +1,14 @@ + + + 4.0.0 + + org.apache + test + 2.0.0 + + test + + + test + + diff --git a/fixtures/repositories/m2/org/apache/test/maven-metadata.xml b/fixtures/repositories/m2/org/apache/test/maven-metadata.xml index 00a285b..6131357 100644 --- a/fixtures/repositories/m2/org/apache/test/maven-metadata.xml +++ b/fixtures/repositories/m2/org/apache/test/maven-metadata.xml @@ -20,5 +20,12 @@ org.apache test - 1.0.0 - \ No newline at end of file + + 2.0.0 + 2.0.0 + + 1.0.0 + 2.0.0 + + + diff --git a/flake.lock b/flake.lock index e07a8ee..b754bf5 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1696589439, - "narHash": "sha256-Ye+flokLfswVz9PZEyJ5yGJ1VqmJe3bDgwWt9Z4MuqQ=", + "lastModified": 1702855317, + "narHash": "sha256-5EXeUkoWvrfbZQQLVRn7Ebb9LOt3DkVm6T0M31/VhtM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e462c9172c685f0839baaa54bb5b49276a23dab7", + "rev": "3a16c6447466f4034c2d75fe7014477142c9513e", "type": "github" }, "original": { diff --git a/gradle-env.json b/gradle-env.json index 6ff7a39..ca7b7e0 100644 --- a/gradle-env.json +++ b/gradle-env.json @@ -1,9526 +1,2189 @@ { - "": { - "name": "gradle2nix", - "version": "1.0.0-rc2", - "path": "", - "gradle": { - "version": "6.8.1", - "type": "all", - "url": "https://services.gradle.org/distributions/gradle-6.8.1-all.zip", - "sha256": "3db89524a3981819ff28c3f979236c1274a726e146ced0c8a2020417f9bc0782", - "nativeVersion": "0.22-milestone-9" + "com.github.ajalt:clikt": { + "2.8.0": { + "clikt-2.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.module" + ], + "hash": "sha256-63VRQs7Uww/5lU+IH4piAUsdy/SKuciarYjFwpH95Gk=" + }, + "clikt-2.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.pom" + ], + "hash": "sha256-6njJ/q8ULg4AGtO8Ey95KJKSb7wmYPpu78Mg8Vzw/Hw=" + }, + "clikt-jvm-2.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.jar" + ], + "hash": "sha256-MefokL7AOvKCKKG1akSyvB7Cu57wWMkoiAAW0ZmUhpw=" + } + } + }, + "com.github.ajalt:clikt-metadata": { + "2.8.0": { + "clikt-metadata-2.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.jar" + ], + "hash": "sha256-Nxf/mOths+cC3HT1D4chzIFtNdzpwv/1g+NNUw0/I08=" + }, + "clikt-metadata-2.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.module" + ], + "hash": "sha256-y43UaWNHeqTaxq77g8LBGJqqqJxaV0TPJGGovTAvSmY=" + }, + "clikt-metadata-2.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.pom" + ], + "hash": "sha256-NtfT5a+1S3UWuJ0btkiAKNr/RrcufE4aXf9GNbtoDc8=" + } + } + }, + "com.github.ajalt:colormath": { + "1.2.0": { + "colormath-1.2.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.jar" + ], + "hash": "sha256-hqUffbsyq+QQ1UMx7GGsBoSlQ7JO6Xlnu6wKTmcp8DE=" + }, + "colormath-1.2.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.pom" + ], + "hash": "sha256-a3EKjQoQu+PgV5Xvf03ux3j9eQBbDBvA5cF4Ae5r3Z0=" + } + } + }, + "com.github.ajalt:mordant": { + "1.2.1": { + "mordant-1.2.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.jar" + ], + "hash": "sha256-enFOuNJbTZun8lalTHVZzKh9heyQ1pQ98ZE8rUPbldY=" + }, + "mordant-1.2.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.pom" + ], + "hash": "sha256-8DLcV/gHnB9WJvvF8PZfz14SNA3ictgpsLVOkpeacro=" + } + } + }, + "com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin": { + "8.1.1": { + "com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/8.1.1/com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom" + ], + "hash": "sha256-PLOIa5ffbgZvEIwxayGfJiyXw8st9tp4kn5kXetkPLA=" + } + } + }, + "com.github.johnrengelman:shadow": { + "8.1.1": { + "shadow-8.1.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.jar" + ], + "hash": "sha256-CEGXVVWQpTuyG1lQijMwVZ9TbdtEjq/R7GdfVGIDb88=" + }, + "shadow-8.1.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.module" + ], + "hash": "sha256-nQ87SqpniYcj6vbF6c0nOHj5V03azWSqNwJDYgzgLko=" + }, + "shadow-8.1.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.pom" + ], + "hash": "sha256-Mu55f8hDI3xM5cSeX0FSxYoIlK/OCg6SY25qLU/JjDU=" + } + } + }, + "com.gradle.plugin-publish:com.gradle.plugin-publish.gradle.plugin": { + "1.2.1": { + "com.gradle.plugin-publish.gradle.plugin-1.2.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/plugin-publish/com.gradle.plugin-publish.gradle.plugin/1.2.1/com.gradle.plugin-publish.gradle.plugin-1.2.1.pom" + ], + "hash": "sha256-60lBRA8TGZbmT6SCDc264js95UhBi6ke9MY0pqcfVMs=" + } + } + }, + "com.gradle.publish:plugin-publish-plugin": { + "1.2.1": { + "plugin-publish-plugin-1.2.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" + ], + "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" + }, + "plugin-publish-plugin-1.2.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" + ], + "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" + }, + "plugin-publish-plugin-1.2.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom" + ], + "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" + } + } + }, + "com.squareup.okio:okio": { + "3.7.0": { + "okio-3.7.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.7.0/okio-3.7.0.module" + ], + "hash": "sha256-88rgCfC2yEL7vFLOd1QsGdGdVu6ZpeVVZH8Lr8nVDPo=" + }, + "okio-3.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.7.0/okio-3.7.0.pom" + ], + "hash": "sha256-H2KMRSg726uM4DwHps+3akeLjdrhgL2PNKusJz5Id24=" + }, + "okio-metadata-3.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.7.0/okio-3.7.0.jar" + ], + "hash": "sha256-bvOnJZNuIlJB1K0SavmnyWgOS0r8G8Xtnn3TXwaJpNw=" + } + } + }, + "com.squareup.okio:okio-jvm": { + "3.7.0": { + "okio-jvm-3.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.7.0/okio-jvm-3.7.0.jar" + ], + "hash": "sha256-2LNa3Ch2j0OuWv5qfRqiqHi6UeC5ak8wiBHzsfWxPlU=" + }, + "okio-jvm-3.7.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.7.0/okio-jvm-3.7.0.module" + ], + "hash": "sha256-b64CAbCuSKGWBt4Ab/6YQtjQ/CoeQ04Hhc7Ni3Wr5HQ=" + }, + "okio-jvm-3.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.7.0/okio-jvm-3.7.0.pom" + ], + "hash": "sha256-d07LnSsHlLT7J+eeCHYMpWC39U+qlRm5GDxn/rRfLJc=" + } + } + }, + "commons-io:commons-io": { + "2.11.0": { + "commons-io-2.11.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar" + ], + "hash": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=" + }, + "commons-io-2.11.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.pom" + ], + "hash": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k=" + } + } + }, + "io.github.classgraph:classgraph": { + "4.8.162": { + "classgraph-4.8.162.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.162/classgraph-4.8.162.jar" + ], + "hash": "sha256-6jCy1eKeidUnBrzs96auO0RoLUoVZqXyK5RT+b4qlww=" + }, + "classgraph-4.8.162.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.162/classgraph-4.8.162.pom" + ], + "hash": "sha256-SSxpkIw7aCpjXYyp2Qm5tCyCRaNOt7nnt9xnFSHZswc=" + } + } + }, + "io.github.java-diff-utils:java-diff-utils": { + "4.12": { + "java-diff-utils-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar" + ], + "hash": "sha256-mZCiA5d49rTMlHkBQcKGiGTqzuBiDGxFlFESGpAc1bU=" + }, + "java-diff-utils-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.pom" + ], + "hash": "sha256-wm4JftyOxoBdExmBfSPU5JbMEBXMVdxSAhEtj2qRZfw=" + } + } + }, + "io.github.pdvrieze.xmlutil:core": { + "0.86.3": { + "core-0.86.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.module" + ], + "hash": "sha256-MzlXsdCR2LrPqwYCCGgi+a2S9hMCy3Ru8g4Z9nprTbk=" + }, + "core-0.86.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.pom" + ], + "hash": "sha256-ngeyUCJI+U7AYn9Wsn3wiBySBCrfzoCg35oa6sQWg4M=" + }, + "xmlutil-metadata-0.86.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.jar" + ], + "hash": "sha256-ikZHG7Y7PHhzlsu6WqL2TU4zOgOSAiRBrhIRHn5yjJE=" + } + } + }, + "io.github.pdvrieze.xmlutil:core-jvm": { + "0.86.3": { + "core-jvm-0.86.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.module" + ], + "hash": "sha256-FgIJExZWo2dDGWXYAYk7J3fuguD3ZmaD+nXE+Wck/wc=" + }, + "core-jvm-0.86.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.pom" + ], + "hash": "sha256-oBGIoPlVW1s7nZLlQz242AJ6vjleD/cIBRU+8v6qf4U=" + }, + "xmlutil-jvm-0.86.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar" + ], + "hash": "sha256-kVJ9hv6gS9YYPRQKCfENqy3qcnrxLSfZFl7jQuo9Dt4=" + } + } + }, + "io.github.pdvrieze.xmlutil:serialization-jvm": { + "0.86.3": { + "serialization-jvm-0.86.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.module" + ], + "hash": "sha256-3ppDm3mA++bMPDS8rZyEqIMVmdyHZNceD2c93Ho91Jo=" + }, + "serialization-jvm-0.86.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.pom" + ], + "hash": "sha256-OX1XqPVTaUEf7HRETH1NTLaeyYANUkSTrGHekJIl4wc=" + }, + "xmlutil-serialization-jvm-0.86.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar" + ], + "hash": "sha256-nOJz3LhguSpb8uw2rR4qEbQa7YnGyYTKc+h+/17aG9A=" + } + } + }, + "io.kotest:kotest-assertions-api": { + "5.8.0": { + "kotest-assertions-api-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.8.0/kotest-assertions-api-5.8.0.module" + ], + "hash": "sha256-op9oyadjm/8YjxR8vvhnHrjwtY/luuGAtkVdt335cos=" + }, + "kotest-assertions-api-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.8.0/kotest-assertions-api-5.8.0.pom" + ], + "hash": "sha256-W/4I+NxUjL6HymCVFTeJlwWT4r/8saI8QokZueJw8uk=" + }, + "kotest-assertions-api-metadata-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.8.0/kotest-assertions-api-5.8.0.jar" + ], + "hash": "sha256-Xwt0yykue3MauS9SV+38yg2QJUGZiHHgk1S//uk5G/E=" + } + } + }, + "io.kotest:kotest-assertions-api-jvm": { + "5.8.0": { + "kotest-assertions-api-jvm-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.8.0/kotest-assertions-api-jvm-5.8.0.jar" + ], + "hash": "sha256-JOVCn43plAVhR/TkGY8DvBs3MDsuTiutgaXDiPX+jSE=" + }, + "kotest-assertions-api-jvm-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.8.0/kotest-assertions-api-jvm-5.8.0.module" + ], + "hash": "sha256-DrzGB+6bMiarXBYvwbwl3JKNe+S5iJB3wI51Mme7jBo=" + }, + "kotest-assertions-api-jvm-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.8.0/kotest-assertions-api-jvm-5.8.0.pom" + ], + "hash": "sha256-vR5t7uMQRjCJ+PGodJu5SiUfs9tLqtiAL0RlBqgjFBU=" + } + } + }, + "io.kotest:kotest-assertions-core": { + "5.8.0": { + "kotest-assertions-core-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.8.0/kotest-assertions-core-5.8.0.module" + ], + "hash": "sha256-3PQWe35nsJADn6AJtSYKRxDl1NVnhZXyz163PMNfjKs=" + }, + "kotest-assertions-core-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.8.0/kotest-assertions-core-5.8.0.pom" + ], + "hash": "sha256-bGOKC/WWEJpFN2gugdokFnbyEftPunlX/JqPuGaOfxc=" + }, + "kotest-assertions-core-metadata-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.8.0/kotest-assertions-core-5.8.0.jar" + ], + "hash": "sha256-ni4GBzpTKdKZm0xgBJZ+Op78OcwgMQi5XHwrUs66On0=" + } + } + }, + "io.kotest:kotest-assertions-core-jvm": { + "5.8.0": { + "kotest-assertions-core-jvm-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.8.0/kotest-assertions-core-jvm-5.8.0.jar" + ], + "hash": "sha256-wslFR/sVIaSCDQ4uF+qkuQPDaO3qeP4uH/rRQ6us9hw=" + }, + "kotest-assertions-core-jvm-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.8.0/kotest-assertions-core-jvm-5.8.0.module" + ], + "hash": "sha256-5fP2fh/Aj+YAimMd938ygU7MC2uf3MtzZWr0rBFkyR8=" + }, + "kotest-assertions-core-jvm-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.8.0/kotest-assertions-core-jvm-5.8.0.pom" + ], + "hash": "sha256-ei5OsYLX8cp9UwBUWHXup3HsnZMW6rkmne6kg/Pskh8=" + } + } + }, + "io.kotest:kotest-assertions-shared": { + "5.8.0": { + "kotest-assertions-shared-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.8.0/kotest-assertions-shared-5.8.0.module" + ], + "hash": "sha256-ByvTJ2aEyatnMmjjXlRiVSMfWT5U5ho1DZfAyZYXcfI=" + }, + "kotest-assertions-shared-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.8.0/kotest-assertions-shared-5.8.0.pom" + ], + "hash": "sha256-wuvLdl0jnvtdCdSRasmjSdeNJ6aw9oaCwMUsm0fBIUo=" + }, + "kotest-assertions-shared-metadata-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.8.0/kotest-assertions-shared-5.8.0.jar" + ], + "hash": "sha256-QyX8AR427KpkyNzRVo6XhBqCfBqFvyjcMPdgb+LqiXQ=" + } + } + }, + "io.kotest:kotest-assertions-shared-jvm": { + "5.8.0": { + "kotest-assertions-shared-jvm-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.8.0/kotest-assertions-shared-jvm-5.8.0.jar" + ], + "hash": "sha256-+Vn/1y2Kc5xU8uCQF/gAPSX0Ro3oU6UsIP+ykw1TVME=" + }, + "kotest-assertions-shared-jvm-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.8.0/kotest-assertions-shared-jvm-5.8.0.module" + ], + "hash": "sha256-dK4YER9DUkwXTsrWxKz95KMERoXf/ryJh4MnXZEftm0=" + }, + "kotest-assertions-shared-jvm-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.8.0/kotest-assertions-shared-jvm-5.8.0.pom" + ], + "hash": "sha256-/DfYXG6KToMR8TuPXaTnXHuhb06Y5/fnY2ZZOkR3wEc=" + } + } + }, + "io.kotest:kotest-common": { + "5.8.0": { + "kotest-common-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.8.0/kotest-common-5.8.0.module" + ], + "hash": "sha256-BwwJRxNLNejNY9FmpGKe0KELkrNx5XYS7A4/k/TGQ3Q=" + }, + "kotest-common-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.8.0/kotest-common-5.8.0.pom" + ], + "hash": "sha256-0ZUWcDSMMt/rYzdJUGRB3Go8rpKqLsAaNzOmnMyXcfY=" + }, + "kotest-common-metadata-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.8.0/kotest-common-5.8.0.jar" + ], + "hash": "sha256-a9QgLtuJ5Z61Q1J0W9Dh+8lcVNXTMFuY+SEyQE8HrkI=" + } + } + }, + "io.kotest:kotest-common-jvm": { + "5.8.0": { + "kotest-common-jvm-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.8.0/kotest-common-jvm-5.8.0.jar" + ], + "hash": "sha256-9+cTu6Il+6WHl0FmWjthk/pSi8J75UdSp3Y4CKTylRM=" + }, + "kotest-common-jvm-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.8.0/kotest-common-jvm-5.8.0.module" + ], + "hash": "sha256-F6m2cHe8dlDvr2nfTC2Z5pdmlY7JYWC5EizmxhC6x/w=" + }, + "kotest-common-jvm-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.8.0/kotest-common-jvm-5.8.0.pom" + ], + "hash": "sha256-jCn9r/OEviBX3ggq4Bud4Qt4pRwn07qa/u0ws9U1B/8=" + } + } + }, + "io.kotest:kotest-extensions": { + "5.8.0": { + "kotest-extensions-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.8.0/kotest-extensions-5.8.0.module" + ], + "hash": "sha256-wRJ9NhChPntlMthHZbshHPPyHJAa7H7PoYG6wg7cF6g=" + }, + "kotest-extensions-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.8.0/kotest-extensions-5.8.0.pom" + ], + "hash": "sha256-ptATHw06VngbFwStxpeP17mJ1FtPCoUtbY2HqmFoHOs=" + } + } + }, + "io.kotest:kotest-extensions-jvm": { + "5.8.0": { + "kotest-extensions-jvm-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.8.0/kotest-extensions-jvm-5.8.0.jar" + ], + "hash": "sha256-t7ZJsBqwtQx/hVchsc2Qzrk7fseQyeDUVOrNifGCLDE=" + }, + "kotest-extensions-jvm-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.8.0/kotest-extensions-jvm-5.8.0.module" + ], + "hash": "sha256-wpV8QNsDBwTDwcRQRjRQ/UIfUV2eTf1wFYrglTx7s5I=" + }, + "kotest-extensions-jvm-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.8.0/kotest-extensions-jvm-5.8.0.pom" + ], + "hash": "sha256-Re6YilN1wfy+2zW/KNZcr9vWZlrU7QZiFJn1gaCqeRg=" + } + } + }, + "io.kotest:kotest-framework-api": { + "5.8.0": { + "kotest-framework-api-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.8.0/kotest-framework-api-5.8.0.module" + ], + "hash": "sha256-TU+42fMZlcETUTiSP3OQdtKMbIunjobst56SVTNlm8s=" + }, + "kotest-framework-api-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.8.0/kotest-framework-api-5.8.0.pom" + ], + "hash": "sha256-+KD+31um/dqQJFYdz5/c0bc7KyRU8SgqREdxhtGwJds=" + } + } + }, + "io.kotest:kotest-framework-api-jvm": { + "5.8.0": { + "kotest-framework-api-jvm-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.8.0/kotest-framework-api-jvm-5.8.0.jar" + ], + "hash": "sha256-qzKySHZ6j83ulqOn3rwdS8oVtBB9A6jw7LQ/ChKmYHg=" + }, + "kotest-framework-api-jvm-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.8.0/kotest-framework-api-jvm-5.8.0.module" + ], + "hash": "sha256-+8ACQea/pPB2Y+1k+ZWRcEas3d0oc8pdpZtMuMGmcx8=" + }, + "kotest-framework-api-jvm-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.8.0/kotest-framework-api-jvm-5.8.0.pom" + ], + "hash": "sha256-J1kzQZs8fz9Dd/I4dO2/K2WZKV5+eSRozE2LZkKRnwc=" + } + } + }, + "io.kotest:kotest-framework-concurrency": { + "5.8.0": { + "kotest-framework-concurrency-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.8.0/kotest-framework-concurrency-5.8.0.module" + ], + "hash": "sha256-Apm7rJ+dstNEfQ3B0jD6eduHpEQdgVju876i5DyGU4o=" + }, + "kotest-framework-concurrency-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.8.0/kotest-framework-concurrency-5.8.0.pom" + ], + "hash": "sha256-lVQJ/wP4A216X/ZoVWJ6SDJdZP1ad/zxvjKC9nK4Y9w=" + } + } + }, + "io.kotest:kotest-framework-concurrency-jvm": { + "5.8.0": { + "kotest-framework-concurrency-jvm-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.8.0/kotest-framework-concurrency-jvm-5.8.0.jar" + ], + "hash": "sha256-+jViubehfRCIbZVZFZgFBmg+bUJT/aLZphDHB7ahxTQ=" + }, + "kotest-framework-concurrency-jvm-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.8.0/kotest-framework-concurrency-jvm-5.8.0.module" + ], + "hash": "sha256-EEdRl3IU7bRbbQ5QX1cx8PLESBZE2tSdZAk17mjT6sA=" + }, + "kotest-framework-concurrency-jvm-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.8.0/kotest-framework-concurrency-jvm-5.8.0.pom" + ], + "hash": "sha256-7v7jZcABVNdstQ1A/st6vmJ0VT9/W6oXUuwLa4N7xfc=" + } + } + }, + "io.kotest:kotest-framework-discovery": { + "5.8.0": { + "kotest-framework-discovery-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.8.0/kotest-framework-discovery-5.8.0.module" + ], + "hash": "sha256-VoSDmnX88MjoK7N71Bp/RBct6MW00Ne6UXvrKm+QLOg=" + }, + "kotest-framework-discovery-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.8.0/kotest-framework-discovery-5.8.0.pom" + ], + "hash": "sha256-tMavvBR1+21pVxy6TT5wppDaUpwR7sNtLtd/5x/cuxs=" + } + } + }, + "io.kotest:kotest-framework-discovery-jvm": { + "5.8.0": { + "kotest-framework-discovery-jvm-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.8.0/kotest-framework-discovery-jvm-5.8.0.jar" + ], + "hash": "sha256-lgXMffCmeKx2AWgVHR4MHK5KYLXH4aufDIP90k0Y1Qg=" + }, + "kotest-framework-discovery-jvm-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.8.0/kotest-framework-discovery-jvm-5.8.0.module" + ], + "hash": "sha256-zsbAAen4kumwoVk7VTKweeEZjP7rwX4D7Bh60M4eR7c=" + }, + "kotest-framework-discovery-jvm-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.8.0/kotest-framework-discovery-jvm-5.8.0.pom" + ], + "hash": "sha256-OwQzrfH2hV8edikiq8i9Tw5S+uXEYsi/tI5+fEEe6iQ=" + } + } + }, + "io.kotest:kotest-framework-engine": { + "5.8.0": { + "kotest-framework-engine-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.8.0/kotest-framework-engine-5.8.0.module" + ], + "hash": "sha256-SwIApEo9C8FVvORZmt8/TMeGt8HcqvNN1FkgZ1u95K4=" + }, + "kotest-framework-engine-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.8.0/kotest-framework-engine-5.8.0.pom" + ], + "hash": "sha256-aVRjdWId02iWcTeQVwUA1A3XGWLYjmm3Y9fri84MIf8=" + } + } + }, + "io.kotest:kotest-framework-engine-jvm": { + "5.8.0": { + "kotest-framework-engine-jvm-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.8.0/kotest-framework-engine-jvm-5.8.0.jar" + ], + "hash": "sha256-tO9fOo7j0vcrmnCDW8eLvWM2K1e9Sccpz9yZuILIIp8=" + }, + "kotest-framework-engine-jvm-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.8.0/kotest-framework-engine-jvm-5.8.0.module" + ], + "hash": "sha256-pGoQsAqZT1z+77nV0QNDCXSZ0FsScHbVZjC5LD3R12w=" + }, + "kotest-framework-engine-jvm-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.8.0/kotest-framework-engine-jvm-5.8.0.pom" + ], + "hash": "sha256-jBBwZ6e2xJH/r9wcFw9ny7vwD5kgqfzOB8hMunEc/u8=" + } + } + }, + "io.kotest:kotest-runner-junit5": { + "5.8.0": { + "kotest-runner-junit5-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.8.0/kotest-runner-junit5-5.8.0.module" + ], + "hash": "sha256-y4wLecykG/GoIxOlnv5+EOwDY6xnlXOBdGwPuHl3oTk=" + }, + "kotest-runner-junit5-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.8.0/kotest-runner-junit5-5.8.0.pom" + ], + "hash": "sha256-rlCoYpxGJZocWHMicr7irCRXCMuZYucqI5IhisVYeXQ=" + }, + "kotest-runner-junit5-metadata-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.8.0/kotest-runner-junit5-5.8.0.jar" + ], + "hash": "sha256-GYlbE71A2UxWtFP6A4ZSA6gHc5hxjhGLTC3sVEV//14=" + } + } + }, + "io.kotest:kotest-runner-junit5-jvm": { + "5.8.0": { + "kotest-runner-junit5-jvm-5.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.8.0/kotest-runner-junit5-jvm-5.8.0.jar" + ], + "hash": "sha256-sSz+ck1ROQpTy6yOogFGeAmE79vceaa9Cl1zncSq5/k=" + }, + "kotest-runner-junit5-jvm-5.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.8.0/kotest-runner-junit5-jvm-5.8.0.module" + ], + "hash": "sha256-41YAWlqTPI5YBYxB+3w6MNfc88/oo+pvcseYKR52tf8=" + }, + "kotest-runner-junit5-jvm-5.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.8.0/kotest-runner-junit5-jvm-5.8.0.pom" + ], + "hash": "sha256-PT+RCcm8xoqFPKuUeYqbvjMM4qexQtc6vGiY352Rj68=" + } + } + }, + "net.bytebuddy:byte-buddy": { + "1.10.9": { + "byte-buddy-1.10.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.jar" + ], + "hash": "sha256-B7nKbi+XDLA/SyVlHfHy/OJx1JG0TgQJgniHeG9pLU0=" + }, + "byte-buddy-1.10.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.pom" + ], + "hash": "sha256-QIgdSUiocRWTRicPNpRbwpAlV3xstX9qXdDHwiIGnaw=" + } + } + }, + "net.bytebuddy:byte-buddy-agent": { + "1.10.9": { + "byte-buddy-agent-1.10.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.jar" + ], + "hash": "sha256-+9BS0tTNFvcHVHxGhiHGt/uELH7Ihm0BLsvGF43h85Q=" + }, + "byte-buddy-agent-1.10.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.pom" + ], + "hash": "sha256-GZB0lfvBwjFsjrrXbwe5bRAf6xp+PAm/4VJv0/xu7J0=" + } + } + }, + "net.java.dev.jna:jna": { + "5.9.0": { + "jna-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar" + ], + "hash": "sha256-6vzHgLRFQ008Wuf6L7ZmXeGnVg1TfSxAio6AzRTScWE=" + }, + "jna-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.pom" + ], + "hash": "sha256-a8i4RZFQtZ6VmPPa2a0kWh7yFQ0IJYEBcYTrFj5ZKCk=" + } + } + }, + "net.java.dev.jna:jna-platform": { + "5.9.0": { + "jna-platform-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.jar" + ], + "hash": "sha256-GQO8bYfzq5ICOVe5H0WpyOs1FbrQMDVs6XcgHlFBtyQ=" + }, + "jna-platform-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.pom" + ], + "hash": "sha256-C9pdmOS+kmHwnN+u5vokWYh5CDTX/K3I4v3ZPH1kGCU=" + } + } + }, + "org.apache.ant:ant": { + "1.10.13": { + "ant-1.10.13.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.jar" + ], + "hash": "sha256-vvv8eedE6Yks+n25bfO26C3BfSVxr0KqQnl2/CIpmDg=" + }, + "ant-1.10.13.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.pom" + ], + "hash": "sha256-J5NR7tkLj3QbtIyVvmHD7CRU48ipr7Q7zB0LrB3aE3o=" + } + } + }, + "org.apache.ant:ant-launcher": { + "1.10.13": { + "ant-launcher-1.10.13.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.jar" + ], + "hash": "sha256-zXaVs7+2lkq3G2oLMdrWAAWud/5QITI2Rnmqzwj3eXA=" + }, + "ant-launcher-1.10.13.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.pom" + ], + "hash": "sha256-ApkvvDgFU1bzyU0B6qJJmcsCoJuqnB/fXqx2t8MVY8o=" + } + } + }, + "org.apache.logging.log4j:log4j-api": { + "2.20.0": { + "log4j-api-2.20.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.jar" + ], + "hash": "sha256-L0PupnnqZvFMoPE/7CqGAKwST1pSMdy034OT7dy5dVA=" + }, + "log4j-api-2.20.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.pom" + ], + "hash": "sha256-zUWDKj1s0hlENcDWPKAV8ZSWjy++pPKRVTv3r7hOFjc=" + } + } + }, + "org.apache.logging.log4j:log4j-core": { + "2.20.0": { + "log4j-core-2.20.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.jar" + ], + "hash": "sha256-YTffhIza7Z9NUHb3VRPGyF2oC5U/TnrMo4CYt3B2P1U=" + }, + "log4j-core-2.20.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.pom" + ], + "hash": "sha256-3nGsEAVR9KB3rsrQd70VPnHfeqacMELXZRbMXM4Ice4=" + } + } + }, + "org.apache.maven:maven-model": { + "3.6.3": { + "maven-model-3.6.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" + ], + "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" + }, + "maven-model-3.6.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" + ], + "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" + } + } + }, + "org.apiguardian:apiguardian-api": { + "1.1.2": { + "apiguardian-api-1.1.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar" + ], + "hash": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=" + }, + "apiguardian-api-1.1.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.module" + ], + "hash": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=" + }, + "apiguardian-api-1.1.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.pom" + ], + "hash": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA=" + } + } + }, + "org.codehaus.plexus:plexus-utils": { + "3.5.1": { + "plexus-utils-3.5.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar" + ], + "hash": "sha256-huAlXUyHnGG0gz7X8TEk6LtnnfR967EnMm59t91JoHs=" + }, + "plexus-utils-3.5.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.pom" + ], + "hash": "sha256-lP9o7etIIE0SyZGJx2cWTTqfd4oTctHc4RpBRi5iNvI=" + } + } + }, + "org.gradle:gradle-tooling-api": { + "8.5": { + "gradle-tooling-api-8.5.jar": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.5/gradle-tooling-api-8.5.jar" + ], + "hash": "sha256-Oj8ZrejGJCdtb64e9iYJmyVb+GDi0fNFwVAiuNf18B0=" + }, + "gradle-tooling-api-8.5.module": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.5/gradle-tooling-api-8.5.module" + ], + "hash": "sha256-g/38Gz8vXYtdbkc9J+jUTOVqamjDv14AGVE5pkUk644=" + }, + "gradle-tooling-api-8.5.pom": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.5/gradle-tooling-api-8.5.pom" + ], + "hash": "sha256-W+ZN0cMxohnX1D+uLii9JoDUkeCoKJ73kNaQCLLTJsE=" + } + } + }, + "org.jdom:jdom2": { + "2.0.6.1": { + "jdom2-2.0.6.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.jar" + ], + "hash": "sha256-CyD0XjoP2PDRLNxTFrBndukCsTZdsAEYh2+RdcYPMCw=" + }, + "jdom2-2.0.6.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.pom" + ], + "hash": "sha256-VXleEBi4rmR7k3lnz4EKmbCFgsI3TnhzwShzTIyRS/M=" + } + } + }, + "org.jetbrains.intellij.deps:trove4j": { + "1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + } + }, + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { + "1.9.21": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.9.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.9.21.pom" + ], + "hash": "sha256-wCQ0YBrQ0+FDMzNe3airmdpJvj8luRUMfcYKKLNOiG0=" + } + } + }, + "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin": { + "1.9.21": { + "org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.21/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.21.pom" + ], + "hash": "sha256-X2YbnEx5RUOAoIAaMrsk4CEUhmO8XgbqROPpGcENWtQ=" + } + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions": { + "1.9.21": { + "kotlin-android-extensions-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.21/kotlin-android-extensions-1.9.21.jar" + ], + "hash": "sha256-mAuTI5ni2OX5clLdOx1VZdLZ18TFhMJn+pJE1rTdZrM=" + }, + "kotlin-android-extensions-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.21/kotlin-android-extensions-1.9.21.pom" + ], + "hash": "sha256-4Vb9esK/Oh1ruM9uYn8omYYceWa2WYlOz1rOMsH6uPU=" + } + } + }, + "org.jetbrains.kotlin:kotlin-build-common": { + "1.9.21": { + "kotlin-build-common-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.21/kotlin-build-common-1.9.21.jar" + ], + "hash": "sha256-3bFTJKHCCDYiOyqzGZTzBal/aMC5rex4AthEs8XlN+M=" + }, + "kotlin-build-common-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.21/kotlin-build-common-1.9.21.pom" + ], + "hash": "sha256-usTddaENNRq42KO/gx0yFHCxAhn4rqR7d3SuzVp9Rrc=" + } + } + }, + "org.jetbrains.kotlin:kotlin-build-tools-api": { + "1.9.21": { + "kotlin-build-tools-api-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.21/kotlin-build-tools-api-1.9.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.21/kotlin-build-tools-api-1.9.21.jar" + ], + "hash": "sha256-1iQupx+j2qCwarmTYi7lP7+gBIOxmGAoUmq2BhlDJ4k=" + }, + "kotlin-build-tools-api-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.21/kotlin-build-tools-api-1.9.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.21/kotlin-build-tools-api-1.9.21.pom" + ], + "hash": "sha256-k8DEhPZHtVSzkLcdrUXuWMNbvQ9bgy90DlCm7PFB7Fc=" + } + } + }, + "org.jetbrains.kotlin:kotlin-build-tools-impl": { + "1.9.21": { + "kotlin-build-tools-impl-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.21/kotlin-build-tools-impl-1.9.21.jar" + ], + "hash": "sha256-xQnfuD5Wp+AjYPLY4llbuMxyehKWjXOUJ9WoiK/5QiU=" + }, + "kotlin-build-tools-impl-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.21/kotlin-build-tools-impl-1.9.21.pom" + ], + "hash": "sha256-0fSzorImBj63RyPMeYi1b4OZFOw8z4+PzysU+z7Tl04=" + } + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "1.9.21": { + "kotlin-compiler-embeddable-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.21/kotlin-compiler-embeddable-1.9.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.21/kotlin-compiler-embeddable-1.9.21.jar" + ], + "hash": "sha256-RpBLPT9RZWCkjg2T2ce/xjZQsi2faPejfqteXF8/eFo=" + }, + "kotlin-compiler-embeddable-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.21/kotlin-compiler-embeddable-1.9.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.21/kotlin-compiler-embeddable-1.9.21.pom" + ], + "hash": "sha256-+Q3IdvTzQph+WpujD6aArmTt1IiKYkPMXOTYS9vwscM=" + } + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner": { + "1.9.21": { + "kotlin-compiler-runner-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.21/kotlin-compiler-runner-1.9.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.21/kotlin-compiler-runner-1.9.21.jar" + ], + "hash": "sha256-15SPoqyM9iSj+6p2jxsDu7MQ1dkMV+Bb501rh566Vh8=" + }, + "kotlin-compiler-runner-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.21/kotlin-compiler-runner-1.9.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.21/kotlin-compiler-runner-1.9.21.pom" + ], + "hash": "sha256-yWxA/82dEWVcw6RgXKQpGB5S7zMF412QHXvdS9/yzCM=" + } + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client": { + "1.9.21": { + "kotlin-daemon-client-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.21/kotlin-daemon-client-1.9.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.21/kotlin-daemon-client-1.9.21.jar" + ], + "hash": "sha256-JFdJdm1qh9F+tCbJFXwj5XLI8FI9pnpq+kICvOOrAYw=" + }, + "kotlin-daemon-client-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.21/kotlin-daemon-client-1.9.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.21/kotlin-daemon-client-1.9.21.pom" + ], + "hash": "sha256-Q2I9u3rJy8mtOBbldbM7Jb5IOmzHe9yO0dQo2uuZ5w8=" + } + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "1.9.21": { + "kotlin-daemon-embeddable-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.21/kotlin-daemon-embeddable-1.9.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.21/kotlin-daemon-embeddable-1.9.21.jar" + ], + "hash": "sha256-ARUv+0GwdunFUIPFE+HvBfMDzVqVzt/8uJ4STjQN8R4=" + }, + "kotlin-daemon-embeddable-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.21/kotlin-daemon-embeddable-1.9.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.21/kotlin-daemon-embeddable-1.9.21.pom" + ], + "hash": "sha256-LYnUjseQqQc7s237HnvvV1nuoHMGT4ZWuISvRtEZnXY=" + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin": { + "1.9.21": { + "kotlin-gradle-plugin-1.9.21-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.21/kotlin-gradle-plugin-1.9.21-gradle82.jar" + ], + "hash": "sha256-Rk6rvg8TEh+6R9Ddd9t44EzHEUGO8fo44Fn7rXQBdNU=" + }, + "kotlin-gradle-plugin-1.9.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.21/kotlin-gradle-plugin-1.9.21.module" + ], + "hash": "sha256-IRGsVcoYTydpeFyYlxBNjrSahDeSJi8UdZGyObh8s2I=" + }, + "kotlin-gradle-plugin-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.21/kotlin-gradle-plugin-1.9.21.pom" + ], + "hash": "sha256-xbqNH/3ANOBTfWFCFlYr+oKDgZuXpQe1TEfWr92/9Pc=" + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations": { + "1.9.21": { + "kotlin-gradle-plugin-annotations-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.21/kotlin-gradle-plugin-annotations-1.9.21.jar" + ], + "hash": "sha256-vHHk5IEnHPKtQVDZ9lE087UPqu0ftSCFIXwjLXp6DbQ=" + }, + "kotlin-gradle-plugin-annotations-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.21/kotlin-gradle-plugin-annotations-1.9.21.pom" + ], + "hash": "sha256-WIjmVsteuQ2k6P/ue6kTq070qP/LK06352bEDApIcNE=" + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { + "1.9.21": { + "kotlin-gradle-plugin-api-1.9.21-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.21/kotlin-gradle-plugin-api-1.9.21-gradle82.jar" + ], + "hash": "sha256-8fA4+yuHImPe8G1gqoP0TbfYuHusJJEJ9jvhMvDDB/8=" + }, + "kotlin-gradle-plugin-api-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.21/kotlin-gradle-plugin-api-1.9.21.jar" + ], + "hash": "sha256-8fA4+yuHImPe8G1gqoP0TbfYuHusJJEJ9jvhMvDDB/8=" + }, + "kotlin-gradle-plugin-api-1.9.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.21/kotlin-gradle-plugin-api-1.9.21.module" + ], + "hash": "sha256-3Q/w/LjdD2iqQDhkHUfx0ID82EWokNaPd62IZmg5X8g=" + }, + "kotlin-gradle-plugin-api-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.21/kotlin-gradle-plugin-api-1.9.21.pom" + ], + "hash": "sha256-EHDGnUDsQQjYdMvnwX31G5MVQ/vMFxSL8KFq9BF6j0o=" + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { + "1.9.21": { + "kotlin-gradle-plugin-idea-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.21/kotlin-gradle-plugin-idea-1.9.21.jar" + ], + "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" + }, + "kotlin-gradle-plugin-idea-1.9.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.21/kotlin-gradle-plugin-idea-1.9.21.module" + ], + "hash": "sha256-9wJ2o8nNkyDTXQEyKIguZwwmqOV77yduEgXWLSfIzEg=" + }, + "kotlin-gradle-plugin-idea-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.21/kotlin-gradle-plugin-idea-1.9.21.pom" + ], + "hash": "sha256-i9zuHeTCbdShLcq4+X2zlsp21st9B4xXpeZEkRdEKXo=" + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { + "1.9.21": { + "kotlin-gradle-plugin-idea-proto-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.21/kotlin-gradle-plugin-idea-proto-1.9.21.jar" + ], + "hash": "sha256-65eVj7I1SmwOzcKMNDyWKqQlZOa70GmY22jeWJt6MHM=" + }, + "kotlin-gradle-plugin-idea-proto-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.21/kotlin-gradle-plugin-idea-proto-1.9.21.pom" + ], + "hash": "sha256-4cQb9uDuTO6Ez7LYgFckQzIFgI3mlBhM9LgJHpoEG5o=" + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { + "1.9.21": { + "kotlin-gradle-plugin-model-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.21/kotlin-gradle-plugin-model-1.9.21.jar" + ], + "hash": "sha256-7i/6CkmrvaLh44yCVFGN//DkcYB0gWQOJ59crJMRpC8=" + }, + "kotlin-gradle-plugin-model-1.9.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.21/kotlin-gradle-plugin-model-1.9.21.module" + ], + "hash": "sha256-mM2kiy7nukL7s32FSeA8D7EgVnMAT9qfgWGcmImcbBg=" + }, + "kotlin-gradle-plugin-model-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.21/kotlin-gradle-plugin-model-1.9.21.pom" + ], + "hash": "sha256-Dgzua65viYZz3OIlWweO21YEBrk8w4HhVF1KFQ5pyFM=" + } + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugins-bom": { + "1.9.21": { + "kotlin-gradle-plugins-bom-1.9.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.21/kotlin-gradle-plugins-bom-1.9.21.module" + ], + "hash": "sha256-EHBCRob+7+LpTs1eicV775AAcGnUXR9g78Dw2O4pOtA=" + }, + "kotlin-gradle-plugins-bom-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.21/kotlin-gradle-plugins-bom-1.9.21.pom" + ], + "hash": "sha256-IGoqxYRN9eR9HIhz6DAbs7Ro8c2g4eZP+jqo6cCrTQo=" + } + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { + "1.9.21": { + "kotlin-klib-commonizer-api-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.21/kotlin-klib-commonizer-api-1.9.21.jar" + ], + "hash": "sha256-7rGVGEW/Tu9Jr7UPv4Ss67+rTW0ksP2nAQzk/9xaKVc=" + }, + "kotlin-klib-commonizer-api-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.21/kotlin-klib-commonizer-api-1.9.21.pom" + ], + "hash": "sha256-eBHA/x1mByiNMPvNmUWVDLWsnVZAe1k5UKnXMCm041g=" + } + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { + "1.9.21": { + "kotlin-klib-commonizer-embeddable-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.21/kotlin-klib-commonizer-embeddable-1.9.21.jar" + ], + "hash": "sha256-SLSET083NrXr8Htn8G51fxlvFvMC9Ey4NUfYy39JI6k=" + }, + "kotlin-klib-commonizer-embeddable-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.21/kotlin-klib-commonizer-embeddable-1.9.21.pom" + ], + "hash": "sha256-BlDErTWOgCawbhPNOGGNF8gHgyS+OXqRTKqVdkp8qcU=" + } + } + }, + "org.jetbrains.kotlin:kotlin-native-utils": { + "1.9.21": { + "kotlin-native-utils-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.21/kotlin-native-utils-1.9.21.jar" + ], + "hash": "sha256-YBFPSr2hsnAvaSVu3ITQzx0CaOb07CzHpKAvYGsLgHE=" + }, + "kotlin-native-utils-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.21/kotlin-native-utils-1.9.21.pom" + ], + "hash": "sha256-y1E5uiwJSuU8nsR8yR8iKv0ERoDvwcC+S0ontWU6fZY=" + } + } + }, + "org.jetbrains.kotlin:kotlin-project-model": { + "1.9.21": { + "kotlin-project-model-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.21/kotlin-project-model-1.9.21.jar" + ], + "hash": "sha256-NFOCtgvaQ7whRE+Cj8aD3h86qceKBNV/JhbWJ8XQeCE=" + }, + "kotlin-project-model-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.21/kotlin-project-model-1.9.21.pom" + ], + "hash": "sha256-3QhzM2jeyhQDAFAdjBtFqQScEOESOIJnz+RPrDGqSek=" + } + } + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "1.9.21": { + "kotlin-reflect-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.21/kotlin-reflect-1.9.21.jar" + ], + "hash": "sha256-oTPgSfCk4kllFYJCjhZt5N+slUat9Da2FyEZJV7eUQ8=" + }, + "kotlin-reflect-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.21/kotlin-reflect-1.9.21.pom" + ], + "hash": "sha256-wu93WbdrxNn29SnS8/vBwxpFl8wVhuc6fXqxbRvbtKk=" + } + }, + "1.6.10": { + "kotlin-reflect-1.6.10.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" + ], + "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" + }, + "kotlin-reflect-1.6.10.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" + ], + "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" + } + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "1.9.21": { + "kotlin-script-runtime-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.21/kotlin-script-runtime-1.9.21.jar" + ], + "hash": "sha256-Gxx01Hb/pBmFsLldvnjqUFIGGIn4EG8a5ste4X8yPxk=" + }, + "kotlin-script-runtime-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.21/kotlin-script-runtime-1.9.21.pom" + ], + "hash": "sha256-NA85f5c+0AryWBJV3b865C28zEkvaD8k7cLxKnNQWTM=" + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common": { + "1.9.21": { + "kotlin-scripting-common-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.21/kotlin-scripting-common-1.9.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.21/kotlin-scripting-common-1.9.21.jar" + ], + "hash": "sha256-gDldjWWHmRi7YAHHqXbjwKVKMSqEyaHXNXujnypwUCE=" + }, + "kotlin-scripting-common-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.21/kotlin-scripting-common-1.9.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.21/kotlin-scripting-common-1.9.21.pom" + ], + "hash": "sha256-s/MyBbIae59WBKWGbulYI2XSC0IhCqqHQEw/ChLxvjw=" + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "1.9.21": { + "kotlin-scripting-compiler-embeddable-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.21/kotlin-scripting-compiler-embeddable-1.9.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.21/kotlin-scripting-compiler-embeddable-1.9.21.jar" + ], + "hash": "sha256-CJmtaTYqavXX4woaxmYmzIn1d1twsHU3bEBBd0HEQII=" + }, + "kotlin-scripting-compiler-embeddable-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.21/kotlin-scripting-compiler-embeddable-1.9.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.21/kotlin-scripting-compiler-embeddable-1.9.21.pom" + ], + "hash": "sha256-bjDfDrR1x9tRL+zAwiQOKWIOkHrlEmDx9Jw3x3401PY=" + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { + "1.9.21": { + "kotlin-scripting-compiler-impl-embeddable-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.21/kotlin-scripting-compiler-impl-embeddable-1.9.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.21/kotlin-scripting-compiler-impl-embeddable-1.9.21.jar" + ], + "hash": "sha256-i2XQNYWjCcUjpsBfL5nQtLwm/m8Pjtx34704kivwlUs=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.21/kotlin-scripting-compiler-impl-embeddable-1.9.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.21/kotlin-scripting-compiler-impl-embeddable-1.9.21.pom" + ], + "hash": "sha256-0lJ2Bg5AJ0YL/rgx3/aSD+W5OirfGyxhPGcSW0o1Ql4=" + } + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm": { + "1.9.21": { + "kotlin-scripting-jvm-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.21/kotlin-scripting-jvm-1.9.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.21/kotlin-scripting-jvm-1.9.21.jar" + ], + "hash": "sha256-CRjinugVRB1ZQ7mo5RpI/H/wjxerqlJEOrccDI6rDac=" + }, + "kotlin-scripting-jvm-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.21/kotlin-scripting-jvm-1.9.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.21/kotlin-scripting-jvm-1.9.21.pom" + ], + "hash": "sha256-BougkNsQwD6f8ZeEWthqqgfrBcrgWoDSfiCfdI7iSus=" + } + } + }, + "org.jetbrains.kotlin:kotlin-serialization": { + "1.9.21": { + "kotlin-serialization-1.9.21-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.21/kotlin-serialization-1.9.21-gradle82.jar" + ], + "hash": "sha256-6KCkwaNRR6IxkeNLgvJ/3sMi18A4+c+kKRI7r5sNDto=" + }, + "kotlin-serialization-1.9.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.21/kotlin-serialization-1.9.21.module" + ], + "hash": "sha256-Wmilrdv5YrnGVmZkI/l4CV5Sle59Z945WFXa0r5n39w=" + }, + "kotlin-serialization-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.21/kotlin-serialization-1.9.21.pom" + ], + "hash": "sha256-OZ8CA5hkxdQfrYYicN7R+xLQUcvP8aR5i5scsHpda0U=" + } + } + }, + "org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable": { + "1.9.21": { + "kotlin-serialization-compiler-plugin-embeddable-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.21/kotlin-serialization-compiler-plugin-embeddable-1.9.21.jar" + ], + "hash": "sha256-umkg/m2FBJ08WGSR2xXfBCR5nW2cDOmH/hGIJHacNCs=" + }, + "kotlin-serialization-compiler-plugin-embeddable-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.21/kotlin-serialization-compiler-plugin-embeddable-1.9.21.pom" + ], + "hash": "sha256-6J5ayDc4vF+V53pDaNfnweRrDb4hf0h3lcOvuQ1F3Oc=" + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "1.9.21": { + "kotlin-stdlib-1.9.21-all.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21-all.jar" + ], + "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" + }, + "kotlin-stdlib-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.jar" + ], + "hash": "sha256-O0eTE6tsrqTl4l097oyoDDAsibpz4a9Nr6oQD275KWo=" + }, + "kotlin-stdlib-1.9.21.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.module" + ], + "hash": "sha256-0wGffw1xkkzkcpjJzEavAkX3UhlxmzXFkV+8x+emk5U=" + }, + "kotlin-stdlib-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.pom" + ], + "hash": "sha256-yAfZL3xqobZcBs+HIyNjUE5pD8o/PB4nIGYwoTIv1+A=" + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common": { + "1.9.21": { + "kotlin-stdlib-common-1.9.21.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.21/kotlin-stdlib-common-1.9.21.module" + ], + "hash": "sha256-aNyOhKoF9SeMFlBSR9cTRtNRK57a3UH2E9ZXyUxZmTs=" + }, + "kotlin-stdlib-common-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.21/kotlin-stdlib-common-1.9.21.pom" + ], + "hash": "sha256-d4C4Z7/lc/y7D9H5Jx3aVAEhfG1or5OTV0zYYglX+K4=" + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { + "1.9.21": { + "kotlin-stdlib-jdk7-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.jar" + ], + "hash": "sha256-v+IfQkbIvKNQsYQEBv+803awXto36ypksBHeGMLKeBg=" + }, + "kotlin-stdlib-jdk7-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.pom" + ], + "hash": "sha256-AVFiDhh0XvJ2ECNw/GdHBPcN821kgsxBmh5S263Cg2I=" + } + }, + "1.8.20": { + "kotlin-stdlib-jdk7-1.8.20.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.20/kotlin-stdlib-jdk7-1.8.20.jar" + ], + "hash": "sha256-rx7EDDuVGv3MDCoBc8e4F2PFKBwtW6+/CoVEokxdzAw=" + }, + "kotlin-stdlib-jdk7-1.8.20.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.20/kotlin-stdlib-jdk7-1.8.20.pom" + ], + "hash": "sha256-NiLRBleM3cwKnsIPjOgV9/Sf9UL2QCKNIUH8r4BhawY=" + } + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { + "1.9.21": { + "kotlin-stdlib-jdk8-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.jar" + ], + "hash": "sha256-BwLWS6qpDlxW5GdzeCTJvjreHlFWJHPBQ60DWByVUSc=" + }, + "kotlin-stdlib-jdk8-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.pom" + ], + "hash": "sha256-J79Q6ETwZc0emFT8m8K9pRIrh4ZOoDBL1pW7En0AMvQ=" + } + }, + "1.8.20": { + "kotlin-stdlib-jdk8-1.8.20.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.20/kotlin-stdlib-jdk8-1.8.20.jar" + ], + "hash": "sha256-45i2eXdiJxi/GP+ZtznH2doGDzP7RYouJSAyIcFq8BA=" + }, + "kotlin-stdlib-jdk8-1.8.20.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.20/kotlin-stdlib-jdk8-1.8.20.pom" + ], + "hash": "sha256-OkYiFKM26ZVod2lTGx43sMgdjhDJlJzV6nrh14A6AjI=" + } + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core": { + "1.9.21": { + "kotlin-tooling-core-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.21/kotlin-tooling-core-1.9.21.jar" + ], + "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" + }, + "kotlin-tooling-core-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.21/kotlin-tooling-core-1.9.21.pom" + ], + "hash": "sha256-hKHzMgdZYwgLteu9lKs9gQVZu99nDRLS3XnjSaGEI4M=" + } + } + }, + "org.jetbrains.kotlin:kotlin-util-io": { + "1.9.21": { + "kotlin-util-io-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.21/kotlin-util-io-1.9.21.jar" + ], + "hash": "sha256-P8EzMyn3iN4N7hwaKb04c9IlgYDjHdpjWiBGAjC34Q4=" + }, + "kotlin-util-io-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.21/kotlin-util-io-1.9.21.pom" + ], + "hash": "sha256-rK9/vvUF5Ey8nmeZO8KqrZ93ymxOkEnZaer72OwjUnc=" + } + } + }, + "org.jetbrains.kotlin:kotlin-util-klib": { + "1.9.21": { + "kotlin-util-klib-1.9.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.21/kotlin-util-klib-1.9.21.jar" + ], + "hash": "sha256-7PQPbGslXcZeg2GD9YrXqhXMBdcxSz5Zov5Y1jF7BIM=" + }, + "kotlin-util-klib-1.9.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.21/kotlin-util-klib-1.9.21.pom" + ], + "hash": "sha256-3KeXVmp/RB/79nQgblWaaVboImcnzdBQfnGBFgW3Nyk=" + } + } + }, + "org.jetbrains.kotlinx:atomicfu": { + "0.20.2": { + "atomicfu-0.20.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.20.2/atomicfu-0.20.2.module" + ], + "hash": "sha256-LJleDoPFg+ElcG+6P+hRcAINF6iPidYpSlPNi9fEw4Q=" + }, + "atomicfu-0.20.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.20.2/atomicfu-0.20.2.pom" + ], + "hash": "sha256-fZSYii/6cay7jKEEhQ/sG+Je8YCeOlEPAOvUo8C1vPc=" + }, + "atomicfu-metadata-0.20.2-all.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.20.2/atomicfu-0.20.2-all.jar" + ], + "hash": "sha256-KpHxC4JtP+vEfCtmTiaGFXV8MREUI5eH9dw3SB/exEE=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-bom": { + "1.7.0": { + "kotlinx-coroutines-bom-1.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.7.0/kotlinx-coroutines-bom-1.7.0.pom" + ], + "hash": "sha256-WY3X2oxgqkQgy+8+s6xwUKuji6Ynq5xdTu+ksMgQr8w=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "1.7.0": { + "kotlinx-coroutines-core-1.7.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.7.0/kotlinx-coroutines-core-1.7.0.module" + ], + "hash": "sha256-n21XLOrFbkV4s4h/3hLAHOKYibXNpSPsNIqSXc2+qZI=" + }, + "kotlinx-coroutines-core-1.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.7.0/kotlinx-coroutines-core-1.7.0.pom" + ], + "hash": "sha256-E1iv5pE8h9Un+jQ+Ad3kIDiZ4gE13jj33zwtDeAJ7OI=" + }, + "kotlinx-coroutines-core-metadata-1.7.0-all.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.7.0/kotlinx-coroutines-core-1.7.0-all.jar" + ], + "hash": "sha256-SzP+4RJApy09ahrYdoe4nFqg36fCf0hq/a+CLlFebgI=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "1.7.0": { + "kotlinx-coroutines-core-jvm-1.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.7.0/kotlinx-coroutines-core-jvm-1.7.0.jar" + ], + "hash": "sha256-mjLFuoq9+mNhd43BLttW/XqTlyDuXnP1sYs7SrIRf2g=" + }, + "kotlinx-coroutines-core-jvm-1.7.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.7.0/kotlinx-coroutines-core-jvm-1.7.0.module" + ], + "hash": "sha256-NFJm0ScvnG9xgF4ubUVe5czFaNeDJ1orJGRDmkYCc8Y=" + }, + "kotlinx-coroutines-core-jvm-1.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.7.0/kotlinx-coroutines-core-jvm-1.7.0.pom" + ], + "hash": "sha256-oqv7p/IwThNAmiXGNPLrXvc9B1L9IhXpAEVrm9ld6so=" + } + }, + "1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-debug": { + "1.7.0": { + "kotlinx-coroutines-debug-1.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.7.0/kotlinx-coroutines-debug-1.7.0.jar" + ], + "hash": "sha256-WM/H+2DJJtIIePpyVyjF6AM6HWVOXH7qRT8sT0L6jJ4=" + }, + "kotlinx-coroutines-debug-1.7.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.7.0/kotlinx-coroutines-debug-1.7.0.module" + ], + "hash": "sha256-1hdAUkSV1JJCpOl8rtJPbCR2u9nbmT7kviY3uwJBzNY=" + }, + "kotlinx-coroutines-debug-1.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.7.0/kotlinx-coroutines-debug-1.7.0.pom" + ], + "hash": "sha256-j9+CQuYPKx2144mjjZWFuseH6i7+T7sZ+k0BnhGz+Ig=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8": { + "1.7.0": { + "kotlinx-coroutines-jdk8-1.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.0/kotlinx-coroutines-jdk8-1.7.0.jar" + ], + "hash": "sha256-25ZqpOtiwHdgb2p18zGYqq2aVFPPNnZbUBA1V+pmc3Y=" + }, + "kotlinx-coroutines-jdk8-1.7.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.0/kotlinx-coroutines-jdk8-1.7.0.module" + ], + "hash": "sha256-85ejgGeodi5Gr9CmOfnfb1g/K4VdKV8zEuf3HdXB5Hg=" + }, + "kotlinx-coroutines-jdk8-1.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.0/kotlinx-coroutines-jdk8-1.7.0.pom" + ], + "hash": "sha256-lMLrex8gLrkdM0ZpG3AZXgoKbMEmV0Zhgavi8U/Tp2E=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-test": { + "1.7.0": { + "kotlinx-coroutines-test-1.7.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.7.0/kotlinx-coroutines-test-1.7.0.module" + ], + "hash": "sha256-y4+jJ/bglXNPwfip89e7GTV1CbUhqA1evGJARGphMR0=" + }, + "kotlinx-coroutines-test-1.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.7.0/kotlinx-coroutines-test-1.7.0.pom" + ], + "hash": "sha256-SEbzdW1rgJqopbdHQFyNXM1d6BOvSaHHc3brlGBp7MY=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm": { + "1.7.0": { + "kotlinx-coroutines-test-jvm-1.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.7.0/kotlinx-coroutines-test-jvm-1.7.0.jar" + ], + "hash": "sha256-D9ufoLwCroMc0qQeS48HADuHtE2p9Kevs/Y9sGFsFn8=" + }, + "kotlinx-coroutines-test-jvm-1.7.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.7.0/kotlinx-coroutines-test-jvm-1.7.0.module" + ], + "hash": "sha256-vUvlmdpi7lcbe52ZODCaJ85kRwIvt66dyu57DyPV8Ls=" + }, + "kotlinx-coroutines-test-jvm-1.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.7.0/kotlinx-coroutines-test-jvm-1.7.0.pom" + ], + "hash": "sha256-ueAq33wWqg6C2qPNoRP+ynruT5GAkDgBWQ1qr4y3S7I=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-bom": { + "1.6.2": { + "kotlinx-serialization-bom-1.6.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.2/kotlinx-serialization-bom-1.6.2.pom" + ], + "hash": "sha256-ew4dde6GIUmc+VQwyhL9qjL0p/kg1cMBv+lfoYfyczc=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-core": { + "1.6.2": { + "kotlinx-serialization-core-1.6.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.module" + ], + "hash": "sha256-arz0gTrJTfA3AS4xZzaKNEUHD9+OqyHQjYhtTtnC+2c=" + }, + "kotlinx-serialization-core-1.6.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.pom" + ], + "hash": "sha256-BibddZLIUwKToOPoHgiBltNRh3o422hHaTY3S6ZJ+S8=" + }, + "kotlinx-serialization-core-metadata-1.6.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.jar" + ], + "hash": "sha256-LlMCArumM8WrMeRvn/nNrZufTNTAchYLIDX+y/+AMxc=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-core-jvm": { + "1.6.2": { + "kotlinx-serialization-core-jvm-1.6.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.2/kotlinx-serialization-core-jvm-1.6.2.jar" + ], + "hash": "sha256-jm/AThou/SrLvFUDodydmIFm+Z5PH1Hva5HDpSB3vbE=" + }, + "kotlinx-serialization-core-jvm-1.6.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.2/kotlinx-serialization-core-jvm-1.6.2.module" + ], + "hash": "sha256-oRSjT2SjAnNkMqWOCOY8qehpWy6CtycO+ltm4Bpm4DI=" + }, + "kotlinx-serialization-core-jvm-1.6.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.2/kotlinx-serialization-core-jvm-1.6.2.pom" + ], + "hash": "sha256-aPgoyUU6M3xuhNv+f9BDZxrGWpRBfRShKMfRIG+q+v0=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-json": { + "1.6.2": { + "kotlinx-serialization-json-1.6.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.2/kotlinx-serialization-json-1.6.2.module" + ], + "hash": "sha256-3bDwQzG0A0QOP8lYxGG/HuS46Ox5heeIXjG5/aR4AWw=" + }, + "kotlinx-serialization-json-1.6.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.2/kotlinx-serialization-json-1.6.2.pom" + ], + "hash": "sha256-I+ukBlWEzmzf1oQzgWOSADm1DcTaH/HNRYFLanatyik=" + }, + "kotlinx-serialization-json-metadata-1.6.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.2/kotlinx-serialization-json-1.6.2.jar" + ], + "hash": "sha256-5aPp/LlGmtxOJULWiHSMZg/ucPlG+lZP3eJTPcRk4Gs=" + } + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-json-jvm": { + "1.6.2": { + "kotlinx-serialization-json-jvm-1.6.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.2/kotlinx-serialization-json-jvm-1.6.2.jar" + ], + "hash": "sha256-jScYuwQugwsSt/sQrybQ+6Q94fH5/+CmsTHU0lGqwsw=" + }, + "kotlinx-serialization-json-jvm-1.6.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.2/kotlinx-serialization-json-jvm-1.6.2.module" + ], + "hash": "sha256-EPn2v5KQC0WH3hV5eknGnx/dX311ctOANX/UbwzcSPo=" + }, + "kotlinx-serialization-json-jvm-1.6.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.2/kotlinx-serialization-json-jvm-1.6.2.pom" + ], + "hash": "sha256-E2cHdYMiLPDCDYiqFMAFBjYA0WDnXdvJGa4+g6AsPmo=" + } + } + }, + "org.jetbrains:annotations": { + "23.0.0": { + "annotations-23.0.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.jar" + ], + "hash": "sha256-ew8ZckCCy/y8ZuWr6iubySzwih6hHhkZM+1DgB6zzQU=" + }, + "annotations-23.0.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom" + ], + "hash": "sha256-yUkPZVEyMo3yz7z990P1P8ORbWwdEENxdabKbjpndxw=" + } }, - "dependencies": { - "settings": [], - "plugin": [ - { - "id": { - "group": "com.fasterxml", - "name": "oss-parent", - "version": "41", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-41.pom", - "path": "com/fasterxml/oss-parent/41", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/oss-parent/41/oss-parent-41.pom" - ], - "sha256": "af650fa4dd400bc5769320bcef08ed93813f349cabe8213d469acafbbd945d8a" - }, - { - "id": { - "group": "com.fasterxml.jackson", - "name": "jackson-base", - "version": "2.12.1", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-base-2.12.1.pom", - "path": "com/fasterxml/jackson/jackson-base/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-base/2.12.1/jackson-base-2.12.1.pom" - ], - "sha256": "93a8c78755a31977508021dbb3883c0dd740a06bb1c67ff4942e096c132419f5" - }, - { - "id": { - "group": "com.fasterxml.jackson", - "name": "jackson-bom", - "version": "2.12.1", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-bom-2.12.1.pom", - "path": "com/fasterxml/jackson/jackson-bom/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.12.1/jackson-bom-2.12.1.pom" - ], - "sha256": "083b20a4231bb0516d6e1a08248c9fbce473583a122a07fd2e0eadeff6908a38" - }, - { - "id": { - "group": "com.fasterxml.jackson", - "name": "jackson-parent", - "version": "2.12", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-parent-2.12.pom", - "path": "com/fasterxml/jackson/jackson-parent/2.12", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.12/jackson-parent-2.12.pom" - ], - "sha256": "Z749r6r4zhcX56fefbkrpDPfkjtpekDJdDpUzJ/FNjc=" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-annotations", - "version": "2.12.1", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-annotations-2.12.1.jar", - "path": "com/fasterxml/jackson/core/jackson-annotations/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.12.1/jackson-annotations-2.12.1.jar" - ], - "sha256": "203cefdfa6c81e6aa84e11f292f29ca97344a3c3bc0293abea065cd837592873" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-annotations", - "version": "2.12.1", - "type": "module", - "extension": "module" - }, - "name": "jackson-annotations-2.12.1.module", - "path": "com/fasterxml/jackson/core/jackson-annotations/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.12.1/jackson-annotations-2.12.1.module" - ], - "sha256": "93a1d3d9c8d1d694431057ccbe9730e032921b1b2b166b1570017da1eeb6483e" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-annotations", - "version": "2.12.1", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-annotations-2.12.1.pom", - "path": "com/fasterxml/jackson/core/jackson-annotations/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.12.1/jackson-annotations-2.12.1.pom" - ], - "sha256": "3e0c5721fb26be732ccdf13db1c59dfeee0a6db269ebcc7507ead1c763a6108b" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-core", - "version": "2.12.1", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-core-2.12.1.jar", - "path": "com/fasterxml/jackson/core/jackson-core/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.12.1/jackson-core-2.12.1.jar" - ], - "sha256": "cc899cb6eae0c80b87d590eea86528797369cc4feb7b79463207d6bb18f0c257" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-core", - "version": "2.12.1", - "type": "module", - "extension": "module" - }, - "name": "jackson-core-2.12.1.module", - "path": "com/fasterxml/jackson/core/jackson-core/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.12.1/jackson-core-2.12.1.module" - ], - "sha256": "7e4c0c921ccee0b555f0f5b36fd86707b4e556de5b02f3e6bfc315bc3fcd6fc4" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-core", - "version": "2.12.1", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-core-2.12.1.pom", - "path": "com/fasterxml/jackson/core/jackson-core/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.12.1/jackson-core-2.12.1.pom" - ], - "sha256": "4d09b42b2adcfe5ca73f541e42d1e36a8bf483594df09c43ba8d31eb67e04626" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-databind", - "version": "2.12.1", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-databind-2.12.1.jar", - "path": "com/fasterxml/jackson/core/jackson-databind/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.12.1/jackson-databind-2.12.1.jar" - ], - "sha256": "f2ca3c28ebded59c98447d51afe945323df961540af66a063c015597af936aa0" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-databind", - "version": "2.12.1", - "type": "module", - "extension": "module" - }, - "name": "jackson-databind-2.12.1.module", - "path": "com/fasterxml/jackson/core/jackson-databind/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.12.1/jackson-databind-2.12.1.module" - ], - "sha256": "b493b42a9c95eebb3059e030d598005ebe5bed153cbd01c0dfccc814a0c37890" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-databind", - "version": "2.12.1", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-databind-2.12.1.pom", - "path": "com/fasterxml/jackson/core/jackson-databind/2.12.1", - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.12.1/jackson-databind-2.12.1.pom" - ], - "sha256": "98926399d5072408c20cd63063fbe29cf0923fc5061a3a56d6987f4dff6fa223" - }, - { - "id": { - "group": "com.github.gundy", - "name": "semver4j", - "version": "0.16.4", - "type": "jar", - "extension": "jar" - }, - "name": "semver4j-0.16.4.jar", - "path": "com/github/gundy/semver4j/0.16.4", - "urls": [ - "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.jar" - ], - "sha256": "def9b4225fa37219e18f81d01f0e52d73dca1257a38f5475be9dd58f87736510" - }, - { - "id": { - "group": "com.github.gundy", - "name": "semver4j", - "version": "0.16.4", - "type": "pom", - "extension": "pom" - }, - "name": "semver4j-0.16.4.pom", - "path": "com/github/gundy/semver4j/0.16.4", - "urls": [ - "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom" - ], - "sha256": "32001db2443b339dd21f5b79ff29d1ade722d1ba080c214bde819f0f72d1604d" - }, - { - "id": { - "group": "com.github.jengelman.gradle.plugins", - "name": "shadow", - "version": "6.1.0", - "type": "jar", - "extension": "jar" - }, - "name": "shadow-6.1.0.jar", - "path": "com/github/jengelman/gradle/plugins/shadow/6.1.0", - "urls": [ - "https://plugins.gradle.org/m2/com/github/jengelman/gradle/plugins/shadow/6.1.0/shadow-6.1.0.jar" - ], - "sha256": "b66cb33a1d204ffaa1ba67393bdddbe9ff517f24f4438d11c341423868759aa3" - }, - { - "id": { - "group": "com.github.jengelman.gradle.plugins", - "name": "shadow", - "version": "6.1.0", - "type": "pom", - "extension": "pom" - }, - "name": "shadow-6.1.0.pom", - "path": "com/github/jengelman/gradle/plugins/shadow/6.1.0", - "urls": [ - "https://plugins.gradle.org/m2/com/github/jengelman/gradle/plugins/shadow/6.1.0/shadow-6.1.0.pom" - ], - "sha256": "d40c29bce31762b6c8539a87d2515324f44db9d7d579a5aa7016a15ce164abb8" - }, - { - "id": { - "group": "com.github.johnrengelman.shadow", - "name": "com.github.johnrengelman.shadow.gradle.plugin", - "version": "6.1.0", - "type": "pom", - "extension": "pom" - }, - "name": "com.github.johnrengelman.shadow.gradle.plugin-6.1.0.pom", - "path": "com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/6.1.0", - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/6.1.0/com.github.johnrengelman.shadow.gradle.plugin-6.1.0.pom" - ], - "sha256": "d79cec882e8f6870d9872bc10d1a4f80630308b64a91ba0630cd5e1fb4dfd05b" - }, - { - "id": { - "group": "com.google.code.gson", - "name": "gson", - "version": "2.8.6", - "type": "jar", - "extension": "jar" - }, - "name": "gson-2.8.6.jar", - "path": "com/google/code/gson/gson/2.8.6", - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar" - ], - "sha256": "c8fb4839054d280b3033f800d1f5a97de2f028eb8ba2eb458ad287e536f3f25f" - }, - { - "id": { - "group": "com.google.code.gson", - "name": "gson", - "version": "2.8.6", - "type": "pom", - "extension": "pom" - }, - "name": "gson-2.8.6.pom", - "path": "com/google/code/gson/gson/2.8.6", - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.6/gson-2.8.6.pom" - ], - "sha256": "2174415a647332d30fda04bd1cfc708a3ecc84eaf7517f596188d8244e103911" - }, - { - "id": { - "group": "com.google.code.gson", - "name": "gson-parent", - "version": "2.8.6", - "type": "pom", - "extension": "pom" - }, - "name": "gson-parent-2.8.6.pom", - "path": "com/google/code/gson/gson-parent/2.8.6", - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.6/gson-parent-2.8.6.pom" - ], - "sha256": "3736463859ec19267295e894940ae82a8f684413031122fe35ce7cff7e30a774" - }, - { - "id": { - "group": "commons-io", - "name": "commons-io", - "version": "2.6", - "type": "jar", - "extension": "jar" - }, - "name": "commons-io-2.6.jar", - "path": "commons-io/commons-io/2.6", - "urls": [ - "https://plugins.gradle.org/m2/commons-io/commons-io/2.6/commons-io-2.6.jar" - ], - "sha256": "f877d304660ac2a142f3865badfc971dec7ed73c747c7f8d5d2f5139ca736513" - }, - { - "id": { - "group": "commons-io", - "name": "commons-io", - "version": "2.6", - "type": "pom", - "extension": "pom" - }, - "name": "commons-io-2.6.pom", - "path": "commons-io/commons-io/2.6", - "urls": [ - "https://plugins.gradle.org/m2/commons-io/commons-io/2.6/commons-io-2.6.pom" - ], - "sha256": "0c23863893a2291f5a7afdbd8d15923b3948afd87e563fa341cdcf6eae338a60" - }, - { - "id": { - "group": "de.undercouch", - "name": "gradle-download-task", - "version": "4.0.2", - "type": "jar", - "extension": "jar" - }, - "name": "gradle-download-task-4.0.2.jar", - "path": "de/undercouch/gradle-download-task/4.0.2", - "urls": [ - "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.0.2/gradle-download-task-4.0.2.jar" - ], - "sha256": "952cbfcc5f21beeccb5925cc5ba648af09839258441dd44d087d64a57d34e87a" - }, - { - "id": { - "group": "de.undercouch", - "name": "gradle-download-task", - "version": "4.0.2", - "type": "pom", - "extension": "pom" - }, - "name": "gradle-download-task-4.0.2.pom", - "path": "de/undercouch/gradle-download-task/4.0.2", - "urls": [ - "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.0.2/gradle-download-task-4.0.2.pom" - ], - "sha256": "62f29168dc2ffb580c44aa6021f655051a9cb0a48dfd47bc7e4e8ca6f963adb0" - }, - { - "id": { - "group": "org.ajoberstar", - "name": "gradle-stutter", - "version": "0.6.0", - "type": "jar", - "extension": "jar" - }, - "name": "gradle-stutter-0.6.0.jar", - "path": "org/ajoberstar/gradle-stutter/0.6.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ajoberstar/gradle-stutter/0.6.0/gradle-stutter-0.6.0.jar" - ], - "sha256": "27ac40f7513f64cd6d7dd99772c0421cd74dfd806a0640be490ffb916ca55c4b" - }, - { - "id": { - "group": "org.ajoberstar", - "name": "gradle-stutter", - "version": "0.6.0", - "type": "module", - "extension": "module" - }, - "name": "gradle-stutter-0.6.0.module", - "path": "org/ajoberstar/gradle-stutter/0.6.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ajoberstar/gradle-stutter/0.6.0/gradle-stutter-0.6.0.module" - ], - "sha256": "7bf156a3df907eea5f750fe4ad0204878a18344da4fd65577c1e8f1c97f1283e" - }, - { - "id": { - "group": "org.ajoberstar", - "name": "gradle-stutter", - "version": "0.6.0", - "type": "pom", - "extension": "pom" - }, - "name": "gradle-stutter-0.6.0.pom", - "path": "org/ajoberstar/gradle-stutter/0.6.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ajoberstar/gradle-stutter/0.6.0/gradle-stutter-0.6.0.pom" - ], - "sha256": "922bdc7c248513eec71d297e24834639e0a58289db0a2eea1939c024c867df78" - }, - { - "id": { - "group": "org.ajoberstar.stutter", - "name": "org.ajoberstar.stutter.gradle.plugin", - "version": "0.6.0", - "type": "pom", - "extension": "pom" - }, - "name": "org.ajoberstar.stutter.gradle.plugin-0.6.0.pom", - "path": "org/ajoberstar/stutter/org.ajoberstar.stutter.gradle.plugin/0.6.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ajoberstar/stutter/org.ajoberstar.stutter.gradle.plugin/0.6.0/org.ajoberstar.stutter.gradle.plugin-0.6.0.pom" - ], - "sha256": "01d22d2dcf4a29cc82c525edf00bfd42942c7ef3374595fd181165e534846179" - }, - { - "id": { - "group": "org.antlr", - "name": "antlr4-master", - "version": "4.5.2-1", - "type": "pom", - "extension": "pom" - }, - "name": "antlr4-master-4.5.2-1.pom", - "path": "org/antlr/antlr4-master/4.5.2-1", - "urls": [ - "https://plugins.gradle.org/m2/org/antlr/antlr4-master/4.5.2-1/antlr4-master-4.5.2-1.pom" - ], - "sha256": "5358b478d82555ab57afd7fc7231d603b40f977be7ca39f40c5ec54e767eb674" - }, - { - "id": { - "group": "org.antlr", - "name": "antlr4-runtime", - "version": "4.5.2-1", - "type": "jar", - "extension": "jar" - }, - "name": "antlr4-runtime-4.5.2-1.jar", - "path": "org/antlr/antlr4-runtime/4.5.2-1", - "urls": [ - "https://plugins.gradle.org/m2/org/antlr/antlr4-runtime/4.5.2-1/antlr4-runtime-4.5.2-1.jar" - ], - "sha256": "e831413004bceed7d915c3a175927b1daabc4974b7b8a6f87bbce886d3550398" - }, - { - "id": { - "group": "org.antlr", - "name": "antlr4-runtime", - "version": "4.5.2-1", - "type": "pom", - "extension": "pom" - }, - "name": "antlr4-runtime-4.5.2-1.pom", - "path": "org/antlr/antlr4-runtime/4.5.2-1", - "urls": [ - "https://plugins.gradle.org/m2/org/antlr/antlr4-runtime/4.5.2-1/antlr4-runtime-4.5.2-1.pom" - ], - "sha256": "93bac9b6bc714d559904ed43242782a8cbe543cebf0104bb3ecc1786a9cb661e" - }, - { - "id": { - "group": "org.apache", - "name": "apache", - "version": "18", - "type": "pom", - "extension": "pom" - }, - "name": "apache-18.pom", - "path": "org/apache/apache/18", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/18/apache-18.pom" - ], - "sha256": "7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17" - }, - { - "id": { - "group": "org.apache", - "name": "apache", - "version": "21", - "type": "pom", - "extension": "pom" - }, - "name": "apache-21.pom", - "path": "org/apache/apache/21", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom" - ], - "sha256": "af10c108da014f17cafac7b52b2b4b5a3a1c18265fa2af97a325d9143537b380" - }, - { - "id": { - "group": "org.apache.ant", - "name": "ant", - "version": "1.9.7", - "type": "jar", - "extension": "jar" - }, - "name": "ant-1.9.7.jar", - "path": "org/apache/ant/ant/1.9.7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant/1.9.7/ant-1.9.7.jar" - ], - "sha256": "9a5dbe3f5f2cb91854c8682cab80178afa412ab35a5ab718bf39ce01b3435d93" - }, - { - "id": { - "group": "org.apache.ant", - "name": "ant", - "version": "1.9.7", - "type": "pom", - "extension": "pom" - }, - "name": "ant-1.9.7.pom", - "path": "org/apache/ant/ant/1.9.7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant/1.9.7/ant-1.9.7.pom" - ], - "sha256": "1b9fbd4f325a71e99b279080d63084f12d884d42081af298f9e553e1fe0cd74a" - }, - { - "id": { - "group": "org.apache.ant", - "name": "ant-launcher", - "version": "1.9.7", - "type": "jar", - "extension": "jar" - }, - "name": "ant-launcher-1.9.7.jar", - "path": "org/apache/ant/ant-launcher/1.9.7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.9.7/ant-launcher-1.9.7.jar" - ], - "sha256": "bc376f6d6cb586229f451ac459faf1443b144c26d6647618ec9cba60e54c2b79" - }, - { - "id": { - "group": "org.apache.ant", - "name": "ant-launcher", - "version": "1.9.7", - "type": "pom", - "extension": "pom" - }, - "name": "ant-launcher-1.9.7.pom", - "path": "org/apache/ant/ant-launcher/1.9.7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.9.7/ant-launcher-1.9.7.pom" - ], - "sha256": "d7bcdd3ab0ff55edbe1b96d06f06dac2135ec63b5a7c32cef3a436b49c9eee27" - }, - { - "id": { - "group": "org.apache.ant", - "name": "ant-parent", - "version": "1.9.7", - "type": "pom", - "extension": "pom" - }, - "name": "ant-parent-1.9.7.pom", - "path": "org/apache/ant/ant-parent/1.9.7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-parent/1.9.7/ant-parent-1.9.7.pom" - ], - "sha256": "75d2cef64c65ccbdd2faf7261e53b444778d56d338763154e30fada4a41d1215" - }, - { - "id": { - "group": "org.apache.commons", - "name": "commons-parent", - "version": "42", - "type": "pom", - "extension": "pom" - }, - "name": "commons-parent-42.pom", - "path": "org/apache/commons/commons-parent/42", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/42/commons-parent-42.pom" - ], - "sha256": "cd313494c670b483ec256972af1698b330e598f807002354eb765479f604b09c" - }, - { - "id": { - "group": "org.apache.logging.log4j", - "name": "log4j", - "version": "2.13.3", - "type": "pom", - "extension": "pom" - }, - "name": "log4j-2.13.3.pom", - "path": "org/apache/logging/log4j/log4j/2.13.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j/2.13.3/log4j-2.13.3.pom" - ], - "sha256": "674f1fa5165b9d48935f4103d9316fe5b161dff6f9be904a6edb9baa33da4480" - }, - { - "id": { - "group": "org.apache.logging.log4j", - "name": "log4j-api", - "version": "2.13.3", - "type": "jar", - "extension": "jar" - }, - "name": "log4j-api-2.13.3.jar", - "path": "org/apache/logging/log4j/log4j-api/2.13.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar" - ], - "sha256": "2b4b1965c9dce7f3732a0fbf5c8493199c1e6bf8cf65c3e235b57d98da5f36af" - }, - { - "id": { - "group": "org.apache.logging.log4j", - "name": "log4j-api", - "version": "2.13.3", - "type": "pom", - "extension": "pom" - }, - "name": "log4j-api-2.13.3.pom", - "path": "org/apache/logging/log4j/log4j-api/2.13.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.pom" - ], - "sha256": "5953807d4e4fd4d7ae8087b5a76660236e55e718fcad62cf8a7adedc2ddc5a6e" - }, - { - "id": { - "group": "org.apache.logging.log4j", - "name": "log4j-core", - "version": "2.13.3", - "type": "jar", - "extension": "jar" - }, - "name": "log4j-core-2.13.3.jar", - "path": "org/apache/logging/log4j/log4j-core/2.13.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.13.3/log4j-core-2.13.3.jar" - ], - "sha256": "9529c55814264ab96b0eeba2920ac0805170969c994cc479bd3d4d7eb24a35a8" - }, - { - "id": { - "group": "org.apache.logging.log4j", - "name": "log4j-core", - "version": "2.13.3", - "type": "pom", - "extension": "pom" - }, - "name": "log4j-core-2.13.3.pom", - "path": "org/apache/logging/log4j/log4j-core/2.13.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.13.3/log4j-core-2.13.3.pom" - ], - "sha256": "ec5592381a9b37e5054a91fcaf79e3c2c4582eee3574d9ad8a022afbd5b5a3fb" - }, - { - "id": { - "group": "org.codehaus.plexus", - "name": "plexus", - "version": "4.0", - "type": "pom", - "extension": "pom" - }, - "name": "plexus-4.0.pom", - "path": "org/codehaus/plexus/plexus/4.0", - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus/4.0/plexus-4.0.pom" - ], - "sha256": "0a1b692d7fcc90d6a45dae2e50f4660d48f7a44504f174aa60ef34fbe1327f6a" - }, - { - "id": { - "group": "org.codehaus.plexus", - "name": "plexus-utils", - "version": "3.0.24", - "type": "jar", - "extension": "jar" - }, - "name": "plexus-utils-3.0.24.jar", - "path": "org/codehaus/plexus/plexus-utils/3.0.24", - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.0.24/plexus-utils-3.0.24.jar" - ], - "sha256": "83ee748b12d06afb0ad4050a591132b3e8025fbb1990f1ed002e8b73293e69b4" - }, - { - "id": { - "group": "org.codehaus.plexus", - "name": "plexus-utils", - "version": "3.0.24", - "type": "pom", - "extension": "pom" - }, - "name": "plexus-utils-3.0.24.pom", - "path": "org/codehaus/plexus/plexus-utils/3.0.24", - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.0.24/plexus-utils-3.0.24.pom" - ], - "sha256": "11067f6a75fded12bcdc8daf7a66ddd942ce289c3daf88a3fe0f8b12858a2ee6" - }, - { - "id": { - "group": "org.gradle.kotlin", - "name": "gradle-kotlin-dsl-plugins", - "version": "1.4.9", - "type": "jar", - "extension": "jar" - }, - "name": "gradle-kotlin-dsl-plugins-1.4.9.jar", - "path": "org/gradle/kotlin/gradle-kotlin-dsl-plugins/1.4.9", - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/1.4.9/gradle-kotlin-dsl-plugins-1.4.9.jar" - ], - "sha256": "f4e33bcad51373112211214bc697845a09b18c98a55b809208a111c43cf84518" - }, - { - "id": { - "group": "org.gradle.kotlin", - "name": "gradle-kotlin-dsl-plugins", - "version": "1.4.9", - "type": "pom", - "extension": "pom" - }, - "name": "gradle-kotlin-dsl-plugins-1.4.9.pom", - "path": "org/gradle/kotlin/gradle-kotlin-dsl-plugins/1.4.9", - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/1.4.9/gradle-kotlin-dsl-plugins-1.4.9.pom" - ], - "sha256": "4b4b16e7262fdde7198f56f791093f45730c14690348a7df369e8b97e85b1cdc" - }, - { - "id": { - "group": "org.gradle.kotlin.embedded-kotlin", - "name": "org.gradle.kotlin.embedded-kotlin.gradle.plugin", - "version": "1.4.9", - "type": "pom", - "extension": "pom" - }, - "name": "org.gradle.kotlin.embedded-kotlin.gradle.plugin-1.4.9.pom", - "path": "org/gradle/kotlin/embedded-kotlin/org.gradle.kotlin.embedded-kotlin.gradle.plugin/1.4.9", - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/embedded-kotlin/org.gradle.kotlin.embedded-kotlin.gradle.plugin/1.4.9/org.gradle.kotlin.embedded-kotlin.gradle.plugin-1.4.9.pom" - ], - "sha256": "51e1afae96c56e1e3fee061f494cb80b25b41be5379edf6b672475742fb94113" - }, - { - "id": { - "group": "org.gradle.kotlin.kotlin-dsl", - "name": "org.gradle.kotlin.kotlin-dsl.gradle.plugin", - "version": "1.4.9", - "type": "pom", - "extension": "pom" - }, - "name": "org.gradle.kotlin.kotlin-dsl.gradle.plugin-1.4.9.pom", - "path": "org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/1.4.9", - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/1.4.9/org.gradle.kotlin.kotlin-dsl.gradle.plugin-1.4.9.pom" - ], - "sha256": "65e5554f499ed7febe043f2739aa771bc9b9885cd251528fc48c516fea30d0a0" - }, - { - "id": { - "group": "org.jdom", - "name": "jdom2", - "version": "2.0.6", - "type": "jar", - "extension": "jar" - }, - "name": "jdom2-2.0.6.jar", - "path": "org/jdom/jdom2/2.0.6", - "urls": [ - "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar" - ], - "sha256": "1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5" - }, - { - "id": { - "group": "org.jdom", - "name": "jdom2", - "version": "2.0.6", - "type": "pom", - "extension": "pom" - }, - "name": "jdom2-2.0.6.pom", - "path": "org/jdom/jdom2/2.0.6", - "urls": [ - "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom" - ], - "sha256": "47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d" - }, - { - "id": { - "group": "org.jetbrains", - "name": "annotations", - "version": "13.0", - "type": "jar", - "extension": "jar" - }, - "name": "annotations-13.0.jar", - "path": "org/jetbrains/annotations/13.0", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "sha256": "ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478" - }, - { - "id": { - "group": "org.jetbrains", - "name": "annotations", - "version": "13.0", - "type": "pom", - "extension": "pom" - }, - "name": "annotations-13.0.pom", - "path": "org/jetbrains/annotations/13.0", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "sha256": "965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397" - }, - { - "id": { - "group": "org.jetbrains.intellij.deps", - "name": "trove4j", - "version": "1.0.20181211", - "type": "jar", - "extension": "jar" - }, - "name": "trove4j-1.0.20181211.jar", - "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.jar" - ], - "sha256": "affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601" - }, - { - "id": { - "group": "org.jetbrains.intellij.deps", - "name": "trove4j", - "version": "1.0.20181211", - "type": "pom", - "extension": "pom" - }, - "name": "trove4j-1.0.20181211.pom", - "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom" - ], - "sha256": "310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-android-extensions", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-android-extensions-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-android-extensions/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.4.20/kotlin-android-extensions-1.4.20.jar" - ], - "sha256": "389160b5d4e500488b48e266ec7c8a5c6e6d557c75c13303c1171bc4797dc2e0" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-android-extensions", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-android-extensions-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-android-extensions/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.4.20/kotlin-android-extensions-1.4.20.pom" - ], - "sha256": "b8497814f61cb3c8c59cc1b6bd4102d5a6bacda73d385963c5105d57d1fa5e1e" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-annotation-processing-gradle", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-annotation-processing-gradle-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.4.20/kotlin-annotation-processing-gradle-1.4.20.jar" - ], - "sha256": "3f21fecda70023599d51c2d62987f87dd572451e43e21baef64f4d43a1724334" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-annotation-processing-gradle", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-annotation-processing-gradle-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.4.20/kotlin-annotation-processing-gradle-1.4.20.pom" - ], - "sha256": "50de06f4f6f51312bd039a8cf5b5519320b46e9d04ce8da6162ad6d05f2a51e3" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-build-common", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-build-common-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-build-common/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.4.20/kotlin-build-common-1.4.20.jar" - ], - "sha256": "133f2c0e982883b31e9d189b146de872985e5e0ac468049e45334164388e0db2" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-build-common", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-build-common-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-build-common/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.4.20/kotlin-build-common-1.4.20.pom" - ], - "sha256": "f00f60d91b9255629526af083127524c2940a7eb367ec9cfa16ed7b2f30cfed8" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-compiler-embeddable", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-compiler-embeddable-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.4.20/kotlin-compiler-embeddable-1.4.20.jar" - ], - "sha256": "9206f40144a6da5abae82752e1e93ffdcc7ca46e795081fb7b8647d2dd5013ec" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-compiler-embeddable", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-compiler-embeddable-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.4.20/kotlin-compiler-embeddable-1.4.20.pom" - ], - "sha256": "9686a28b0b606761581b88bef6a055e22068461dd2bba1ecfb15919967e603c7" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-compiler-runner", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-compiler-runner-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-compiler-runner/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.4.20/kotlin-compiler-runner-1.4.20.jar" - ], - "sha256": "abf50e14f9498adac08f3590b57294fa5196a6a1a234475a4cc30463a29b0614" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-compiler-runner", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-compiler-runner-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-compiler-runner/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.4.20/kotlin-compiler-runner-1.4.20.pom" - ], - "sha256": "763f5326c61079617a8d9d78f38324dd77ed8b328a46d20d6f7a85b3cfe8ccc8" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-daemon-client", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-daemon-client-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-daemon-client/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.4.20/kotlin-daemon-client-1.4.20.jar" - ], - "sha256": "c37165248c5cd5d939c6b034f10de75c029104baa25a2607eddbde923615643c" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-daemon-client", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-daemon-client-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-daemon-client/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.4.20/kotlin-daemon-client-1.4.20.pom" - ], - "sha256": "928729bee74e69710086b4ff7bd692f7426fa0ecc7eee143622008f29b64420e" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-daemon-embeddable", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-daemon-embeddable-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-daemon-embeddable/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.4.20/kotlin-daemon-embeddable-1.4.20.jar" - ], - "sha256": "0f5508127adbb28ec4dbfc8348bfbf83c2aba3e8a384f63524e83f68eacd59e3" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-daemon-embeddable", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-daemon-embeddable-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-daemon-embeddable/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.4.20/kotlin-daemon-embeddable-1.4.20.pom" - ], - "sha256": "d266dda8a3484b1a863610db37c74126dc36cc2354404b05474423c67648ccef" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-gradle-plugin", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-gradle-plugin-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.4.20/kotlin-gradle-plugin-1.4.20.jar" - ], - "sha256": "bfd0ae0418917b8d0f7b300d8eb61e4a68d79e1706a34d4f2e65e9accf67df38" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-gradle-plugin", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-gradle-plugin-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.4.20/kotlin-gradle-plugin-1.4.20.pom" - ], - "sha256": "f79af7dcff9a5609171a4e5704577ac99403c62f67e5fba358277a8f83bbd38f" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-gradle-plugin-api", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-gradle-plugin-api-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.4.20/kotlin-gradle-plugin-api-1.4.20.jar" - ], - "sha256": "f8012a9590f7ee3d2dac3e8673fdd41e7d55c4fcde95e556c9dc442ec0f1def8" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-gradle-plugin-api", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-gradle-plugin-api-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.4.20/kotlin-gradle-plugin-api-1.4.20.pom" - ], - "sha256": "f1d0d87457160e8ca1961311d5c6504ce14e498908f9d8387c9d244dd0e78fb8" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-gradle-plugin-model", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-gradle-plugin-model-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.4.20/kotlin-gradle-plugin-model-1.4.20.jar" - ], - "sha256": "67683c917d8c7cabcff293f9c42a2943e86acaeafa0fb5d30cb6b89eecaf55ce" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-gradle-plugin-model", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-gradle-plugin-model-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.4.20/kotlin-gradle-plugin-model-1.4.20.pom" - ], - "sha256": "aebcf5e1d450da8d38e55ab968da381a7214012e868794823a39ce6d66dd49f1" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-reflect", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-reflect-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.4.20/kotlin-reflect-1.4.20.jar" - ], - "sha256": "3b7c82def79fb96c4579d40a47e37dec872f9f8209ee0da3ce828c39dba612e1" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-reflect", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-reflect-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.4.20/kotlin-reflect-1.4.20.pom" - ], - "sha256": "a5ebcf0f1c72a11d94336796125e2c77d562b528ed4d447c340e7dc8037375b0" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-sam-with-receiver", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-sam-with-receiver-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.4.20/kotlin-sam-with-receiver-1.4.20.jar" - ], - "sha256": "e9fc45657c0cd0021fbcd2db15c758f8af61b961b4f3b2ab3797d2cf104ea0a4" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-sam-with-receiver", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-sam-with-receiver-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.4.20/kotlin-sam-with-receiver-1.4.20.pom" - ], - "sha256": "0130e48848936f4544d5ddfb9ea090a2e515cb03e2ba2974c49445a98c63b012" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-script-runtime", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-script-runtime-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.4.20/kotlin-script-runtime-1.4.20.jar" - ], - "sha256": "a11b737e659bed9d6e50938f72550bf0932c7d405a3822eb548422efd70792de" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-script-runtime", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-script-runtime-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.4.20/kotlin-script-runtime-1.4.20.pom" - ], - "sha256": "3e72202d67ef93ce0aee50ea763ec301e343d5c3cec2f6f12580855835024f57" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-common", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-scripting-common-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.4.20/kotlin-scripting-common-1.4.20.jar" - ], - "sha256": "449ddd001776d24b1180e63f005585da1e1cd64382a16a94a5651ee8de66350d" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-common", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-scripting-common-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.4.20/kotlin-scripting-common-1.4.20.pom" - ], - "sha256": "fee4fbef3f113be1ff95efef9c18816b8107dc9b30bed558a582965df3752afb" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-compiler-embeddable", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-scripting-compiler-embeddable-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.4.20/kotlin-scripting-compiler-embeddable-1.4.20.jar" - ], - "sha256": "c4bdfac80b5b6d2750e5316522bbca145ada4b79d2cf42946066e0368d3a84c2" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-compiler-embeddable", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-scripting-compiler-embeddable-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.4.20/kotlin-scripting-compiler-embeddable-1.4.20.pom" - ], - "sha256": "03f793eed92301288df0487d13b9776fa0ee52025230eed96bffe6666d562301" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-compiler-impl-embeddable", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-scripting-compiler-impl-embeddable-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.4.20/kotlin-scripting-compiler-impl-embeddable-1.4.20.jar" - ], - "sha256": "9557c64e32793c4b2e0c764df42ab850c52ee7966e939c3202ce542a59a5614e" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-compiler-impl-embeddable", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-scripting-compiler-impl-embeddable-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.4.20/kotlin-scripting-compiler-impl-embeddable-1.4.20.pom" - ], - "sha256": "0c9aa6618294893bfa877f54b07056084cf594f117e2c979b5620fe741ab539b" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-jvm", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-scripting-jvm-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.20/kotlin-scripting-jvm-1.4.20.jar" - ], - "sha256": "03136608c806341aa2006e6dc26287bf03067db58c5d620797c51a6d6b7d00b5" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-jvm", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-scripting-jvm-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.20/kotlin-scripting-jvm-1.4.20.pom" - ], - "sha256": "32fe3bb23007b41e0e84f5d86977472048827177e3bc3fa274551fd725f968bc" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.jar" - ], - "sha256": "b8ab1da5cdc89cb084d41e1f28f20a42bd431538642a5741c52bbfae3fa3e656" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.pom" - ], - "sha256": "3985ef1f92828d582a43cec9cedb2626742e0fe1505d3136ebc298cc98bc234a" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-common", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-common-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.jar" - ], - "sha256": "a7112c9b3cefee418286c9c9372f7af992bd1e6e030691d52f60cb36dbec8320" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-common", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-common-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.pom" - ], - "sha256": "7c5706ebba57d444c2c9024289313a49386bea0996c03294c2b5709a750ff429" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk7", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-jdk7-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.jar" - ], - "sha256": "b5aeadb3d1a61eca622c85ba89de84dfb18d718933f7016a73eba51c405e4de6" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk7", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-jdk7-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.pom" - ], - "sha256": "398b62058326b0fc8bf55b239cba1469a07a69fa536a0a8f19d8cd644201c4d3" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk8", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-jdk8-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20/kotlin-stdlib-jdk8-1.4.20.jar" - ], - "sha256": "c7cf3f19de11336b375a7756a87fa3015d44b9a679503ed897dd16a620f4c75b" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk8", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-jdk8-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20/kotlin-stdlib-jdk8-1.4.20.pom" - ], - "sha256": "9e9e5ef18adb90952c156d4d4bf7d0ba7abc58903423534d7b1831f5c6b9d5a8" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-util-io", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-util-io-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-util-io/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.4.20/kotlin-util-io-1.4.20.jar" - ], - "sha256": "5b9bbd465d2d3b3f344e83ef9b219829b7bdeca1e38b4d776602dbcfc29c5dea" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-util-io", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-util-io-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-util-io/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.4.20/kotlin-util-io-1.4.20.pom" - ], - "sha256": "240ba4e6ccfa91a9efa43ac500f3cab6556e338a28f10e83bc608359a0452196" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-util-klib", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-util-klib-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-util-klib/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.4.20/kotlin-util-klib-1.4.20.jar" - ], - "sha256": "f719e5d3b1a81c60548a1cb0cd13b5ac079d5839f1e8662877d52e358ed348ad" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-util-klib", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-util-klib-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-util-klib/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.4.20/kotlin-util-klib-1.4.20.pom" - ], - "sha256": "00dd506c7c806b26cc7bdefc5ec4fce36a7c91e4ac76f1c9353983473cd5fe79" - }, - { - "id": { - "group": "org.jetbrains.kotlin.jvm", - "name": "org.jetbrains.kotlin.jvm.gradle.plugin", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "org.jetbrains.kotlin.jvm.gradle.plugin-1.4.20.pom", - "path": "org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.4.20/org.jetbrains.kotlin.jvm.gradle.plugin-1.4.20.pom" - ], - "sha256": "f76379cb0bc19fa5db007167847bdb1ba4b109d7f6825ebdcd31a4c0f3048a95" - }, - { - "id": { - "group": "org.jetbrains.kotlin.kapt", - "name": "org.jetbrains.kotlin.kapt.gradle.plugin", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "org.jetbrains.kotlin.kapt.gradle.plugin-1.4.20.pom", - "path": "org/jetbrains/kotlin/kapt/org.jetbrains.kotlin.kapt.gradle.plugin/1.4.20", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kapt/org.jetbrains.kotlin.kapt.gradle.plugin/1.4.20/org.jetbrains.kotlin.kapt.gradle.plugin-1.4.20.pom" - ], - "sha256": "ba30b3893795bfefb89eba06f6f360e0000cf197978f452490e600967a28f86e" - }, - { - "id": { - "group": "org.jetbrains.kotlinx", - "name": "kotlinx-coroutines-core", - "version": "1.3.7", - "type": "jar", - "extension": "jar" - }, - "name": "kotlinx-coroutines-core-1.3.7.jar", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.7", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.7/kotlinx-coroutines-core-1.3.7.jar" - ], - "sha256": "ad426ec76f52b1dcdf200f55495aea9a2d2796811884e8c4b514645061cf59f3" - }, - { - "id": { - "group": "org.jetbrains.kotlinx", - "name": "kotlinx-coroutines-core", - "version": "1.3.7", - "type": "pom", - "extension": "pom" - }, - "name": "kotlinx-coroutines-core-1.3.7.pom", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.7", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.7/kotlinx-coroutines-core-1.3.7.pom" - ], - "sha256": "9e82078f4dafe1cc2e28f308a317912a45c6a88fc83c51db6ba8cb0ea0829ef1" - }, - { - "id": { - "group": "org.ow2", - "name": "ow2", - "version": "1.5", - "type": "pom", - "extension": "pom" - }, - "name": "ow2-1.5.pom", - "path": "org/ow2/ow2/1.5", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/ow2/1.5/ow2-1.5.pom" - ], - "sha256": "0f8a1b116e760b8fe6389c51b84e4b07a70fc11082d4f936e453b583dd50b43b" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm", - "version": "9.0", - "type": "jar", - "extension": "jar" - }, - "name": "asm-9.0.jar", - "path": "org/ow2/asm/asm/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.0/asm-9.0.jar" - ], - "sha256": "0df97574914aee92fd349d0cb4e00f3345d45b2c239e0bb50f0a90ead47888e0" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm", - "version": "9.0", - "type": "module", - "extension": "module" - }, - "name": "asm-9.0.module", - "path": "org/ow2/asm/asm/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.0/asm-9.0.module" - ], - "sha256": "8af81096ed3affa39a4729fc900a55b663894911d67c4d4bef0ea424393dd3f9" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm", - "version": "9.0", - "type": "pom", - "extension": "pom" - }, - "name": "asm-9.0.pom", - "path": "org/ow2/asm/asm/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.0/asm-9.0.pom" - ], - "sha256": "de0355590dd1bfcccdc8d79024ae992972e855268acedb9ad682d085e03a94ad" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm-analysis", - "version": "9.0", - "type": "jar", - "extension": "jar" - }, - "name": "asm-analysis-9.0.jar", - "path": "org/ow2/asm/asm-analysis/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar" - ], - "sha256": "2d46de6df856a4daac9aa534459ab7287eb80584e9109850405e5b302dc9c2a6" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm-analysis", - "version": "9.0", - "type": "module", - "extension": "module" - }, - "name": "asm-analysis-9.0.module", - "path": "org/ow2/asm/asm-analysis/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.module" - ], - "sha256": "6e02aafb4637979c7cdc3daa3047a88b40f3e1071bdbbd0c7f1cd5da7ac38454" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm-analysis", - "version": "9.0", - "type": "pom", - "extension": "pom" - }, - "name": "asm-analysis-9.0.pom", - "path": "org/ow2/asm/asm-analysis/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.pom" - ], - "sha256": "4af8ad8b9e0b3b104b1c6d0d8f97faa61222aae02d69f918450655b8ebab47dd" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm-commons", - "version": "9.0", - "type": "jar", - "extension": "jar" - }, - "name": "asm-commons-9.0.jar", - "path": "org/ow2/asm/asm-commons/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar" - ], - "sha256": "1b9090acb7e67bd4ed2f2cfb002063316d79cecace237bd07cc4f7f1b302092f" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm-commons", - "version": "9.0", - "type": "module", - "extension": "module" - }, - "name": "asm-commons-9.0.module", - "path": "org/ow2/asm/asm-commons/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.module" - ], - "sha256": "58880e03e9196f566c998186f58bd0af41c77a04ba841664f80377ba0665f97c" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm-commons", - "version": "9.0", - "type": "pom", - "extension": "pom" - }, - "name": "asm-commons-9.0.pom", - "path": "org/ow2/asm/asm-commons/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.pom" - ], - "sha256": "10e7738440827494e2f097db69d34386435a515ec729796fcb661f2d5bb3f776" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm-tree", - "version": "9.0", - "type": "jar", - "extension": "jar" - }, - "name": "asm-tree-9.0.jar", - "path": "org/ow2/asm/asm-tree/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar" - ], - "sha256": "e2c25f332eb95861883a8568e45aac5e77d140d0fe961ae8eb9a474ec876e00d" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm-tree", - "version": "9.0", - "type": "module", - "extension": "module" - }, - "name": "asm-tree-9.0.module", - "path": "org/ow2/asm/asm-tree/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.module" - ], - "sha256": "b38cbdd2c47fa4f29ab680c18954c7216d0afd28692221cd288c1cc7b9d9641c" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm-tree", - "version": "9.0", - "type": "pom", - "extension": "pom" - }, - "name": "asm-tree-9.0.pom", - "path": "org/ow2/asm/asm-tree/9.0", - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.pom" - ], - "sha256": "635d709dfb22110e1f5c0290f56ce36689c3ff732221a2dff0f1d93b6598a4e7" - }, - { - "id": { - "group": "org.sonatype.forge", - "name": "forge-parent", - "version": "10", - "type": "pom", - "extension": "pom" - }, - "name": "forge-parent-10.pom", - "path": "org/sonatype/forge/forge-parent/10", - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/forge/forge-parent/10/forge-parent-10.pom" - ], - "sha256": "c14fb9c32b59cc03251f609416db7c0cff01f811edcccb4f6a865d6e7046bd0b" - }, - { - "id": { - "group": "org.sonatype.oss", - "name": "oss-parent", - "version": "7", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-7.pom", - "path": "org/sonatype/oss/oss-parent/7", - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], - "sha256": "b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454" - }, - { - "id": { - "group": "org.sonatype.oss", - "name": "oss-parent", - "version": "9", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-9.pom", - "path": "org/sonatype/oss/oss-parent/9", - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom" - ], - "sha256": "fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a" - }, - { - "id": { - "group": "org.vafer", - "name": "jdependency", - "version": "2.1.1", - "type": "jar", - "extension": "jar" - }, - "name": "jdependency-2.1.1.jar", - "path": "org/vafer/jdependency/2.1.1", - "urls": [ - "https://plugins.gradle.org/m2/org/vafer/jdependency/2.1.1/jdependency-2.1.1.jar" - ], - "sha256": "642d23a86217850721d9fa80671683d8308fd03114f0da7af553d43b82013a09" - }, - { - "id": { - "group": "org.vafer", - "name": "jdependency", - "version": "2.1.1", - "type": "pom", - "extension": "pom" - }, - "name": "jdependency-2.1.1.pom", - "path": "org/vafer/jdependency/2.1.1", - "urls": [ - "https://plugins.gradle.org/m2/org/vafer/jdependency/2.1.1/jdependency-2.1.1.pom" - ], - "sha256": "4a139306cbe0aa3765bd9fd837a71253a911a9c4e55c50e062a4bd6843ee19a1" - } - ], - "buildscript": [], - "project": [ - { - "id": { - "group": "com.christophsturm", - "name": "filepeek", - "version": "0.1.2", - "type": "jar", - "extension": "jar" - }, - "name": "filepeek-0.1.2.jar", - "path": "com/christophsturm/filepeek/0.1.2", - "urls": [ - "https://jcenter.bintray.com/com/christophsturm/filepeek/0.1.2/filepeek-0.1.2.jar", - "https://repo.gradle.org/gradle/libs-releases/com/christophsturm/filepeek/0.1.2/filepeek-0.1.2.jar" - ], - "sha256": "29a5735255bb1f3652a4e2592a2bd8ca754717f8d62eb4a65680c992b98af4b0" - }, - { - "id": { - "group": "com.christophsturm", - "name": "filepeek", - "version": "0.1.2", - "type": "pom", - "extension": "pom" - }, - "name": "filepeek-0.1.2.pom", - "path": "com/christophsturm/filepeek/0.1.2", - "urls": [ - "https://jcenter.bintray.com/com/christophsturm/filepeek/0.1.2/filepeek-0.1.2.pom", - "https://repo.gradle.org/gradle/libs-releases/com/christophsturm/filepeek/0.1.2/filepeek-0.1.2.pom" - ], - "sha256": "a01fcc97303305918b3c8e943bc208c5a0d915b8f8fb9c963cddf27cd89e3e57" - }, - { - "id": { - "group": "com.github.ajalt", - "name": "clikt", - "version": "2.8.0", - "type": "jar", - "extension": "jar" - }, - "name": "clikt-2.8.0.jar", - "path": "com/github/ajalt/clikt/2.8.0", - "urls": [ - "https://jcenter.bintray.com/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.jar" - ], - "sha256": "31e7e890bec03af28228a1b56a44b2bc1ec2bb9ef058c928880016d19994869c" - }, - { - "id": { - "group": "com.github.ajalt", - "name": "clikt", - "version": "2.8.0", - "type": "module", - "extension": "module" - }, - "name": "clikt-2.8.0.module", - "path": "com/github/ajalt/clikt/2.8.0", - "urls": [ - "https://jcenter.bintray.com/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.module", - "https://repo.gradle.org/gradle/libs-releases/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.module" - ], - "sha256": "eb755142ced4c30ff9954f881f8a62014b1dcbf48ab9c89aad88c5c291fde469" - }, - { - "id": { - "group": "com.github.ajalt", - "name": "clikt", - "version": "2.8.0", - "type": "pom", - "extension": "pom" - }, - "name": "clikt-2.8.0.pom", - "path": "com/github/ajalt/clikt/2.8.0", - "urls": [ - "https://jcenter.bintray.com/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.pom" - ], - "sha256": "ea78c9feaf142e0e001ad3bc132f792892926fbc2660fa6eefc320f15cf0fc7c" - }, - { - "id": { - "group": "com.github.ajalt", - "name": "clikt-metadata", - "version": "2.8.0", - "type": "jar", - "extension": "jar" - }, - "name": "clikt-metadata-2.8.0.jar", - "path": "com/github/ajalt/clikt-metadata/2.8.0", - "urls": [ - "https://jcenter.bintray.com/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.jar" - ], - "sha256": "3717ff98eb61b3e702dc74f50f8721cc816d35dce9c2fff583e34d530d3f234f" - }, - { - "id": { - "group": "com.github.ajalt", - "name": "clikt-metadata", - "version": "2.8.0", - "type": "module", - "extension": "module" - }, - "name": "clikt-metadata-2.8.0.module", - "path": "com/github/ajalt/clikt-metadata/2.8.0", - "urls": [ - "https://jcenter.bintray.com/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.module", - "https://repo.gradle.org/gradle/libs-releases/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.module" - ], - "sha256": "cb8dd46963477aa4dac6aefb83c2c1189aaaa89c5a5744cf2461a8bd302f4a66" - }, - { - "id": { - "group": "com.github.ajalt", - "name": "clikt-metadata", - "version": "2.8.0", - "type": "pom", - "extension": "pom" - }, - "name": "clikt-metadata-2.8.0.pom", - "path": "com/github/ajalt/clikt-metadata/2.8.0", - "urls": [ - "https://jcenter.bintray.com/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.pom" - ], - "sha256": "36d7d3e5afb54b7516b89d1bb6488028daff46b72e7c4e1a5dff4635bb680dcf" - }, - { - "id": { - "group": "com.google.auto.service", - "name": "auto-service-aggregator", - "version": "1.0-rc7", - "type": "pom", - "extension": "pom" - }, - "name": "auto-service-aggregator-1.0-rc7.pom", - "path": "com/google/auto/service/auto-service-aggregator/1.0-rc7", - "urls": [ - "https://jcenter.bintray.com/com/google/auto/service/auto-service-aggregator/1.0-rc7/auto-service-aggregator-1.0-rc7.pom", - "https://repo.gradle.org/gradle/libs-releases/com/google/auto/service/auto-service-aggregator/1.0-rc7/auto-service-aggregator-1.0-rc7.pom" - ], - "sha256": "03058548acc5bdd0aba0980b5aac7c5846a402774fd7203c176f7eab18eef3f9" - }, - { - "id": { - "group": "com.google.auto.service", - "name": "auto-service-annotations", - "version": "1.0-rc7", - "type": "jar", - "extension": "jar" - }, - "name": "auto-service-annotations-1.0-rc7.jar", - "path": "com/google/auto/service/auto-service-annotations/1.0-rc7", - "urls": [ - "https://jcenter.bintray.com/com/google/auto/service/auto-service-annotations/1.0-rc7/auto-service-annotations-1.0-rc7.jar", - "https://repo.gradle.org/gradle/libs-releases/com/google/auto/service/auto-service-annotations/1.0-rc7/auto-service-annotations-1.0-rc7.jar" - ], - "sha256": "986dc826fa0a43bf9f04194c1a8667774f4f44190ec816b08554b47891ba5459" - }, - { - "id": { - "group": "com.google.auto.service", - "name": "auto-service-annotations", - "version": "1.0-rc7", - "type": "pom", - "extension": "pom" - }, - "name": "auto-service-annotations-1.0-rc7.pom", - "path": "com/google/auto/service/auto-service-annotations/1.0-rc7", - "urls": [ - "https://jcenter.bintray.com/com/google/auto/service/auto-service-annotations/1.0-rc7/auto-service-annotations-1.0-rc7.pom", - "https://repo.gradle.org/gradle/libs-releases/com/google/auto/service/auto-service-annotations/1.0-rc7/auto-service-annotations-1.0-rc7.pom" - ], - "sha256": "cb837ca0d14a7b9ce8ec7edf1aba34895a0a93c2e2233be0686707d042ae32f1" - }, - { - "id": { - "group": "com.squareup", - "name": "kotlinpoet", - "version": "1.6.0", - "type": "jar", - "extension": "jar" - }, - "name": "kotlinpoet-1.6.0.jar", - "path": "com/squareup/kotlinpoet/1.6.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/kotlinpoet/1.6.0/kotlinpoet-1.6.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/kotlinpoet/1.6.0/kotlinpoet-1.6.0.jar" - ], - "sha256": "8085eb4c8b1ece4f32259b22f26bf880bc47b74f548e29010b0146aa6b38f24b" - }, - { - "id": { - "group": "com.squareup", - "name": "kotlinpoet", - "version": "1.6.0", - "type": "pom", - "extension": "pom" - }, - "name": "kotlinpoet-1.6.0.pom", - "path": "com/squareup/kotlinpoet/1.6.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/kotlinpoet/1.6.0/kotlinpoet-1.6.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/kotlinpoet/1.6.0/kotlinpoet-1.6.0.pom" - ], - "sha256": "7a196c990b8f32a03df2d22c88ca5ed992c039d45e5b3876263608243f433347" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi", - "version": "1.11.0", - "type": "jar", - "extension": "jar" - }, - "name": "moshi-1.11.0.jar", - "path": "com/squareup/moshi/moshi/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi/1.11.0/moshi-1.11.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi/1.11.0/moshi-1.11.0.jar" - ], - "sha256": "b6ee64fb84a7486aa9983e20c75259d4931bd597c169e1e67c3bc0521fd03b27" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi", - "version": "1.11.0", - "type": "module", - "extension": "module" - }, - "name": "moshi-1.11.0.module", - "path": "com/squareup/moshi/moshi/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi/1.11.0/moshi-1.11.0.module", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi/1.11.0/moshi-1.11.0.module" - ], - "sha256": "94b151862945f4c7533e3468ac8393212d6c673e917bcd356d4cdf7df44d3b3e" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi", - "version": "1.11.0", - "type": "pom", - "extension": "pom" - }, - "name": "moshi-1.11.0.pom", - "path": "com/squareup/moshi/moshi/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi/1.11.0/moshi-1.11.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi/1.11.0/moshi-1.11.0.pom" - ], - "sha256": "c226445b5ece3103686725c3183226e2fdc2ce2fcde7af6a4a5d1567d04dfb3b" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi-adapters", - "version": "1.11.0", - "type": "jar", - "extension": "jar" - }, - "name": "moshi-adapters-1.11.0.jar", - "path": "com/squareup/moshi/moshi-adapters/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-adapters/1.11.0/moshi-adapters-1.11.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-adapters/1.11.0/moshi-adapters-1.11.0.jar" - ], - "sha256": "f4e28eb4d39e6ea8b46bea51ea2c66265dcad9597e2f6ce4bc75cd2395368d60" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi-adapters", - "version": "1.11.0", - "type": "module", - "extension": "module" - }, - "name": "moshi-adapters-1.11.0.module", - "path": "com/squareup/moshi/moshi-adapters/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-adapters/1.11.0/moshi-adapters-1.11.0.module", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-adapters/1.11.0/moshi-adapters-1.11.0.module" - ], - "sha256": "a0c64efb270f38891635f8a7dc50132dd881f5d0e4f19f812505417c92931141" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi-adapters", - "version": "1.11.0", - "type": "pom", - "extension": "pom" - }, - "name": "moshi-adapters-1.11.0.pom", - "path": "com/squareup/moshi/moshi-adapters/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-adapters/1.11.0/moshi-adapters-1.11.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-adapters/1.11.0/moshi-adapters-1.11.0.pom" - ], - "sha256": "81ff8f4befb92b160227df9b72f1fef3ee537dfc5becc5ba42443b667d0f1b26" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi-kotlin", - "version": "1.11.0", - "type": "jar", - "extension": "jar" - }, - "name": "moshi-kotlin-1.11.0.jar", - "path": "com/squareup/moshi/moshi-kotlin/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin/1.11.0/moshi-kotlin-1.11.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin/1.11.0/moshi-kotlin-1.11.0.jar" - ], - "sha256": "220f3b85d99ea40ff65609813f3624fb4313de3634a747adb04040cf7cb486bc" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi-kotlin", - "version": "1.11.0", - "type": "module", - "extension": "module" - }, - "name": "moshi-kotlin-1.11.0.module", - "path": "com/squareup/moshi/moshi-kotlin/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin/1.11.0/moshi-kotlin-1.11.0.module", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin/1.11.0/moshi-kotlin-1.11.0.module" - ], - "sha256": "26ac4997f1bb5dcdf67f6d6efb93064e53e717ca470761795b27b3347ff9a595" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi-kotlin", - "version": "1.11.0", - "type": "pom", - "extension": "pom" - }, - "name": "moshi-kotlin-1.11.0.pom", - "path": "com/squareup/moshi/moshi-kotlin/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin/1.11.0/moshi-kotlin-1.11.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin/1.11.0/moshi-kotlin-1.11.0.pom" - ], - "sha256": "9bf85901c0c5cd9614dc4506d332f688e2d5185995e5379ce68677c74356a465" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi-kotlin-codegen", - "version": "1.11.0", - "type": "jar", - "extension": "jar" - }, - "name": "moshi-kotlin-codegen-1.11.0.jar", - "path": "com/squareup/moshi/moshi-kotlin-codegen/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin-codegen/1.11.0/moshi-kotlin-codegen-1.11.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin-codegen/1.11.0/moshi-kotlin-codegen-1.11.0.jar" - ], - "sha256": "e5d8e5cba11d8aca0261649c362fdee718e16ccc647124e55ee2e2c328be4c82" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi-kotlin-codegen", - "version": "1.11.0", - "type": "module", - "extension": "module" - }, - "name": "moshi-kotlin-codegen-1.11.0.module", - "path": "com/squareup/moshi/moshi-kotlin-codegen/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin-codegen/1.11.0/moshi-kotlin-codegen-1.11.0.module", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin-codegen/1.11.0/moshi-kotlin-codegen-1.11.0.module" - ], - "sha256": "4ae87ef50d9f8c24958e0928816afca29b1e78ad070fd4dc17484eb309fd3eaf" - }, - { - "id": { - "group": "com.squareup.moshi", - "name": "moshi-kotlin-codegen", - "version": "1.11.0", - "type": "pom", - "extension": "pom" - }, - "name": "moshi-kotlin-codegen-1.11.0.pom", - "path": "com/squareup/moshi/moshi-kotlin-codegen/1.11.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin-codegen/1.11.0/moshi-kotlin-codegen-1.11.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin-codegen/1.11.0/moshi-kotlin-codegen-1.11.0.pom" - ], - "sha256": "faaffc7dff7612edfe924544121f9555704b240c6a469c91268d60e6be68a9e6" - }, - { - "id": { - "group": "com.squareup.okio", - "name": "okio", - "version": "1.17.5", - "type": "jar", - "extension": "jar" - }, - "name": "okio-1.17.5.jar", - "path": "com/squareup/okio/okio/1.17.5", - "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio/1.17.5/okio-1.17.5.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio/1.17.5/okio-1.17.5.jar" - ], - "sha256": "19a7ff48d86d3cf4497f7f250fbf295f430c13a528dd5b7b203f821802b886ad" - }, - { - "id": { - "group": "com.squareup.okio", - "name": "okio", - "version": "1.17.5", - "type": "pom", - "extension": "pom" - }, - "name": "okio-1.17.5.pom", - "path": "com/squareup/okio/okio/1.17.5", - "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio/1.17.5/okio-1.17.5.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio/1.17.5/okio-1.17.5.pom" - ], - "sha256": "fa4e3ece4aaed469de3635e4a9c1235a4f4692f91c8b48657296c892f868010f" - }, - { - "id": { - "group": "com.squareup.okio", - "name": "okio", - "version": "3.0.0-alpha.1", - "type": "jar", - "extension": "jar" - }, - "name": "okio-3.0.0-alpha.1.jar", - "path": "com/squareup/okio/okio/3.0.0-alpha.1", - "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio/3.0.0-alpha.1/okio-3.0.0-alpha.1.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio/3.0.0-alpha.1/okio-3.0.0-alpha.1.jar" - ], - "sha256": "1d58b7534cd6f34e75249ab71f3dca4d448bfbd54bb7fe5dfd7affccb4707d44" - }, - { - "id": { - "group": "com.squareup.okio", - "name": "okio", - "version": "3.0.0-alpha.1", - "type": "module", - "extension": "module" - }, - "name": "okio-3.0.0-alpha.1.module", - "path": "com/squareup/okio/okio/3.0.0-alpha.1", - "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio/3.0.0-alpha.1/okio-3.0.0-alpha.1.module", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio/3.0.0-alpha.1/okio-3.0.0-alpha.1.module" - ], - "sha256": "b85dff665f4ed80eb3dde99fb5c4ae10fac2962220ca251cc410d33c52eb4af5" - }, - { - "id": { - "group": "com.squareup.okio", - "name": "okio", - "version": "3.0.0-alpha.1", - "type": "pom", - "extension": "pom" - }, - "name": "okio-3.0.0-alpha.1.pom", - "path": "com/squareup/okio/okio/3.0.0-alpha.1", - "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio/3.0.0-alpha.1/okio-3.0.0-alpha.1.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio/3.0.0-alpha.1/okio-3.0.0-alpha.1.pom" - ], - "sha256": "21316ad1ebbe56c3096b02ddf927da6b0b9135ec9e4b77e6c09322d9b8bc60e9" - }, - { - "id": { - "group": "com.squareup.okio", - "name": "okio-metadata", - "version": "3.0.0-alpha.1", - "type": "jar", - "extension": "jar" - }, - "name": "okio-metadata-3.0.0-alpha.1.jar", - "path": "com/squareup/okio/okio-metadata/3.0.0-alpha.1", - "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio-metadata/3.0.0-alpha.1/okio-metadata-3.0.0-alpha.1.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-metadata/3.0.0-alpha.1/okio-metadata-3.0.0-alpha.1.jar" - ], - "sha256": "49defcd965962851d0424501083a8ca5b32725ab7e1b36b4f9b0805a6c3af16e" - }, - { - "id": { - "group": "com.squareup.okio", - "name": "okio-metadata", - "version": "3.0.0-alpha.1", - "type": "module", - "extension": "module" - }, - "name": "okio-metadata-3.0.0-alpha.1.module", - "path": "com/squareup/okio/okio-metadata/3.0.0-alpha.1", - "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio-metadata/3.0.0-alpha.1/okio-metadata-3.0.0-alpha.1.module", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-metadata/3.0.0-alpha.1/okio-metadata-3.0.0-alpha.1.module" - ], - "sha256": "ec39bb2033ffa8a95142d21970776e456e527c3654ba7f08c41a4816e8023c68" - }, - { - "id": { - "group": "com.squareup.okio", - "name": "okio-metadata", - "version": "3.0.0-alpha.1", - "type": "pom", - "extension": "pom" - }, - "name": "okio-metadata-3.0.0-alpha.1.pom", - "path": "com/squareup/okio/okio-metadata/3.0.0-alpha.1", - "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio-metadata/3.0.0-alpha.1/okio-metadata-3.0.0-alpha.1.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-metadata/3.0.0-alpha.1/okio-metadata-3.0.0-alpha.1.pom" - ], - "sha256": "116cac0dd2838e7d5065045ea24b44517ef27397b80357f12fa5fb7e6e4ec055" - }, - { - "id": { - "group": "com.squareup.okio", - "name": "okio-parent", - "version": "1.17.5", - "type": "pom", - "extension": "pom" - }, - "name": "okio-parent-1.17.5.pom", - "path": "com/squareup/okio/okio-parent/1.17.5", - "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio-parent/1.17.5/okio-parent-1.17.5.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-parent/1.17.5/okio-parent-1.17.5.pom" - ], - "sha256": "9b5a572fe0c471b72e0d2123f2cb50e57d8c8463d7b817f54c0122a6248e9d03" - }, - { - "id": { - "group": "io.github.classgraph", - "name": "classgraph", - "version": "4.8.37", - "type": "jar", - "extension": "jar" - }, - "name": "classgraph-4.8.37.jar", - "path": "io/github/classgraph/classgraph/4.8.37", - "urls": [ - "https://jcenter.bintray.com/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar", - "https://repo.gradle.org/gradle/libs-releases/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar" - ], - "sha256": "7d1d3e8828c1eef549d41ef1ece73d2c5c58cfb951b3f220cf0cf1dd25558173" - }, - { - "id": { - "group": "io.github.classgraph", - "name": "classgraph", - "version": "4.8.37", - "type": "pom", - "extension": "pom" - }, - "name": "classgraph-4.8.37.pom", - "path": "io/github/classgraph/classgraph/4.8.37", - "urls": [ - "https://jcenter.bintray.com/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom", - "https://repo.gradle.org/gradle/libs-releases/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom" - ], - "sha256": "a49055d06125786650be33eed77ae985009138b84d39603bc1eb2ed3c8085b34" - }, - { - "id": { - "group": "io.strikt", - "name": "strikt-core", - "version": "0.28.2", - "type": "jar", - "extension": "jar" - }, - "name": "strikt-core-0.28.2.jar", - "path": "io/strikt/strikt-core/0.28.2", - "urls": [ - "https://jcenter.bintray.com/io/strikt/strikt-core/0.28.2/strikt-core-0.28.2.jar", - "https://repo.gradle.org/gradle/libs-releases/io/strikt/strikt-core/0.28.2/strikt-core-0.28.2.jar" - ], - "sha256": "76c9fd330851558db7b3e0db58d8e7d3c0e30d652c180840ffd34830a1f3c09c" - }, - { - "id": { - "group": "io.strikt", - "name": "strikt-core", - "version": "0.28.2", - "type": "pom", - "extension": "pom" - }, - "name": "strikt-core-0.28.2.pom", - "path": "io/strikt/strikt-core/0.28.2", - "urls": [ - "https://jcenter.bintray.com/io/strikt/strikt-core/0.28.2/strikt-core-0.28.2.pom", - "https://repo.gradle.org/gradle/libs-releases/io/strikt/strikt-core/0.28.2/strikt-core-0.28.2.pom" - ], - "sha256": "93e4d5929b44702347d2fbef8f79a528a0942152e888d3b0024fb6b12ca91ec6" - }, - { - "id": { - "group": "net.ltgt.gradle.incap", - "name": "incap", - "version": "0.3", - "type": "jar", - "extension": "jar" - }, - "name": "incap-0.3.jar", - "path": "net/ltgt/gradle/incap/incap/0.3", - "urls": [ - "https://jcenter.bintray.com/net/ltgt/gradle/incap/incap/0.3/incap-0.3.jar", - "https://repo.gradle.org/gradle/libs-releases/net/ltgt/gradle/incap/incap/0.3/incap-0.3.jar" - ], - "sha256": "1d3ebe10d6059a26438dd183ab5a823cf8cd8081bc0d4cf997ad80e9ab9607d8" - }, - { - "id": { - "group": "net.ltgt.gradle.incap", - "name": "incap", - "version": "0.3", - "type": "module", - "extension": "module" - }, - "name": "incap-0.3.module", - "path": "net/ltgt/gradle/incap/incap/0.3", - "urls": [ - "https://jcenter.bintray.com/net/ltgt/gradle/incap/incap/0.3/incap-0.3.module", - "https://repo.gradle.org/gradle/libs-releases/net/ltgt/gradle/incap/incap/0.3/incap-0.3.module" - ], - "sha256": "1d21ea2914eb40f1b391ca6d4e793de50b29efcd1e168ecec2bef68e03ced214" - }, - { - "id": { - "group": "net.ltgt.gradle.incap", - "name": "incap", - "version": "0.3", - "type": "pom", - "extension": "pom" - }, - "name": "incap-0.3.pom", - "path": "net/ltgt/gradle/incap/incap/0.3", - "urls": [ - "https://jcenter.bintray.com/net/ltgt/gradle/incap/incap/0.3/incap-0.3.pom", - "https://repo.gradle.org/gradle/libs-releases/net/ltgt/gradle/incap/incap/0.3/incap-0.3.pom" - ], - "sha256": "d316408accfb553946925243337947e6dd7a733c29bc30e53ed37972b7516c78" - }, - { - "id": { - "group": "net.swiftzer.semver", - "name": "semver", - "version": "1.1.1", - "type": "jar", - "extension": "jar" - }, - "name": "semver-1.1.1.jar", - "path": "net/swiftzer/semver/semver/1.1.1", - "urls": [ - "https://jcenter.bintray.com/net/swiftzer/semver/semver/1.1.1/semver-1.1.1.jar", - "https://repo.gradle.org/gradle/libs-releases/net/swiftzer/semver/semver/1.1.1/semver-1.1.1.jar" - ], - "sha256": "757eeb1c6703b81fa3bb6bc2eae7a5fe6ddac5d833b977aa1ce08979d7c2de5a" - }, - { - "id": { - "group": "net.swiftzer.semver", - "name": "semver", - "version": "1.1.1", - "type": "pom", - "extension": "pom" - }, - "name": "semver-1.1.1.pom", - "path": "net/swiftzer/semver/semver/1.1.1", - "urls": [ - "https://jcenter.bintray.com/net/swiftzer/semver/semver/1.1.1/semver-1.1.1.pom", - "https://repo.gradle.org/gradle/libs-releases/net/swiftzer/semver/semver/1.1.1/semver-1.1.1.pom" - ], - "sha256": "5d65513ed1a37cc927e4261a1c9f198ea4b033dbf88930358c37b61fe63c00e7" - }, - { - "id": { - "group": "org.apiguardian", - "name": "apiguardian-api", - "version": "1.1.0", - "type": "jar", - "extension": "jar" - }, - "name": "apiguardian-api-1.1.0.jar", - "path": "org/apiguardian/apiguardian-api/1.1.0", - "urls": [ - "https://jcenter.bintray.com/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar" - ], - "sha256": "a9aae9ff8ae3e17a2a18f79175e82b16267c246fbbd3ca9dfbbb290b08dcfdd4" - }, - { - "id": { - "group": "org.apiguardian", - "name": "apiguardian-api", - "version": "1.1.0", - "type": "pom", - "extension": "pom" - }, - "name": "apiguardian-api-1.1.0.pom", - "path": "org/apiguardian/apiguardian-api/1.1.0", - "urls": [ - "https://jcenter.bintray.com/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom" - ], - "sha256": "a945b9cb5cd9b77b2c711844e659c43ec070ef59d9f509fa9f4c1861b4862711" - }, - { - "id": { - "group": "org.gradle", - "name": "gradle-tooling-api", - "version": "6.8.1", - "type": "jar", - "extension": "jar" - }, - "name": "gradle-tooling-api-6.8.1.jar", - "path": "org/gradle/gradle-tooling-api/6.8.1", - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/6.8.1/gradle-tooling-api-6.8.1.jar" - ], - "sha256": "138725655f017c71bf15f670f7094864ca93d7fd5864b0998cb48944dea7ac3e" - }, - { - "id": { - "group": "org.gradle", - "name": "gradle-tooling-api", - "version": "6.8.1", - "type": "module", - "extension": "module" - }, - "name": "gradle-tooling-api-6.8.1.module", - "path": "org/gradle/gradle-tooling-api/6.8.1", - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/6.8.1/gradle-tooling-api-6.8.1.module" - ], - "sha256": "693a3ede3561ddfa5becd52a35d1fc2db9600e53bb16a76f704bc65d47f398a3" - }, - { - "id": { - "group": "org.gradle", - "name": "gradle-tooling-api", - "version": "6.8.1", - "type": "pom", - "extension": "pom" - }, - "name": "gradle-tooling-api-6.8.1.pom", - "path": "org/gradle/gradle-tooling-api/6.8.1", - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/6.8.1/gradle-tooling-api-6.8.1.pom" - ], - "sha256": "37635501232c63a313d3aa86ee95d22e7ec64004ce8d8f3696f0e82926d31b81" - }, - { - "id": { - "group": "org.jetbrains", - "name": "annotations", - "version": "13.0", - "type": "jar", - "extension": "jar" - }, - "name": "annotations-13.0.jar", - "path": "org/jetbrains/annotations/13.0", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "sha256": "ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478" - }, - { - "id": { - "group": "org.jetbrains", - "name": "annotations", - "version": "13.0", - "type": "pom", - "extension": "pom" - }, - "name": "annotations-13.0.pom", - "path": "org/jetbrains/annotations/13.0", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "sha256": "965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397" - }, - { - "id": { - "group": "org.jetbrains.intellij.deps", - "name": "trove4j", - "version": "1.0.20181211", - "type": "jar", - "extension": "jar" - }, - "name": "trove4j-1.0.20181211.jar", - "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.jar" - ], - "sha256": "affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601" - }, - { - "id": { - "group": "org.jetbrains.intellij.deps", - "name": "trove4j", - "version": "1.0.20181211", - "type": "pom", - "extension": "pom" - }, - "name": "trove4j-1.0.20181211.pom", - "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom" - ], - "sha256": "310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-annotation-processing-gradle", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-annotation-processing-gradle-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.4.20/kotlin-annotation-processing-gradle-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.4.20/kotlin-annotation-processing-gradle-1.4.20.jar" - ], - "sha256": "3f21fecda70023599d51c2d62987f87dd572451e43e21baef64f4d43a1724334" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-annotation-processing-gradle", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-annotation-processing-gradle-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.4.20/kotlin-annotation-processing-gradle-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.4.20/kotlin-annotation-processing-gradle-1.4.20.pom" - ], - "sha256": "50de06f4f6f51312bd039a8cf5b5519320b46e9d04ce8da6162ad6d05f2a51e3" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-compiler-embeddable", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-compiler-embeddable-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.4.20/kotlin-compiler-embeddable-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.4.20/kotlin-compiler-embeddable-1.4.20.jar" - ], - "sha256": "9206f40144a6da5abae82752e1e93ffdcc7ca46e795081fb7b8647d2dd5013ec" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-compiler-embeddable", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-compiler-embeddable-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.4.20/kotlin-compiler-embeddable-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.4.20/kotlin-compiler-embeddable-1.4.20.pom" - ], - "sha256": "9686a28b0b606761581b88bef6a055e22068461dd2bba1ecfb15919967e603c7" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-daemon-embeddable", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-daemon-embeddable-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-daemon-embeddable/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.4.20/kotlin-daemon-embeddable-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.4.20/kotlin-daemon-embeddable-1.4.20.jar" - ], - "sha256": "0f5508127adbb28ec4dbfc8348bfbf83c2aba3e8a384f63524e83f68eacd59e3" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-daemon-embeddable", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-daemon-embeddable-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-daemon-embeddable/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.4.20/kotlin-daemon-embeddable-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.4.20/kotlin-daemon-embeddable-1.4.20.pom" - ], - "sha256": "d266dda8a3484b1a863610db37c74126dc36cc2354404b05474423c67648ccef" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-klib-commonizer-embeddable", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-klib-commonizer-embeddable-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.4.20/kotlin-klib-commonizer-embeddable-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.4.20/kotlin-klib-commonizer-embeddable-1.4.20.jar" - ], - "sha256": "06312969b8d94f4763819058ed1588d87bad51596b1a1fed53337ae6345bfb9f" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-klib-commonizer-embeddable", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-klib-commonizer-embeddable-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.4.20/kotlin-klib-commonizer-embeddable-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.4.20/kotlin-klib-commonizer-embeddable-1.4.20.pom" - ], - "sha256": "e34466a7ea9e7bf4394cbef43497682eb7ba38b20701ce3e52bac939b0a117ad" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-reflect", - "version": "1.4.10", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-reflect-1.4.10.jar", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.4.10", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.4.10/kotlin-reflect-1.4.10.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.4.10/kotlin-reflect-1.4.10.jar" - ], - "sha256": "3ab3413ec945f801448360ad97bc6e14fec6d606889ede3c707cc277b4467f45" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-reflect", - "version": "1.4.10", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-reflect-1.4.10.pom", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.4.10", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.4.10/kotlin-reflect-1.4.10.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.4.10/kotlin-reflect-1.4.10.pom" - ], - "sha256": "eef345ac9f76f39a8f0364bfbb335619eb506c4e54e1997be1c58dc624b425d9" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-reflect", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-reflect-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.4.20/kotlin-reflect-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.4.20/kotlin-reflect-1.4.20.jar" - ], - "sha256": "3b7c82def79fb96c4579d40a47e37dec872f9f8209ee0da3ce828c39dba612e1" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-reflect", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-reflect-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.4.20/kotlin-reflect-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.4.20/kotlin-reflect-1.4.20.pom" - ], - "sha256": "a5ebcf0f1c72a11d94336796125e2c77d562b528ed4d447c340e7dc8037375b0" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-reflect", - "version": "1.4.21-2", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-reflect-1.4.21-2.jar", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.4.21-2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.4.21-2/kotlin-reflect-1.4.21-2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.4.21-2/kotlin-reflect-1.4.21-2.jar" - ], - "sha256": "defbac33a5838836d9869c4d9e39b2897950baacc9c07766d6c631774631021b" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-reflect", - "version": "1.4.21-2", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-reflect-1.4.21-2.pom", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.4.21-2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.4.21-2/kotlin-reflect-1.4.21-2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.4.21-2/kotlin-reflect-1.4.21-2.pom" - ], - "sha256": "3eefda3f1cf74c952e3d0928c21499688160dac996b134821ad7f5f09a14a534" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-script-runtime", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-script-runtime-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.4.20/kotlin-script-runtime-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-script-runtime/1.4.20/kotlin-script-runtime-1.4.20.jar" - ], - "sha256": "a11b737e659bed9d6e50938f72550bf0932c7d405a3822eb548422efd70792de" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-script-runtime", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-script-runtime-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.4.20/kotlin-script-runtime-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-script-runtime/1.4.20/kotlin-script-runtime-1.4.20.pom" - ], - "sha256": "3e72202d67ef93ce0aee50ea763ec301e343d5c3cec2f6f12580855835024f57" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-common", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-scripting-common-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.4.20/kotlin-scripting-common-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-common/1.4.20/kotlin-scripting-common-1.4.20.jar" - ], - "sha256": "449ddd001776d24b1180e63f005585da1e1cd64382a16a94a5651ee8de66350d" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-common", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-scripting-common-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.4.20/kotlin-scripting-common-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-common/1.4.20/kotlin-scripting-common-1.4.20.pom" - ], - "sha256": "fee4fbef3f113be1ff95efef9c18816b8107dc9b30bed558a582965df3752afb" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-compiler-embeddable", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-scripting-compiler-embeddable-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.4.20/kotlin-scripting-compiler-embeddable-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.4.20/kotlin-scripting-compiler-embeddable-1.4.20.jar" - ], - "sha256": "c4bdfac80b5b6d2750e5316522bbca145ada4b79d2cf42946066e0368d3a84c2" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-compiler-embeddable", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-scripting-compiler-embeddable-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.4.20/kotlin-scripting-compiler-embeddable-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.4.20/kotlin-scripting-compiler-embeddable-1.4.20.pom" - ], - "sha256": "03f793eed92301288df0487d13b9776fa0ee52025230eed96bffe6666d562301" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-compiler-impl-embeddable", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-scripting-compiler-impl-embeddable-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.4.20/kotlin-scripting-compiler-impl-embeddable-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.4.20/kotlin-scripting-compiler-impl-embeddable-1.4.20.jar" - ], - "sha256": "9557c64e32793c4b2e0c764df42ab850c52ee7966e939c3202ce542a59a5614e" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-compiler-impl-embeddable", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-scripting-compiler-impl-embeddable-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.4.20/kotlin-scripting-compiler-impl-embeddable-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.4.20/kotlin-scripting-compiler-impl-embeddable-1.4.20.pom" - ], - "sha256": "0c9aa6618294893bfa877f54b07056084cf594f117e2c979b5620fe741ab539b" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-jvm", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-scripting-jvm-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.20/kotlin-scripting-jvm-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.20/kotlin-scripting-jvm-1.4.20.jar" - ], - "sha256": "03136608c806341aa2006e6dc26287bf03067db58c5d620797c51a6d6b7d00b5" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-scripting-jvm", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-scripting-jvm-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.20/kotlin-scripting-jvm-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.20/kotlin-scripting-jvm-1.4.20.pom" - ], - "sha256": "32fe3bb23007b41e0e84f5d86977472048827177e3bc3fa274551fd725f968bc" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib", - "version": "1.4.10", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-1.4.10.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.10", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotlin-stdlib-1.4.10.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotlin-stdlib-1.4.10.jar" - ], - "sha256": "01ecb09782c042b931c1839acf21a188340b295d05400afd6e3415d4475b8daa" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib", - "version": "1.4.10", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-1.4.10.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.10", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotlin-stdlib-1.4.10.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotlin-stdlib-1.4.10.pom" - ], - "sha256": "a4b9cfbb4bbda523af1e24d52c775fb9c0f7cb568e48b065d45aeb56e63c2762" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.jar" - ], - "sha256": "b8ab1da5cdc89cb084d41e1f28f20a42bd431538642a5741c52bbfae3fa3e656" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.pom" - ], - "sha256": "3985ef1f92828d582a43cec9cedb2626742e0fe1505d3136ebc298cc98bc234a" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib", - "version": "1.4.21-2", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-1.4.21-2.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.21-2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.21-2/kotlin-stdlib-1.4.21-2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.4.21-2/kotlin-stdlib-1.4.21-2.jar" - ], - "sha256": "5a60d42d38115ba3c9fe07ee24b1f5585f7706190f69535eb7fd423ec4753040" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib", - "version": "1.4.21-2", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-1.4.21-2.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.21-2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.21-2/kotlin-stdlib-1.4.21-2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.4.21-2/kotlin-stdlib-1.4.21-2.pom" - ], - "sha256": "e0aa9dd49a92a607da483d9576636b76f95761da42db4e45dd79c2ee65bd59c8" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-common", - "version": "1.4.10", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-common-1.4.10.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.10", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.10/kotlin-stdlib-common-1.4.10.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.10/kotlin-stdlib-common-1.4.10.jar" - ], - "sha256": "4681f2d436a68c7523595d84ed5758e1382f9da0f67c91e6a848690d711274fe" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-common", - "version": "1.4.10", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-common-1.4.10.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.10", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.10/kotlin-stdlib-common-1.4.10.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.10/kotlin-stdlib-common-1.4.10.pom" - ], - "sha256": "63480e72a7d4de742b49a6ff90e45f544ca37f3fe11af8b4839f9cd747515d00" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-common", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-common-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.jar" - ], - "sha256": "a7112c9b3cefee418286c9c9372f7af992bd1e6e030691d52f60cb36dbec8320" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-common", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-common-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.pom" - ], - "sha256": "7c5706ebba57d444c2c9024289313a49386bea0996c03294c2b5709a750ff429" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-common", - "version": "1.4.21-2", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-common-1.4.21-2.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.21-2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.21-2/kotlin-stdlib-common-1.4.21-2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.21-2/kotlin-stdlib-common-1.4.21-2.jar" - ], - "sha256": "b4673bce767c5cec6954b54d5137d1511f3f176b240716879a7beaa6697cecbf" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-common", - "version": "1.4.21-2", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-common-1.4.21-2.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.21-2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.21-2/kotlin-stdlib-common-1.4.21-2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.21-2/kotlin-stdlib-common-1.4.21-2.pom" - ], - "sha256": "06528abe4ec6759902ca833cb2f57b4d7fed4be39b388425d007b269c015fb83" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk7", - "version": "1.4.10", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-jdk7-1.4.10.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/kotlin-stdlib-jdk7-1.4.10.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/kotlin-stdlib-jdk7-1.4.10.jar" - ], - "sha256": "f9566380c08722c780ce33ceee23e98ddf765ca98fabd3e2fabae7975c8d232b" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk7", - "version": "1.4.10", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-jdk7-1.4.10.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/kotlin-stdlib-jdk7-1.4.10.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/kotlin-stdlib-jdk7-1.4.10.pom" - ], - "sha256": "78f2fe1d48e99c64958930ccdc43fce5939460ecdfc65f302823a021d63c520d" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk7", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-jdk7-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.jar" - ], - "sha256": "b5aeadb3d1a61eca622c85ba89de84dfb18d718933f7016a73eba51c405e4de6" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk7", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-jdk7-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.pom" - ], - "sha256": "398b62058326b0fc8bf55b239cba1469a07a69fa536a0a8f19d8cd644201c4d3" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk7", - "version": "1.4.21-2", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-jdk7-1.4.21-2.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.21-2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.21-2/kotlin-stdlib-jdk7-1.4.21-2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.21-2/kotlin-stdlib-jdk7-1.4.21-2.jar" - ], - "sha256": "803193c60574587d744d4a27b2d144ad9d9397c533572722c935e8a074d556ac" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk7", - "version": "1.4.21-2", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-jdk7-1.4.21-2.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.21-2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.21-2/kotlin-stdlib-jdk7-1.4.21-2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.21-2/kotlin-stdlib-jdk7-1.4.21-2.pom" - ], - "sha256": "18ee07af402ab5e8b594ab62f219e3002bb5509a8d269a3a3da8ae3356101706" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk8", - "version": "1.4.10", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-jdk8-1.4.10.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/kotlin-stdlib-jdk8-1.4.10.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/kotlin-stdlib-jdk8-1.4.10.jar" - ], - "sha256": "39b7a9442d7a3865e0f4a732c56c1d5da0e11ffb3bb82a461d32deb0c0ca7673" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk8", - "version": "1.4.10", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-jdk8-1.4.10.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/kotlin-stdlib-jdk8-1.4.10.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/kotlin-stdlib-jdk8-1.4.10.pom" - ], - "sha256": "c2f4d70082dbbfcea68fdfa74289cef32df9e4b5ddf359f006036dff1c5b06d6" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk8", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-jdk8-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20/kotlin-stdlib-jdk8-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20/kotlin-stdlib-jdk8-1.4.20.jar" - ], - "sha256": "c7cf3f19de11336b375a7756a87fa3015d44b9a679503ed897dd16a620f4c75b" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk8", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-jdk8-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20/kotlin-stdlib-jdk8-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20/kotlin-stdlib-jdk8-1.4.20.pom" - ], - "sha256": "9e9e5ef18adb90952c156d4d4bf7d0ba7abc58903423534d7b1831f5c6b9d5a8" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk8", - "version": "1.4.21-2", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-stdlib-jdk8-1.4.21-2.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.21-2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.21-2/kotlin-stdlib-jdk8-1.4.21-2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.21-2/kotlin-stdlib-jdk8-1.4.21-2.jar" - ], - "sha256": "34424ac35012ba53d35f7cfe037025a8911ac1ef2f5bf69f94fb326a9d094be8" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-stdlib-jdk8", - "version": "1.4.21-2", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-stdlib-jdk8-1.4.21-2.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.21-2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.21-2/kotlin-stdlib-jdk8-1.4.21-2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.21-2/kotlin-stdlib-jdk8-1.4.21-2.pom" - ], - "sha256": "ec8e431c141187e3dd6ef5f6bcb8c876d481edba35f77e8757844da4b4d1276d" - }, - { - "id": { - "group": "org.jetbrains.kotlinx", - "name": "kotlinx-coroutines-core", - "version": "1.3.7", - "type": "jar", - "extension": "jar" - }, - "name": "kotlinx-coroutines-core-1.3.7.jar", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.7", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.7/kotlinx-coroutines-core-1.3.7.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.7/kotlinx-coroutines-core-1.3.7.jar" - ], - "sha256": "ad426ec76f52b1dcdf200f55495aea9a2d2796811884e8c4b514645061cf59f3" - }, - { - "id": { - "group": "org.jetbrains.kotlinx", - "name": "kotlinx-coroutines-core", - "version": "1.3.7", - "type": "pom", - "extension": "pom" - }, - "name": "kotlinx-coroutines-core-1.3.7.pom", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.7", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.7/kotlinx-coroutines-core-1.3.7.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.7/kotlinx-coroutines-core-1.3.7.pom" - ], - "sha256": "9e82078f4dafe1cc2e28f308a317912a45c6a88fc83c51db6ba8cb0ea0829ef1" - }, - { - "id": { - "group": "org.jetbrains.kotlinx", - "name": "kotlinx-coroutines-core-common", - "version": "1.3.3", - "type": "jar", - "extension": "jar" - }, - "name": "kotlinx-coroutines-core-common-1.3.3.jar", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.3", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.3/kotlinx-coroutines-core-common-1.3.3.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.3/kotlinx-coroutines-core-common-1.3.3.jar" - ], - "sha256": "4152d951dc864ebec0dadc348ebc04344df34d7a1de89d59f12824f702b98d28" - }, - { - "id": { - "group": "org.jetbrains.kotlinx", - "name": "kotlinx-coroutines-core-common", - "version": "1.3.3", - "type": "pom", - "extension": "pom" - }, - "name": "kotlinx-coroutines-core-common-1.3.3.pom", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.3", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.3/kotlinx-coroutines-core-common-1.3.3.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.3/kotlinx-coroutines-core-common-1.3.3.pom" - ], - "sha256": "77c8b77af4dca3cf23b0bc9c1ae6196866f5e6a9bfced3345747dac85b76e5fa" - }, - { - "id": { - "group": "org.jetbrains.kotlinx", - "name": "kotlinx-coroutines-core-jvm", - "version": "1.4.2", - "type": "jar", - "extension": "jar" - }, - "name": "kotlinx-coroutines-core-jvm-1.4.2.jar", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.4.2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.4.2/kotlinx-coroutines-core-jvm-1.4.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.4.2/kotlinx-coroutines-core-jvm-1.4.2.jar" - ], - "sha256": "4cd24a06b2a253110d8afd250e9eec6c6faafea6463d740824743d637e761f12" - }, - { - "id": { - "group": "org.jetbrains.kotlinx", - "name": "kotlinx-coroutines-core-jvm", - "version": "1.4.2", - "type": "module", - "extension": "module" - }, - "name": "kotlinx-coroutines-core-jvm-1.4.2.module", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.4.2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.4.2/kotlinx-coroutines-core-jvm-1.4.2.module", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.4.2/kotlinx-coroutines-core-jvm-1.4.2.module" - ], - "sha256": "5fe08de08f0e4156fafe08fea19a6bd0647aa39d63d968c2a78d1cb284d8f410" - }, - { - "id": { - "group": "org.jetbrains.kotlinx", - "name": "kotlinx-coroutines-core-jvm", - "version": "1.4.2", - "type": "pom", - "extension": "pom" - }, - "name": "kotlinx-coroutines-core-jvm-1.4.2.pom", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.4.2", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.4.2/kotlinx-coroutines-core-jvm-1.4.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.4.2/kotlinx-coroutines-core-jvm-1.4.2.pom" - ], - "sha256": "3286bd65e41eae735600c0e9a441cb4a0988d0d76647923b9c978c90b0cb7311" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-commons", - "version": "1.6.0", - "type": "jar", - "extension": "jar" - }, - "name": "junit-platform-commons-1.6.0.jar", - "path": "org/junit/platform/junit-platform-commons/1.6.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.jar" - ], - "sha256": "18accffaf3f1fe66daf9f13daa7d59b2ac6d06396f816a73b4d733d82d28ace6" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-commons", - "version": "1.6.0", - "type": "module", - "extension": "module" - }, - "name": "junit-platform-commons-1.6.0.module", - "path": "org/junit/platform/junit-platform-commons/1.6.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.module", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.module" - ], - "sha256": "16e0f6f7893159b21a156b818f32f0a4fdb909d2bdc850ed0c57582500578b4c" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-commons", - "version": "1.6.0", - "type": "pom", - "extension": "pom" - }, - "name": "junit-platform-commons-1.6.0.pom", - "path": "org/junit/platform/junit-platform-commons/1.6.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.pom" - ], - "sha256": "5751484ae2a6f661bba84fa8c2aae7d4912c693fe25eb3e0adff4d93824c0a9c" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-engine", - "version": "1.6.0", - "type": "jar", - "extension": "jar" - }, - "name": "junit-platform-engine-1.6.0.jar", - "path": "org/junit/platform/junit-platform-engine/1.6.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.jar" - ], - "sha256": "7aed5424cb31a8255daecb1fcb0c173b0b64b1262e1eb2eaf87bbc7aec5e6d76" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-engine", - "version": "1.6.0", - "type": "module", - "extension": "module" - }, - "name": "junit-platform-engine-1.6.0.module", - "path": "org/junit/platform/junit-platform-engine/1.6.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.module", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.module" - ], - "sha256": "9fab5f84f549fa7925289ddfe5b7dd88f30e6086a5df1de07ebf508a2df25741" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-engine", - "version": "1.6.0", - "type": "pom", - "extension": "pom" - }, - "name": "junit-platform-engine-1.6.0.pom", - "path": "org/junit/platform/junit-platform-engine/1.6.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.pom" - ], - "sha256": "55ed9236c3415cbe1d7b06e76f45508647ecb94bafedb99c3bf395f0913bf3d6" - }, - { - "id": { - "group": "org.opentest4j", - "name": "opentest4j", - "version": "1.2.0", - "type": "jar", - "extension": "jar" - }, - "name": "opentest4j-1.2.0.jar", - "path": "org/opentest4j/opentest4j/1.2.0", - "urls": [ - "https://jcenter.bintray.com/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" - ], - "sha256": "58812de60898d976fb81ef3b62da05c6604c18fd4a249f5044282479fc286af2" - }, - { - "id": { - "group": "org.opentest4j", - "name": "opentest4j", - "version": "1.2.0", - "type": "pom", - "extension": "pom" - }, - "name": "opentest4j-1.2.0.pom", - "path": "org/opentest4j/opentest4j/1.2.0", - "urls": [ - "https://jcenter.bintray.com/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" - ], - "sha256": "a96e671816c1ff8803bdec74c9241f025bdfb277da5d2b4ee02266405936f994" - }, - { - "id": { - "group": "org.ow2", - "name": "ow2", - "version": "1.5", - "type": "pom", - "extension": "pom" - }, - "name": "ow2-1.5.pom", - "path": "org/ow2/ow2/1.5", - "urls": [ - "https://jcenter.bintray.com/org/ow2/ow2/1.5/ow2-1.5.pom", - "https://repo.gradle.org/gradle/libs-releases/org/ow2/ow2/1.5/ow2-1.5.pom" - ], - "sha256": "0f8a1b116e760b8fe6389c51b84e4b07a70fc11082d4f936e453b583dd50b43b" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm", - "version": "7.1", - "type": "jar", - "extension": "jar" - }, - "name": "asm-7.1.jar", - "path": "org/ow2/asm/asm/7.1", - "urls": [ - "https://jcenter.bintray.com/org/ow2/asm/asm/7.1/asm-7.1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/ow2/asm/asm/7.1/asm-7.1.jar" - ], - "sha256": "4ab2fa2b6d2cc9ccb1eaa05ea329c407b47b13ed2915f62f8c4b8cc96258d4de" - }, - { - "id": { - "group": "org.ow2.asm", - "name": "asm", - "version": "7.1", - "type": "pom", - "extension": "pom" - }, - "name": "asm-7.1.pom", - "path": "org/ow2/asm/asm/7.1", - "urls": [ - "https://jcenter.bintray.com/org/ow2/asm/asm/7.1/asm-7.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/ow2/asm/asm/7.1/asm-7.1.pom" - ], - "sha256": "0f29742eada6588a46c679f499a6755e4b3939767004f2bd9c02019cfd1d3180" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-api", - "version": "2.0.0-alpha1", - "type": "jar", - "extension": "jar" - }, - "name": "slf4j-api-2.0.0-alpha1.jar", - "path": "org/slf4j/slf4j-api/2.0.0-alpha1", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-api/2.0.0-alpha1/slf4j-api-2.0.0-alpha1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/2.0.0-alpha1/slf4j-api-2.0.0-alpha1.jar" - ], - "sha256": "8df06cc146b8638a24cefb669d20f4bdb2c4497d5047c548a0a190df6f97c3a5" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-api", - "version": "2.0.0-alpha1", - "type": "pom", - "extension": "pom" - }, - "name": "slf4j-api-2.0.0-alpha1.pom", - "path": "org/slf4j/slf4j-api/2.0.0-alpha1", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-api/2.0.0-alpha1/slf4j-api-2.0.0-alpha1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/2.0.0-alpha1/slf4j-api-2.0.0-alpha1.pom" - ], - "sha256": "a775e6bbf89895978ea3b702aa759fd42c0f128e63d0a589fd5cf5d8afbf5451" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-parent", - "version": "2.0.0-alpha1", - "type": "pom", - "extension": "pom" - }, - "name": "slf4j-parent-2.0.0-alpha1.pom", - "path": "org/slf4j/slf4j-parent/2.0.0-alpha1", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-parent/2.0.0-alpha1/slf4j-parent-2.0.0-alpha1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-parent/2.0.0-alpha1/slf4j-parent-2.0.0-alpha1.pom" - ], - "sha256": "fd3edb9fd9b7cabd67a0c29c0c9c0a6d1ae7a40053956aec281f42ccad1bdcf1" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-simple", - "version": "2.0.0-alpha1", - "type": "jar", - "extension": "jar" - }, - "name": "slf4j-simple-2.0.0-alpha1.jar", - "path": "org/slf4j/slf4j-simple/2.0.0-alpha1", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-simple/2.0.0-alpha1/slf4j-simple-2.0.0-alpha1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-simple/2.0.0-alpha1/slf4j-simple-2.0.0-alpha1.jar" - ], - "sha256": "3b6f446dec6cb5e8a6b1c1e85d7d756cdc934fec688464cc6bd201d95cd387cf" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-simple", - "version": "2.0.0-alpha1", - "type": "pom", - "extension": "pom" - }, - "name": "slf4j-simple-2.0.0-alpha1.pom", - "path": "org/slf4j/slf4j-simple/2.0.0-alpha1", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-simple/2.0.0-alpha1/slf4j-simple-2.0.0-alpha1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-simple/2.0.0-alpha1/slf4j-simple-2.0.0-alpha1.pom" - ], - "sha256": "df3a810360871ab8c6c3c852446a162613dba3184f99e26082cc5d7b9138c475" - }, - { - "id": { - "group": "org.sonatype.oss", - "name": "oss-parent", - "version": "7", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-7.pom", - "path": "org/sonatype/oss/oss-parent/7", - "urls": [ - "https://jcenter.bintray.com/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", - "https://repo.gradle.org/gradle/libs-releases/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], - "sha256": "b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454" - }, - { - "id": { - "group": "org.spekframework.spek2", - "name": "spek-dsl-jvm", - "version": "2.0.15", - "type": "jar", - "extension": "jar" - }, - "name": "spek-dsl-jvm-2.0.15.jar", - "path": "org/spekframework/spek2/spek-dsl-jvm/2.0.15", - "urls": [ - "https://jcenter.bintray.com/org/spekframework/spek2/spek-dsl-jvm/2.0.15/spek-dsl-jvm-2.0.15.jar", - "https://repo.gradle.org/gradle/libs-releases/org/spekframework/spek2/spek-dsl-jvm/2.0.15/spek-dsl-jvm-2.0.15.jar" - ], - "sha256": "3e70c76afffe848fc7b3a5368fa0674087de5e80215b1cfc9ff3be6a92d5fd19" - }, - { - "id": { - "group": "org.spekframework.spek2", - "name": "spek-dsl-jvm", - "version": "2.0.15", - "type": "pom", - "extension": "pom" - }, - "name": "spek-dsl-jvm-2.0.15.pom", - "path": "org/spekframework/spek2/spek-dsl-jvm/2.0.15", - "urls": [ - "https://jcenter.bintray.com/org/spekframework/spek2/spek-dsl-jvm/2.0.15/spek-dsl-jvm-2.0.15.pom", - "https://repo.gradle.org/gradle/libs-releases/org/spekframework/spek2/spek-dsl-jvm/2.0.15/spek-dsl-jvm-2.0.15.pom" - ], - "sha256": "2596fb48410977f38b88b6a31cf5e674d905ccdf3e2977e5748b9996e61cca4d" - }, - { - "id": { - "group": "org.spekframework.spek2", - "name": "spek-runner-junit5", - "version": "2.0.15", - "type": "jar", - "extension": "jar" - }, - "name": "spek-runner-junit5-2.0.15.jar", - "path": "org/spekframework/spek2/spek-runner-junit5/2.0.15", - "urls": [ - "https://jcenter.bintray.com/org/spekframework/spek2/spek-runner-junit5/2.0.15/spek-runner-junit5-2.0.15.jar", - "https://repo.gradle.org/gradle/libs-releases/org/spekframework/spek2/spek-runner-junit5/2.0.15/spek-runner-junit5-2.0.15.jar" - ], - "sha256": "2045cbd6657135ac60b45112721ed74bdfe1d8022f1744274cb3e534fccc7243" - }, - { - "id": { - "group": "org.spekframework.spek2", - "name": "spek-runner-junit5", - "version": "2.0.15", - "type": "pom", - "extension": "pom" - }, - "name": "spek-runner-junit5-2.0.15.pom", - "path": "org/spekframework/spek2/spek-runner-junit5/2.0.15", - "urls": [ - "https://jcenter.bintray.com/org/spekframework/spek2/spek-runner-junit5/2.0.15/spek-runner-junit5-2.0.15.pom", - "https://repo.gradle.org/gradle/libs-releases/org/spekframework/spek2/spek-runner-junit5/2.0.15/spek-runner-junit5-2.0.15.pom" - ], - "sha256": "7e05232a621285219d0f03f4b4e02fa18725af6142d2ff440414f16f7e6f0b8e" - }, - { - "id": { - "group": "org.spekframework.spek2", - "name": "spek-runtime-jvm", - "version": "2.0.15", - "type": "jar", - "extension": "jar" - }, - "name": "spek-runtime-jvm-2.0.15.jar", - "path": "org/spekframework/spek2/spek-runtime-jvm/2.0.15", - "urls": [ - "https://jcenter.bintray.com/org/spekframework/spek2/spek-runtime-jvm/2.0.15/spek-runtime-jvm-2.0.15.jar", - "https://repo.gradle.org/gradle/libs-releases/org/spekframework/spek2/spek-runtime-jvm/2.0.15/spek-runtime-jvm-2.0.15.jar" - ], - "sha256": "3437373f26f846929bccc5ea2f31b7426f0d05303a5410d31ea7d6781bbb6cef" - }, - { - "id": { - "group": "org.spekframework.spek2", - "name": "spek-runtime-jvm", - "version": "2.0.15", - "type": "pom", - "extension": "pom" - }, - "name": "spek-runtime-jvm-2.0.15.pom", - "path": "org/spekframework/spek2/spek-runtime-jvm/2.0.15", - "urls": [ - "https://jcenter.bintray.com/org/spekframework/spek2/spek-runtime-jvm/2.0.15/spek-runtime-jvm-2.0.15.pom", - "https://repo.gradle.org/gradle/libs-releases/org/spekframework/spek2/spek-runtime-jvm/2.0.15/spek-runtime-jvm-2.0.15.pom" - ], - "sha256": "ed1819e7c556c81135800f81572ef688fc593689e4055d451fe82483cc598fa6" - }, - { - "id": { - "group": "ch.qos.logback", - "name": "logback-classic", - "version": "1.2.3", - "type": "jar", - "extension": "jar" - }, - "name": "logback-classic-1.2.3.jar", - "path": "ch/qos/logback/logback-classic/1.2.3", - "urls": [ - "https://jcenter.bintray.com/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar", - "https://repo.gradle.org/gradle/libs-releases/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar" - ], - "sha256": "fb53f8539e7fcb8f093a56e138112056ec1dc809ebb020b59d8a36a5ebac37e0" - }, - { - "id": { - "group": "ch.qos.logback", - "name": "logback-classic", - "version": "1.2.3", - "type": "pom", - "extension": "pom" - }, - "name": "logback-classic-1.2.3.pom", - "path": "ch/qos/logback/logback-classic/1.2.3", - "urls": [ - "https://jcenter.bintray.com/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.pom", - "https://repo.gradle.org/gradle/libs-releases/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.pom" - ], - "sha256": "a051eb1a2548b93c99abca8eb71d5c75d2ff06976682960348124bc4901a5315" - }, - { - "id": { - "group": "ch.qos.logback", - "name": "logback-core", - "version": "1.2.3", - "type": "jar", - "extension": "jar" - }, - "name": "logback-core-1.2.3.jar", - "path": "ch/qos/logback/logback-core/1.2.3", - "urls": [ - "https://jcenter.bintray.com/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar", - "https://repo.gradle.org/gradle/libs-releases/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar" - ], - "sha256": "5946d837fe6f960c02a53eda7a6926ecc3c758bbdd69aa453ee429f858217f22" - }, - { - "id": { - "group": "ch.qos.logback", - "name": "logback-core", - "version": "1.2.3", - "type": "pom", - "extension": "pom" - }, - "name": "logback-core-1.2.3.pom", - "path": "ch/qos/logback/logback-core/1.2.3", - "urls": [ - "https://jcenter.bintray.com/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.pom", - "https://repo.gradle.org/gradle/libs-releases/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.pom" - ], - "sha256": "df4d7181ec51655baaaab067971180d7681643ddd274139f0c3078dba14e97e0" - }, - { - "id": { - "group": "ch.qos.logback", - "name": "logback-parent", - "version": "1.2.3", - "type": "pom", - "extension": "pom" - }, - "name": "logback-parent-1.2.3.pom", - "path": "ch/qos/logback/logback-parent/1.2.3", - "urls": [ - "https://jcenter.bintray.com/ch/qos/logback/logback-parent/1.2.3/logback-parent-1.2.3.pom", - "https://repo.gradle.org/gradle/libs-releases/ch/qos/logback/logback-parent/1.2.3/logback-parent-1.2.3.pom" - ], - "sha256": "79cd021dafc7b0255d3cdd3fd70cbaa638df73995749a348ee82c45635eab26a" - }, - { - "id": { - "group": "com.adobe.testing", - "name": "s3mock", - "version": "2.1.28", - "type": "jar", - "extension": "jar" - }, - "name": "s3mock-2.1.28.jar", - "path": "com/adobe/testing/s3mock/2.1.28", - "urls": [ - "https://jcenter.bintray.com/com/adobe/testing/s3mock/2.1.28/s3mock-2.1.28.jar", - "https://repo.gradle.org/gradle/libs-releases/com/adobe/testing/s3mock/2.1.28/s3mock-2.1.28.jar" - ], - "sha256": "ce38f83a11d958de1de9425077a4e662efa3047eb6dd281440b3cd9e2df79979" - }, - { - "id": { - "group": "com.adobe.testing", - "name": "s3mock", - "version": "2.1.28", - "type": "pom", - "extension": "pom" - }, - "name": "s3mock-2.1.28.pom", - "path": "com/adobe/testing/s3mock/2.1.28", - "urls": [ - "https://jcenter.bintray.com/com/adobe/testing/s3mock/2.1.28/s3mock-2.1.28.pom", - "https://repo.gradle.org/gradle/libs-releases/com/adobe/testing/s3mock/2.1.28/s3mock-2.1.28.pom" - ], - "sha256": "1e5b40ba8984b9840416f99c8e7d9702cb3f078e87ec57c6844ed75a02ad472a" - }, - { - "id": { - "group": "com.adobe.testing", - "name": "s3mock-junit5", - "version": "2.1.28", - "type": "jar", - "extension": "jar" - }, - "name": "s3mock-junit5-2.1.28.jar", - "path": "com/adobe/testing/s3mock-junit5/2.1.28", - "urls": [ - "https://jcenter.bintray.com/com/adobe/testing/s3mock-junit5/2.1.28/s3mock-junit5-2.1.28.jar", - "https://repo.gradle.org/gradle/libs-releases/com/adobe/testing/s3mock-junit5/2.1.28/s3mock-junit5-2.1.28.jar" - ], - "sha256": "89fdb3ff64363c4227b0bce82721a799eb3fb2f9307240fc43fab3a775098086" - }, - { - "id": { - "group": "com.adobe.testing", - "name": "s3mock-junit5", - "version": "2.1.28", - "type": "pom", - "extension": "pom" - }, - "name": "s3mock-junit5-2.1.28.pom", - "path": "com/adobe/testing/s3mock-junit5/2.1.28", - "urls": [ - "https://jcenter.bintray.com/com/adobe/testing/s3mock-junit5/2.1.28/s3mock-junit5-2.1.28.pom", - "https://repo.gradle.org/gradle/libs-releases/com/adobe/testing/s3mock-junit5/2.1.28/s3mock-junit5-2.1.28.pom" - ], - "sha256": "f67200cdacf2e47f85826fae213a473cb7793334a26d8c0243259370d70b11b9" - }, - { - "id": { - "group": "com.adobe.testing", - "name": "s3mock-parent", - "version": "2.1.28", - "type": "pom", - "extension": "pom" - }, - "name": "s3mock-parent-2.1.28.pom", - "path": "com/adobe/testing/s3mock-parent/2.1.28", - "urls": [ - "https://jcenter.bintray.com/com/adobe/testing/s3mock-parent/2.1.28/s3mock-parent-2.1.28.pom", - "https://repo.gradle.org/gradle/libs-releases/com/adobe/testing/s3mock-parent/2.1.28/s3mock-parent-2.1.28.pom" - ], - "sha256": "9e5d1afe333e1a1c7dfc8769e6a832bea71b5394be8f3a6064c85ece833dda76" - }, - { - "id": { - "group": "com.adobe.testing", - "name": "s3mock-testsupport-common", - "version": "2.1.28", - "type": "jar", - "extension": "jar" - }, - "name": "s3mock-testsupport-common-2.1.28.jar", - "path": "com/adobe/testing/s3mock-testsupport-common/2.1.28", - "urls": [ - "https://jcenter.bintray.com/com/adobe/testing/s3mock-testsupport-common/2.1.28/s3mock-testsupport-common-2.1.28.jar", - "https://repo.gradle.org/gradle/libs-releases/com/adobe/testing/s3mock-testsupport-common/2.1.28/s3mock-testsupport-common-2.1.28.jar" - ], - "sha256": "b9a87cc1d6a5e5229bb9fcfcbc5421044d502c12b5359b88102c3c4862313010" - }, - { - "id": { - "group": "com.adobe.testing", - "name": "s3mock-testsupport-common", - "version": "2.1.28", - "type": "pom", - "extension": "pom" - }, - "name": "s3mock-testsupport-common-2.1.28.pom", - "path": "com/adobe/testing/s3mock-testsupport-common/2.1.28", - "urls": [ - "https://jcenter.bintray.com/com/adobe/testing/s3mock-testsupport-common/2.1.28/s3mock-testsupport-common-2.1.28.pom", - "https://repo.gradle.org/gradle/libs-releases/com/adobe/testing/s3mock-testsupport-common/2.1.28/s3mock-testsupport-common-2.1.28.pom" - ], - "sha256": "460b49d1c7372349b37d2f78c20a9bd265bc9a8ea6b08d398de92bac29e83f79" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-core", - "version": "1.11.946", - "type": "jar", - "extension": "jar" - }, - "name": "aws-java-sdk-core-1.11.946.jar", - "path": "com/amazonaws/aws-java-sdk-core/1.11.946", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-core/1.11.946/aws-java-sdk-core-1.11.946.jar", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-core/1.11.946/aws-java-sdk-core-1.11.946.jar" - ], - "sha256": "069b44aa0ee73e1f67b1a62a1463c7b0a5489212d8b6870d367d5b8ddceacb3c" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-core", - "version": "1.11.946", - "type": "pom", - "extension": "pom" - }, - "name": "aws-java-sdk-core-1.11.946.pom", - "path": "com/amazonaws/aws-java-sdk-core/1.11.946", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-core/1.11.946/aws-java-sdk-core-1.11.946.pom", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-core/1.11.946/aws-java-sdk-core-1.11.946.pom" - ], - "sha256": "dbd69cb610ec4efdf598337f47a360b82f9479bf3f33e43fb3d76dc1415bdef7" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-kms", - "version": "1.11.946", - "type": "jar", - "extension": "jar" - }, - "name": "aws-java-sdk-kms-1.11.946.jar", - "path": "com/amazonaws/aws-java-sdk-kms/1.11.946", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-kms/1.11.946/aws-java-sdk-kms-1.11.946.jar", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-kms/1.11.946/aws-java-sdk-kms-1.11.946.jar" - ], - "sha256": "014c10aee935f78440e28ccf85ca1198ce102e70d4fd3eae8d1dbbf0762dc460" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-kms", - "version": "1.11.946", - "type": "pom", - "extension": "pom" - }, - "name": "aws-java-sdk-kms-1.11.946.pom", - "path": "com/amazonaws/aws-java-sdk-kms/1.11.946", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-kms/1.11.946/aws-java-sdk-kms-1.11.946.pom", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-kms/1.11.946/aws-java-sdk-kms-1.11.946.pom" - ], - "sha256": "46c40ca44e08c7709274dda5c1258a28d4328e4d660041db3c5d1feb4354a44a" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-pom", - "version": "1.11.946", - "type": "pom", - "extension": "pom" - }, - "name": "aws-java-sdk-pom-1.11.946.pom", - "path": "com/amazonaws/aws-java-sdk-pom/1.11.946", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-pom/1.11.946/aws-java-sdk-pom-1.11.946.pom", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-pom/1.11.946/aws-java-sdk-pom-1.11.946.pom" - ], - "sha256": "0c4596eeb56aff01910add11a55162dfb9b06217486ad883b69e3397e79cb6bc" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-s3", - "version": "1.11.946", - "type": "jar", - "extension": "jar" - }, - "name": "aws-java-sdk-s3-1.11.946.jar", - "path": "com/amazonaws/aws-java-sdk-s3/1.11.946", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-s3/1.11.946/aws-java-sdk-s3-1.11.946.jar", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-s3/1.11.946/aws-java-sdk-s3-1.11.946.jar" - ], - "sha256": "af143750b41e98d7deded17ccfef7ca1df09919e2ea2bd911972517811495bec" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-s3", - "version": "1.11.946", - "type": "pom", - "extension": "pom" - }, - "name": "aws-java-sdk-s3-1.11.946.pom", - "path": "com/amazonaws/aws-java-sdk-s3/1.11.946", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-s3/1.11.946/aws-java-sdk-s3-1.11.946.pom", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-s3/1.11.946/aws-java-sdk-s3-1.11.946.pom" - ], - "sha256": "944ac1b379578859cef7080eefa09410d5dff2a82f6a3124acffbd4108d0cf14" - }, - { - "id": { - "group": "com.amazonaws", - "name": "jmespath-java", - "version": "1.11.946", - "type": "jar", - "extension": "jar" - }, - "name": "jmespath-java-1.11.946.jar", - "path": "com/amazonaws/jmespath-java/1.11.946", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/jmespath-java/1.11.946/jmespath-java-1.11.946.jar", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/jmespath-java/1.11.946/jmespath-java-1.11.946.jar" - ], - "sha256": "8ffa727f37a9e4e28d5f73104bef41c136dc71398ca51b8313afa7ff6d8ff04a" - }, - { - "id": { - "group": "com.amazonaws", - "name": "jmespath-java", - "version": "1.11.946", - "type": "pom", - "extension": "pom" - }, - "name": "jmespath-java-1.11.946.pom", - "path": "com/amazonaws/jmespath-java/1.11.946", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/jmespath-java/1.11.946/jmespath-java-1.11.946.pom", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/jmespath-java/1.11.946/jmespath-java-1.11.946.pom" - ], - "sha256": "56c899dd8ecaaba7c1bdcf3357a7bccd5eef95aa290fa3e68cc968f9b8a9f731" - }, - { - "id": { - "group": "com.fasterxml", - "name": "classmate", - "version": "1.3.4", - "type": "jar", - "extension": "jar" - }, - "name": "classmate-1.3.4.jar", - "path": "com/fasterxml/classmate/1.3.4", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/classmate/1.3.4/classmate-1.3.4.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/classmate/1.3.4/classmate-1.3.4.jar" - ], - "sha256": "c2bfcc21467351d0f9a1558822b72dbac2b21f6b9f700a44fc6b345491ef3c88" - }, - { - "id": { - "group": "com.fasterxml", - "name": "classmate", - "version": "1.3.4", - "type": "pom", - "extension": "pom" - }, - "name": "classmate-1.3.4.pom", - "path": "com/fasterxml/classmate/1.3.4", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/classmate/1.3.4/classmate-1.3.4.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/classmate/1.3.4/classmate-1.3.4.pom" - ], - "sha256": "d8e7f6d146289aca1477195e67bb4b7be5f29bbbb5f804198d03cfba92fd8490" - }, - { - "id": { - "group": "com.fasterxml", - "name": "oss-parent", - "version": "23", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-23.pom", - "path": "com/fasterxml/oss-parent/23", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/oss-parent/23/oss-parent-23.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/oss-parent/23/oss-parent-23.pom" - ], - "sha256": "4c3ac4f7fe484dd541ebb33bbf1fd86da9e9dfb330138500714004d28831792f" - }, - { - "id": { - "group": "com.fasterxml", - "name": "oss-parent", - "version": "24", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-24.pom", - "path": "com/fasterxml/oss-parent/24", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/oss-parent/24/oss-parent-24.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/oss-parent/24/oss-parent-24.pom" - ], - "sha256": "e3809d58570390c327efe56587d8dea3caa53186b91875e0b36226e08211f05a" - }, - { - "id": { - "group": "com.fasterxml", - "name": "oss-parent", - "version": "28", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-28.pom", - "path": "com/fasterxml/oss-parent/28", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/oss-parent/28/oss-parent-28.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/oss-parent/28/oss-parent-28.pom" - ], - "sha256": "c4c369e36b8820ad26d2e6c70ff44ad99efafe19399a5d1178e9ea82f4d2fd38" - }, - { - "id": { - "group": "com.fasterxml", - "name": "oss-parent", - "version": "32", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-32.pom", - "path": "com/fasterxml/oss-parent/32", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/oss-parent/32/oss-parent-32.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/oss-parent/32/oss-parent-32.pom" - ], - "sha256": "9d398db630c4d252e86154875cf293f26a46e3996fdac0d04a814055801de036" - }, - { - "id": { - "group": "com.fasterxml", - "name": "oss-parent", - "version": "33", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-33.pom", - "path": "com/fasterxml/oss-parent/33", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/oss-parent/33/oss-parent-33.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/oss-parent/33/oss-parent-33.pom" - ], - "sha256": "c54370964cfcce2319bd9a85f5e14f500c8518989ae56b1b475df1b348b73108" - }, - { - "id": { - "group": "com.fasterxml", - "name": "oss-parent", - "version": "34", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-34.pom", - "path": "com/fasterxml/oss-parent/34", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/oss-parent/34/oss-parent-34.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/oss-parent/34/oss-parent-34.pom" - ], - "sha256": "9a75f3e32bf9d6e00678d9447ace4de8596a2d221af5cf5bbc7f571cac795006" - }, - { - "id": { - "group": "com.fasterxml.jackson", - "name": "jackson-base", - "version": "2.9.9", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-base-2.9.9.pom", - "path": "com/fasterxml/jackson/jackson-base/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/jackson-base/2.9.9/jackson-base-2.9.9.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/jackson-base/2.9.9/jackson-base-2.9.9.pom" - ], - "sha256": "43368867d2d8c30dc46f0cde6cb5a320bfb9fd7463728be501de61545265975d" - }, - { - "id": { - "group": "com.fasterxml.jackson", - "name": "jackson-bom", - "version": "2.9.9", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-bom-2.9.9.pom", - "path": "com/fasterxml/jackson/jackson-bom/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/jackson-bom/2.9.9/jackson-bom-2.9.9.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/jackson-bom/2.9.9/jackson-bom-2.9.9.pom" - ], - "sha256": "237f58930ab02d7d52e9afcc825b2e2d8a0abdd0e86d1d5da1b579dc65809c91" - }, - { - "id": { - "group": "com.fasterxml.jackson", - "name": "jackson-parent", - "version": "2.6.1", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-parent-2.6.1.pom", - "path": "com/fasterxml/jackson/jackson-parent/2.6.1", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/jackson-parent/2.6.1/jackson-parent-2.6.1.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/jackson-parent/2.6.1/jackson-parent-2.6.1.pom" - ], - "sha256": "b4e97a2a9b620bd2665bcf8322665a69c4ee8f8c6e41acc3a60bde9fc5ab6cab" - }, - { - "id": { - "group": "com.fasterxml.jackson", - "name": "jackson-parent", - "version": "2.6.2", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-parent-2.6.2.pom", - "path": "com/fasterxml/jackson/jackson-parent/2.6.2", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/jackson-parent/2.6.2/jackson-parent-2.6.2.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/jackson-parent/2.6.2/jackson-parent-2.6.2.pom" - ], - "sha256": "433ab05cf38ea36dbe2fb12b9c879dc4a6b6c6aea99255c13c88bd2326c1207e" - }, - { - "id": { - "group": "com.fasterxml.jackson", - "name": "jackson-parent", - "version": "2.9.1.2", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-parent-2.9.1.2.pom", - "path": "com/fasterxml/jackson/jackson-parent/2.9.1.2", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/jackson-parent/2.9.1.2/jackson-parent-2.9.1.2.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/jackson-parent/2.9.1.2/jackson-parent-2.9.1.2.pom" - ], - "sha256": "9517e405c6b3b8a035215ad5727013a3519eb7591743fe1dcc04df6635683cf9" - }, - { - "id": { - "group": "com.fasterxml.jackson", - "name": "jackson-parent", - "version": "2.9.0", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-parent-2.9.0.pom", - "path": "com/fasterxml/jackson/jackson-parent/2.9.0", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/jackson-parent/2.9.0/jackson-parent-2.9.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/jackson-parent/2.9.0/jackson-parent-2.9.0.pom" - ], - "sha256": "000508b61dd124387e58199fb9e2113c1b5d8b386c5bf7a891b2de6041eb1d52" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-annotations", - "version": "2.6.0", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-annotations-2.6.0.jar", - "path": "com/fasterxml/jackson/core/jackson-annotations/2.6.0", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-annotations/2.6.0/jackson-annotations-2.6.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-annotations/2.6.0/jackson-annotations-2.6.0.jar" - ], - "sha256": "03348c047d981376cc444fc466cd80bda8d7eb0698dc6a99dd52c5aa15eff5ad" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-annotations", - "version": "2.6.0", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-annotations-2.6.0.pom", - "path": "com/fasterxml/jackson/core/jackson-annotations/2.6.0", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-annotations/2.6.0/jackson-annotations-2.6.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-annotations/2.6.0/jackson-annotations-2.6.0.pom" - ], - "sha256": "2bb8f72feb4d935ac1cb639085dd4a7dba3319261a132c24338fb443c44ed055" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-annotations", - "version": "2.9.0", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-annotations-2.9.0.jar", - "path": "com/fasterxml/jackson/core/jackson-annotations/2.9.0", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar" - ], - "sha256": "45d32ac61ef8a744b464c54c2b3414be571016dd46bfc2bec226761cf7ae457a" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-annotations", - "version": "2.9.0", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-annotations-2.9.0.pom", - "path": "com/fasterxml/jackson/core/jackson-annotations/2.9.0", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.pom" - ], - "sha256": "edeb9d9bfca726b441bfae09b69d94b5db99cd5a9da5f4a061b90e72b640905c" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-core", - "version": "2.6.7", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-core-2.6.7.jar", - "path": "com/fasterxml/jackson/core/jackson-core/2.6.7", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-core/2.6.7/jackson-core-2.6.7.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-core/2.6.7/jackson-core-2.6.7.jar" - ], - "sha256": "918c04b9f9043d51dead2192b5d94d9f065870c9f26c8defbe9c6dbc951f304f" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-core", - "version": "2.6.7", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-core-2.6.7.pom", - "path": "com/fasterxml/jackson/core/jackson-core/2.6.7", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-core/2.6.7/jackson-core-2.6.7.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-core/2.6.7/jackson-core-2.6.7.pom" - ], - "sha256": "c3beda709cfdb469d45d91a1b104503596d8b3b9c564eca75ade11d7d0559e89" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-core", - "version": "2.9.9", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-core-2.9.9.jar", - "path": "com/fasterxml/jackson/core/jackson-core/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.jar" - ], - "sha256": "3083079be6088db2ed0a0c6ff92204e0aa48fa1de9db5b59c468f35acf882c2c" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-core", - "version": "2.9.9", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-core-2.9.9.pom", - "path": "com/fasterxml/jackson/core/jackson-core/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.pom" - ], - "sha256": "c56ab2829b653cc7ca648106095f06038566d8095c01f2181355dc907b244f61" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-databind", - "version": "2.6.7.4", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-databind-2.6.7.4.jar", - "path": "com/fasterxml/jackson/core/jackson-databind/2.6.7.4", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-databind/2.6.7.4/jackson-databind-2.6.7.4.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-databind/2.6.7.4/jackson-databind-2.6.7.4.jar" - ], - "sha256": "250a06395026763d4334db87f5c286880bf0f0a531882a9964344675783b7d54" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-databind", - "version": "2.9.9.3", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-databind-2.9.9.3.jar", - "path": "com/fasterxml/jackson/core/jackson-databind/2.9.9.3", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-databind/2.9.9.3/jackson-databind-2.9.9.3.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-databind/2.9.9.3/jackson-databind-2.9.9.3.jar" - ], - "sha256": "5e5b577397531280728ea32a7fdcbefa8187eb84ec0d3d3cae35a0d6350792ba" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-databind", - "version": "2.6.7.4", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-databind-2.6.7.4.pom", - "path": "com/fasterxml/jackson/core/jackson-databind/2.6.7.4", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-databind/2.6.7.4/jackson-databind-2.6.7.4.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-databind/2.6.7.4/jackson-databind-2.6.7.4.pom" - ], - "sha256": "fff0473f503b6861bf8e7bf50a5fdca65c0a786859359d1ebef1d99dd17e4f56" - }, - { - "id": { - "group": "com.fasterxml.jackson.core", - "name": "jackson-databind", - "version": "2.9.9.3", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-databind-2.9.9.3.pom", - "path": "com/fasterxml/jackson/core/jackson-databind/2.9.9.3", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-databind/2.9.9.3/jackson-databind-2.9.9.3.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/core/jackson-databind/2.9.9.3/jackson-databind-2.9.9.3.pom" - ], - "sha256": "9089c997531db0085c0bb9da1a1ab4eb153f74cb69f91a23047c878ddd192663" - }, - { - "id": { - "group": "com.fasterxml.jackson.dataformat", - "name": "jackson-dataformat-cbor", - "version": "2.6.7", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-dataformat-cbor-2.6.7.jar", - "path": "com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.6.7", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.6.7/jackson-dataformat-cbor-2.6.7.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.6.7/jackson-dataformat-cbor-2.6.7.jar" - ], - "sha256": "956a0fb9186a796b8a6548909da1ee55004279647e261c7f540e5d49d4f199bf" - }, - { - "id": { - "group": "com.fasterxml.jackson.dataformat", - "name": "jackson-dataformat-cbor", - "version": "2.6.7", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-dataformat-cbor-2.6.7.pom", - "path": "com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.6.7", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.6.7/jackson-dataformat-cbor-2.6.7.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.6.7/jackson-dataformat-cbor-2.6.7.pom" - ], - "sha256": "43909898d124c29fd48c0726b572e3f28357c6f81209b0c5c4e9d765682bcc21" - }, - { - "id": { - "group": "com.fasterxml.jackson.dataformat", - "name": "jackson-dataformat-xml", - "version": "2.9.9", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-dataformat-xml-2.9.9.jar", - "path": "com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.9.9/jackson-dataformat-xml-2.9.9.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.9.9/jackson-dataformat-xml-2.9.9.jar" - ], - "sha256": "f5ac00fdc522854d3ae82fc35887442fca984a4df1b844e29d55e887080bb521" - }, - { - "id": { - "group": "com.fasterxml.jackson.dataformat", - "name": "jackson-dataformat-xml", - "version": "2.9.9", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-dataformat-xml-2.9.9.pom", - "path": "com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.9.9/jackson-dataformat-xml-2.9.9.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.9.9/jackson-dataformat-xml-2.9.9.pom" - ], - "sha256": "ed4b80fc0e9baa568098e781e60917e2a0a0b0acb11f31d478c374c21df518c0" - }, - { - "id": { - "group": "com.fasterxml.jackson.datatype", - "name": "jackson-datatype-jdk8", - "version": "2.9.9", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-datatype-jdk8-2.9.9.jar", - "path": "com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.9/jackson-datatype-jdk8-2.9.9.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.9/jackson-datatype-jdk8-2.9.9.jar" - ], - "sha256": "5a46cb8e837b6b03bf08e46133ef331d58ff47a576d20681ef04e904244eaa13" - }, - { - "id": { - "group": "com.fasterxml.jackson.datatype", - "name": "jackson-datatype-jdk8", - "version": "2.9.9", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-datatype-jdk8-2.9.9.pom", - "path": "com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.9/jackson-datatype-jdk8-2.9.9.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.9/jackson-datatype-jdk8-2.9.9.pom" - ], - "sha256": "65ce8dd5910586da56654a773b64181de76281af0f1a42e79747a9f67fd9d3f7" - }, - { - "id": { - "group": "com.fasterxml.jackson.datatype", - "name": "jackson-datatype-jsr310", - "version": "2.9.9", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-datatype-jsr310-2.9.9.jar", - "path": "com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.9/jackson-datatype-jsr310-2.9.9.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.9/jackson-datatype-jsr310-2.9.9.jar" - ], - "sha256": "7eca12e26c8f61e902b88bec24124007bf670896663e8b592c88cc5653ebb457" - }, - { - "id": { - "group": "com.fasterxml.jackson.datatype", - "name": "jackson-datatype-jsr310", - "version": "2.9.9", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-datatype-jsr310-2.9.9.pom", - "path": "com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.9/jackson-datatype-jsr310-2.9.9.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.9/jackson-datatype-jsr310-2.9.9.pom" - ], - "sha256": "2252a0aefef52c60967529610cbc9053099c98608c9017bb8788cde809d243f4" - }, - { - "id": { - "group": "com.fasterxml.jackson.module", - "name": "jackson-module-jaxb-annotations", - "version": "2.9.9", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-module-jaxb-annotations-2.9.9.jar", - "path": "com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.9.9/jackson-module-jaxb-annotations-2.9.9.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.9.9/jackson-module-jaxb-annotations-2.9.9.jar" - ], - "sha256": "1b091f881673a5bb275afc1713e6db7da43038e193ef50d477ed65d4e3274f43" - }, - { - "id": { - "group": "com.fasterxml.jackson.module", - "name": "jackson-module-jaxb-annotations", - "version": "2.9.9", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-module-jaxb-annotations-2.9.9.pom", - "path": "com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.9.9/jackson-module-jaxb-annotations-2.9.9.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.9.9/jackson-module-jaxb-annotations-2.9.9.pom" - ], - "sha256": "e97d82c08dd329510fe3c286f4faf3699bc697a0f3e746529d904c4845fcbfbc" - }, - { - "id": { - "group": "com.fasterxml.jackson.module", - "name": "jackson-module-parameter-names", - "version": "2.9.9", - "type": "jar", - "extension": "jar" - }, - "name": "jackson-module-parameter-names-2.9.9.jar", - "path": "com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.9/jackson-module-parameter-names-2.9.9.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.9/jackson-module-parameter-names-2.9.9.jar" - ], - "sha256": "70b734dc294092ed31db147aa3bb0827981623f37110fef96099e63ddf05de46" - }, - { - "id": { - "group": "com.fasterxml.jackson.module", - "name": "jackson-module-parameter-names", - "version": "2.9.9", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-module-parameter-names-2.9.9.pom", - "path": "com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.9/jackson-module-parameter-names-2.9.9.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.9/jackson-module-parameter-names-2.9.9.pom" - ], - "sha256": "b6f64305008eb1f4fa020a6bc83aecd781565581f592c5ef2e6fc39bdba3044d" - }, - { - "id": { - "group": "com.fasterxml.jackson.module", - "name": "jackson-modules-base", - "version": "2.9.9", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-modules-base-2.9.9.pom", - "path": "com/fasterxml/jackson/module/jackson-modules-base/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/module/jackson-modules-base/2.9.9/jackson-modules-base-2.9.9.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/module/jackson-modules-base/2.9.9/jackson-modules-base-2.9.9.pom" - ], - "sha256": "9d72f276971f6412be61651d506c1a22e9f0cdf44dd1936008f8c8274fc920af" - }, - { - "id": { - "group": "com.fasterxml.jackson.module", - "name": "jackson-modules-java8", - "version": "2.9.9", - "type": "pom", - "extension": "pom" - }, - "name": "jackson-modules-java8-2.9.9.pom", - "path": "com/fasterxml/jackson/module/jackson-modules-java8/2.9.9", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/jackson/module/jackson-modules-java8/2.9.9/jackson-modules-java8-2.9.9.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/jackson/module/jackson-modules-java8/2.9.9/jackson-modules-java8-2.9.9.pom" - ], - "sha256": "498ef7fd0b84c2d51378a26f4f353bb97ce6b2f69757838b307dfae4dabd9d01" - }, - { - "id": { - "group": "com.fasterxml.woodstox", - "name": "woodstox-core", - "version": "5.1.0", - "type": "jar", - "extension": "jar" - }, - "name": "woodstox-core-5.1.0.jar", - "path": "com/fasterxml/woodstox/woodstox-core/5.1.0", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/woodstox/woodstox-core/5.1.0/woodstox-core-5.1.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/woodstox/woodstox-core/5.1.0/woodstox-core-5.1.0.jar" - ], - "sha256": "6d6107c3e6aac8f1c3e3762b89164b329fb2b15ec0afc8961cf6c4dc355f10bf" - }, - { - "id": { - "group": "com.fasterxml.woodstox", - "name": "woodstox-core", - "version": "5.1.0", - "type": "pom", - "extension": "pom" - }, - "name": "woodstox-core-5.1.0.pom", - "path": "com/fasterxml/woodstox/woodstox-core/5.1.0", - "urls": [ - "https://jcenter.bintray.com/com/fasterxml/woodstox/woodstox-core/5.1.0/woodstox-core-5.1.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/fasterxml/woodstox/woodstox-core/5.1.0/woodstox-core-5.1.0.pom" - ], - "sha256": "102c9016088d5ed6724667292bdc5e7eff3681026409ba9e83fb5c897df87242" - }, - { - "id": { - "group": "com.typesafe.netty", - "name": "netty-reactive-streams", - "version": "2.0.0", - "type": "jar", - "extension": "jar" - }, - "name": "netty-reactive-streams-2.0.0.jar", - "path": "com/typesafe/netty/netty-reactive-streams/2.0.0", - "urls": [ - "https://jcenter.bintray.com/com/typesafe/netty/netty-reactive-streams/2.0.0/netty-reactive-streams-2.0.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/typesafe/netty/netty-reactive-streams/2.0.0/netty-reactive-streams-2.0.0.jar" - ], - "sha256": "06e8dda47acca9cf719e04c07137e951c1cd35ade4f2fa7e8207d85af69fc013" - }, - { - "id": { - "group": "com.typesafe.netty", - "name": "netty-reactive-streams", - "version": "2.0.0", - "type": "pom", - "extension": "pom" - }, - "name": "netty-reactive-streams-2.0.0.pom", - "path": "com/typesafe/netty/netty-reactive-streams/2.0.0", - "urls": [ - "https://jcenter.bintray.com/com/typesafe/netty/netty-reactive-streams/2.0.0/netty-reactive-streams-2.0.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/typesafe/netty/netty-reactive-streams/2.0.0/netty-reactive-streams-2.0.0.pom" - ], - "sha256": "4fcb2aecf658acb2a5111d1d331b48f1e5ba360b0820fb8fe0082711a16c8fe3" - }, - { - "id": { - "group": "com.typesafe.netty", - "name": "netty-reactive-streams-http", - "version": "2.0.0", - "type": "jar", - "extension": "jar" - }, - "name": "netty-reactive-streams-http-2.0.0.jar", - "path": "com/typesafe/netty/netty-reactive-streams-http/2.0.0", - "urls": [ - "https://jcenter.bintray.com/com/typesafe/netty/netty-reactive-streams-http/2.0.0/netty-reactive-streams-http-2.0.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/typesafe/netty/netty-reactive-streams-http/2.0.0/netty-reactive-streams-http-2.0.0.jar" - ], - "sha256": "2ec06405533eb3280c13b1bf0fb26653dba8bb81d6935c657e4eb9de6198820a" - }, - { - "id": { - "group": "com.typesafe.netty", - "name": "netty-reactive-streams-http", - "version": "2.0.0", - "type": "pom", - "extension": "pom" - }, - "name": "netty-reactive-streams-http-2.0.0.pom", - "path": "com/typesafe/netty/netty-reactive-streams-http/2.0.0", - "urls": [ - "https://jcenter.bintray.com/com/typesafe/netty/netty-reactive-streams-http/2.0.0/netty-reactive-streams-http-2.0.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/typesafe/netty/netty-reactive-streams-http/2.0.0/netty-reactive-streams-http-2.0.0.pom" - ], - "sha256": "b8c6ab12fe4c3c49d073d0229a3f36d1cb8c48cf8b1f40764cfe9fc6cc967912" - }, - { - "id": { - "group": "com.typesafe.netty", - "name": "netty-reactive-streams-parent", - "version": "2.0.0", - "type": "pom", - "extension": "pom" - }, - "name": "netty-reactive-streams-parent-2.0.0.pom", - "path": "com/typesafe/netty/netty-reactive-streams-parent/2.0.0", - "urls": [ - "https://jcenter.bintray.com/com/typesafe/netty/netty-reactive-streams-parent/2.0.0/netty-reactive-streams-parent-2.0.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/typesafe/netty/netty-reactive-streams-parent/2.0.0/netty-reactive-streams-parent-2.0.0.pom" - ], - "sha256": "273f080f95b199193e9c45dc7b6bb0240ff4627d2a7976da911a2d8ab7d4922a" - }, - { - "id": { - "group": "commons-codec", - "name": "commons-codec", - "version": "1.11", - "type": "jar", - "extension": "jar" - }, - "name": "commons-codec-1.11.jar", - "path": "commons-codec/commons-codec/1.11", - "urls": [ - "https://jcenter.bintray.com/commons-codec/commons-codec/1.11/commons-codec-1.11.jar", - "https://repo.gradle.org/gradle/libs-releases/commons-codec/commons-codec/1.11/commons-codec-1.11.jar" - ], - "sha256": "e599d5318e97aa48f42136a2927e6dfa4e8881dff0e6c8e3109ddbbff51d7b7d" - }, - { - "id": { - "group": "commons-codec", - "name": "commons-codec", - "version": "1.11", - "type": "pom", - "extension": "pom" - }, - "name": "commons-codec-1.11.pom", - "path": "commons-codec/commons-codec/1.11", - "urls": [ - "https://jcenter.bintray.com/commons-codec/commons-codec/1.11/commons-codec-1.11.pom", - "https://repo.gradle.org/gradle/libs-releases/commons-codec/commons-codec/1.11/commons-codec-1.11.pom" - ], - "sha256": "c1e7140d1dea8fdf3528bc1e3c5444ac0b541297311f45f9806c213ec3ee9a10" - }, - { - "id": { - "group": "commons-io", - "name": "commons-io", - "version": "2.6", - "type": "jar", - "extension": "jar" - }, - "name": "commons-io-2.6.jar", - "path": "commons-io/commons-io/2.6", - "urls": [ - "https://jcenter.bintray.com/commons-io/commons-io/2.6/commons-io-2.6.jar", - "https://repo.gradle.org/gradle/libs-releases/commons-io/commons-io/2.6/commons-io-2.6.jar" - ], - "sha256": "f877d304660ac2a142f3865badfc971dec7ed73c747c7f8d5d2f5139ca736513" - }, - { - "id": { - "group": "commons-io", - "name": "commons-io", - "version": "2.6", - "type": "pom", - "extension": "pom" - }, - "name": "commons-io-2.6.pom", - "path": "commons-io/commons-io/2.6", - "urls": [ - "https://jcenter.bintray.com/commons-io/commons-io/2.6/commons-io-2.6.pom", - "https://repo.gradle.org/gradle/libs-releases/commons-io/commons-io/2.6/commons-io-2.6.pom" - ], - "sha256": "0c23863893a2291f5a7afdbd8d15923b3948afd87e563fa341cdcf6eae338a60" - }, - { - "id": { - "group": "commons-logging", - "name": "commons-logging", - "version": "1.2", - "type": "jar", - "extension": "jar" - }, - "name": "commons-logging-1.2.jar", - "path": "commons-logging/commons-logging/1.2", - "urls": [ - "https://jcenter.bintray.com/commons-logging/commons-logging/1.2/commons-logging-1.2.jar", - "https://repo.gradle.org/gradle/libs-releases/commons-logging/commons-logging/1.2/commons-logging-1.2.jar" - ], - "sha256": "daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636" - }, - { - "id": { - "group": "commons-logging", - "name": "commons-logging", - "version": "1.2", - "type": "pom", - "extension": "pom" - }, - "name": "commons-logging-1.2.pom", - "path": "commons-logging/commons-logging/1.2", - "urls": [ - "https://jcenter.bintray.com/commons-logging/commons-logging/1.2/commons-logging-1.2.pom", - "https://repo.gradle.org/gradle/libs-releases/commons-logging/commons-logging/1.2/commons-logging-1.2.pom" - ], - "sha256": "c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20" - }, - { - "id": { - "group": "io.netty", - "name": "netty-buffer", - "version": "4.1.33.Final", - "type": "jar", - "extension": "jar" - }, - "name": "netty-buffer-4.1.33.Final.jar", - "path": "io/netty/netty-buffer/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-buffer/4.1.33.Final/netty-buffer-4.1.33.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-buffer/4.1.33.Final/netty-buffer-4.1.33.Final.jar" - ], - "sha256": "dc458713d93fda555fa08a329fe26c7459569df660fe661405028f29cc478ed5" - }, - { - "id": { - "group": "io.netty", - "name": "netty-buffer", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-buffer-4.1.33.Final.pom", - "path": "io/netty/netty-buffer/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-buffer/4.1.33.Final/netty-buffer-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-buffer/4.1.33.Final/netty-buffer-4.1.33.Final.pom" - ], - "sha256": "ae399a01e75f4f1bfcb503703426dd378ae6461e1b2b3af75c03eb2ed3df16da" - }, - { - "id": { - "group": "io.netty", - "name": "netty-codec", - "version": "4.1.33.Final", - "type": "jar", - "extension": "jar" - }, - "name": "netty-codec-4.1.33.Final.jar", - "path": "io/netty/netty-codec/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-codec/4.1.33.Final/netty-codec-4.1.33.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-codec/4.1.33.Final/netty-codec-4.1.33.Final.jar" - ], - "sha256": "1bb36742dc14844c9f1f9165d7be42b5b3a3209e9a57c5e466c138fcd86a0fa5" - }, - { - "id": { - "group": "io.netty", - "name": "netty-codec", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-codec-4.1.33.Final.pom", - "path": "io/netty/netty-codec/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-codec/4.1.33.Final/netty-codec-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-codec/4.1.33.Final/netty-codec-4.1.33.Final.pom" - ], - "sha256": "18ad968faa7da4cda24639ec287b4a91eea51a4290cd3b3f9d0670df10bbf6e2" - }, - { - "id": { - "group": "io.netty", - "name": "netty-codec-http", - "version": "4.1.33.Final", - "type": "jar", - "extension": "jar" - }, - "name": "netty-codec-http-4.1.33.Final.jar", - "path": "io/netty/netty-codec-http/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-codec-http/4.1.33.Final/netty-codec-http-4.1.33.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-codec-http/4.1.33.Final/netty-codec-http-4.1.33.Final.jar" - ], - "sha256": "ffbdc9a0727d9d797e5d4cac2701d5b31c36af238df36a3505c60b043f6ddab0" - }, - { - "id": { - "group": "io.netty", - "name": "netty-codec-http", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-codec-http-4.1.33.Final.pom", - "path": "io/netty/netty-codec-http/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-codec-http/4.1.33.Final/netty-codec-http-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-codec-http/4.1.33.Final/netty-codec-http-4.1.33.Final.pom" - ], - "sha256": "a7796e299dc02fb11194cfea47dbd18d9e760f3a49055c1d3a769d4963790273" - }, - { - "id": { - "group": "io.netty", - "name": "netty-codec-http2", - "version": "4.1.33.Final", - "type": "jar", - "extension": "jar" - }, - "name": "netty-codec-http2-4.1.33.Final.jar", - "path": "io/netty/netty-codec-http2/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-codec-http2/4.1.33.Final/netty-codec-http2-4.1.33.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-codec-http2/4.1.33.Final/netty-codec-http2-4.1.33.Final.jar" - ], - "sha256": "eb6ef82cac99d44d46a0b2b6c2cffddd09a4df066eebaa1a9411008eb057dc2b" - }, - { - "id": { - "group": "io.netty", - "name": "netty-codec-http2", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-codec-http2-4.1.33.Final.pom", - "path": "io/netty/netty-codec-http2/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-codec-http2/4.1.33.Final/netty-codec-http2-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-codec-http2/4.1.33.Final/netty-codec-http2-4.1.33.Final.pom" - ], - "sha256": "354a11b98ae7a69aad2a5896bb73294821d0acd41a3ad4697979926773fb22e7" - }, - { - "id": { - "group": "io.netty", - "name": "netty-common", - "version": "4.1.33.Final", - "type": "jar", - "extension": "jar" - }, - "name": "netty-common-4.1.33.Final.jar", - "path": "io/netty/netty-common/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-common/4.1.33.Final/netty-common-4.1.33.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-common/4.1.33.Final/netty-common-4.1.33.Final.jar" - ], - "sha256": "bbb2a29f809b71f91aa162da921602524a8cfce6df7ab2e00fb12d777f6b20e3" - }, - { - "id": { - "group": "io.netty", - "name": "netty-common", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-common-4.1.33.Final.pom", - "path": "io/netty/netty-common/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-common/4.1.33.Final/netty-common-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-common/4.1.33.Final/netty-common-4.1.33.Final.pom" - ], - "sha256": "7466b40e068ac6065e05cb95749ae496e4943964042773bde3bca4fefe2e33b9" - }, - { - "id": { - "group": "io.netty", - "name": "netty-handler", - "version": "4.1.33.Final", - "type": "jar", - "extension": "jar" - }, - "name": "netty-handler-4.1.33.Final.jar", - "path": "io/netty/netty-handler/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-handler/4.1.33.Final/netty-handler-4.1.33.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-handler/4.1.33.Final/netty-handler-4.1.33.Final.jar" - ], - "sha256": "ace0855da3564b2d8654831a47f8c7505cb4d0a7f612baf65c49b026b58d39ed" - }, - { - "id": { - "group": "io.netty", - "name": "netty-handler", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-handler-4.1.33.Final.pom", - "path": "io/netty/netty-handler/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-handler/4.1.33.Final/netty-handler-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-handler/4.1.33.Final/netty-handler-4.1.33.Final.pom" - ], - "sha256": "e2592b5c62b98da22e8030b3b301a199d040a05550955e03984b55448e110343" - }, - { - "id": { - "group": "io.netty", - "name": "netty-parent", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-parent-4.1.33.Final.pom", - "path": "io/netty/netty-parent/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-parent/4.1.33.Final/netty-parent-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-parent/4.1.33.Final/netty-parent-4.1.33.Final.pom" - ], - "sha256": "07cba5001bd795017c924c06799cdd3320be4613bac09c99b4939fcfeebd9cab" - }, - { - "id": { - "group": "io.netty", - "name": "netty-resolver", - "version": "4.1.33.Final", - "type": "jar", - "extension": "jar" - }, - "name": "netty-resolver-4.1.33.Final.jar", - "path": "io/netty/netty-resolver/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-resolver/4.1.33.Final/netty-resolver-4.1.33.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-resolver/4.1.33.Final/netty-resolver-4.1.33.Final.jar" - ], - "sha256": "93a4936597d80c6162228462b0d410df6b2edb0921ea74044fc838765495f4b3" - }, - { - "id": { - "group": "io.netty", - "name": "netty-resolver", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-resolver-4.1.33.Final.pom", - "path": "io/netty/netty-resolver/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-resolver/4.1.33.Final/netty-resolver-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-resolver/4.1.33.Final/netty-resolver-4.1.33.Final.pom" - ], - "sha256": "96357d43ba45bac38df4f11b27be7182d1823fdc4e229cf4c1062b3f16051194" - }, - { - "id": { - "group": "io.netty", - "name": "netty-transport", - "version": "4.1.33.Final", - "type": "jar", - "extension": "jar" - }, - "name": "netty-transport-4.1.33.Final.jar", - "path": "io/netty/netty-transport/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-transport/4.1.33.Final/netty-transport-4.1.33.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-transport/4.1.33.Final/netty-transport-4.1.33.Final.jar" - ], - "sha256": "27d666d2d60e8de446f5fea98363f9b17eaeb4a52599f09b6e4091e62ce3aaed" - }, - { - "id": { - "group": "io.netty", - "name": "netty-transport", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-transport-4.1.33.Final.pom", - "path": "io/netty/netty-transport/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-transport/4.1.33.Final/netty-transport-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-transport/4.1.33.Final/netty-transport-4.1.33.Final.pom" - ], - "sha256": "d10b7626aa24992b7056e87dd421417af7bc0bc5d88be027108a1fcbed0c04f1" - }, - { - "id": { - "group": "io.netty", - "name": "netty-transport-native-epoll", - "version": "4.1.33.Final", - "type": "jar", - "extension": "jar", - "classifier": "linux-x86_64" - }, - "name": "netty-transport-native-epoll-4.1.33.Final-linux-x86_64.jar", - "path": "io/netty/netty-transport-native-epoll/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-transport-native-epoll/4.1.33.Final/netty-transport-native-epoll-4.1.33.Final-linux-x86_64.jar", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-transport-native-epoll/4.1.33.Final/netty-transport-native-epoll-4.1.33.Final-linux-x86_64.jar" - ], - "sha256": "fdb5356e3256eb6405c3e61aad8f002ccf008803a672085fc1b5ea53cfd93ec5" - }, - { - "id": { - "group": "io.netty", - "name": "netty-transport-native-epoll", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-transport-native-epoll-4.1.33.Final.pom", - "path": "io/netty/netty-transport-native-epoll/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-transport-native-epoll/4.1.33.Final/netty-transport-native-epoll-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-transport-native-epoll/4.1.33.Final/netty-transport-native-epoll-4.1.33.Final.pom" - ], - "sha256": "5f8bd8da552041b26d9c6b0178008438a75c9d90d3c2cde4ae54a7a9dee63b7b" - }, - { - "id": { - "group": "io.netty", - "name": "netty-transport-native-unix-common", - "version": "4.1.33.Final", - "type": "jar", - "extension": "jar" - }, - "name": "netty-transport-native-unix-common-4.1.33.Final.jar", - "path": "io/netty/netty-transport-native-unix-common/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-transport-native-unix-common/4.1.33.Final/netty-transport-native-unix-common-4.1.33.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-transport-native-unix-common/4.1.33.Final/netty-transport-native-unix-common-4.1.33.Final.jar" - ], - "sha256": "bda8cda9a6d6fb3639503a32cc295bfea9c992e23933c1e35c79ee9b4c6696a7" - }, - { - "id": { - "group": "io.netty", - "name": "netty-transport-native-unix-common", - "version": "4.1.33.Final", - "type": "pom", - "extension": "pom" - }, - "name": "netty-transport-native-unix-common-4.1.33.Final.pom", - "path": "io/netty/netty-transport-native-unix-common/4.1.33.Final", - "urls": [ - "https://jcenter.bintray.com/io/netty/netty-transport-native-unix-common/4.1.33.Final/netty-transport-native-unix-common-4.1.33.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/io/netty/netty-transport-native-unix-common/4.1.33.Final/netty-transport-native-unix-common-4.1.33.Final.pom" - ], - "sha256": "b2a0d8b75a9fad9738cecd5b3404b369fddb04b64cd95bc01e6339d508b3024c" - }, - { - "id": { - "group": "javax.annotation", - "name": "javax.annotation-api", - "version": "1.3.2", - "type": "jar", - "extension": "jar" - }, - "name": "javax.annotation-api-1.3.2.jar", - "path": "javax/annotation/javax.annotation-api/1.3.2", - "urls": [ - "https://jcenter.bintray.com/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar", - "https://repo.gradle.org/gradle/libs-releases/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar" - ], - "sha256": "e04ba5195bcd555dc95650f7cc614d151e4bcd52d29a10b8aa2197f3ab89ab9b" - }, - { - "id": { - "group": "javax.annotation", - "name": "javax.annotation-api", - "version": "1.3.2", - "type": "pom", - "extension": "pom" - }, - "name": "javax.annotation-api-1.3.2.pom", - "path": "javax/annotation/javax.annotation-api/1.3.2", - "urls": [ - "https://jcenter.bintray.com/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.pom", - "https://repo.gradle.org/gradle/libs-releases/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.pom" - ], - "sha256": "46a4a251ca406e78e4853d7a2bae83282844a4992851439ee9a1f23716f06b97" - }, - { - "id": { - "group": "javax.servlet", - "name": "javax.servlet-api", - "version": "3.1.0", - "type": "jar", - "extension": "jar" - }, - "name": "javax.servlet-api-3.1.0.jar", - "path": "javax/servlet/javax.servlet-api/3.1.0", - "urls": [ - "https://jcenter.bintray.com/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar", - "https://repo.gradle.org/gradle/libs-releases/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" - ], - "sha256": "af456b2dd41c4e82cf54f3e743bc678973d9fe35bd4d3071fa05c7e5333b8482" - }, - { - "id": { - "group": "javax.servlet", - "name": "javax.servlet-api", - "version": "3.1.0", - "type": "pom", - "extension": "pom" - }, - "name": "javax.servlet-api-3.1.0.pom", - "path": "javax/servlet/javax.servlet-api/3.1.0", - "urls": [ - "https://jcenter.bintray.com/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom", - "https://repo.gradle.org/gradle/libs-releases/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom" - ], - "sha256": "b31109e22ea3f2df1ad7955432e718a35def50ae6c19698034afa8a0cf9e9069" - }, - { - "id": { - "group": "javax.validation", - "name": "validation-api", - "version": "2.0.1.Final", - "type": "jar", - "extension": "jar" - }, - "name": "validation-api-2.0.1.Final.jar", - "path": "javax/validation/validation-api/2.0.1.Final", - "urls": [ - "https://jcenter.bintray.com/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.jar" - ], - "sha256": "9873b46df1833c9ee8f5bc1ff6853375115dadd8897bcb5a0dffb5848835ee6c" - }, - { - "id": { - "group": "javax.validation", - "name": "validation-api", - "version": "2.0.1.Final", - "type": "pom", - "extension": "pom" - }, - "name": "validation-api-2.0.1.Final.pom", - "path": "javax/validation/validation-api/2.0.1.Final", - "urls": [ - "https://jcenter.bintray.com/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.pom" - ], - "sha256": "abb9d3e64d3773446732a30eea0b1b5a63888bb14331d2a2a18f3385d1a4c389" - }, - { - "id": { - "group": "joda-time", - "name": "joda-time", - "version": "2.8.1", - "type": "jar", - "extension": "jar" - }, - "name": "joda-time-2.8.1.jar", - "path": "joda-time/joda-time/2.8.1", - "urls": [ - "https://jcenter.bintray.com/joda-time/joda-time/2.8.1/joda-time-2.8.1.jar", - "https://repo.gradle.org/gradle/libs-releases/joda-time/joda-time/2.8.1/joda-time-2.8.1.jar" - ], - "sha256": "b4670b95f75957c974284c5f3ada966040be2578f643c5c6083d262162061fa2" - }, - { - "id": { - "group": "joda-time", - "name": "joda-time", - "version": "2.8.1", - "type": "pom", - "extension": "pom" - }, - "name": "joda-time-2.8.1.pom", - "path": "joda-time/joda-time/2.8.1", - "urls": [ - "https://jcenter.bintray.com/joda-time/joda-time/2.8.1/joda-time-2.8.1.pom", - "https://repo.gradle.org/gradle/libs-releases/joda-time/joda-time/2.8.1/joda-time-2.8.1.pom" - ], - "sha256": "18ba5cfdff96091e0019895361446079d91235ee566cb1d497639c1ace629d78" - }, - { - "id": { - "group": "net.java", - "name": "jvnet-parent", - "version": "3", - "type": "pom", - "extension": "pom" - }, - "name": "jvnet-parent-3.pom", - "path": "net/java/jvnet-parent/3", - "urls": [ - "https://jcenter.bintray.com/net/java/jvnet-parent/3/jvnet-parent-3.pom", - "https://repo.gradle.org/gradle/libs-releases/net/java/jvnet-parent/3/jvnet-parent-3.pom" - ], - "sha256": "30f5789efa39ddbf96095aada3fc1260c4561faf2f714686717cb2dc5049475a" - }, - { - "id": { - "group": "org.apache", - "name": "apache", - "version": "7", - "type": "pom", - "extension": "pom" - }, - "name": "apache-7.pom", - "path": "org/apache/apache/7", - "urls": [ - "https://jcenter.bintray.com/org/apache/apache/7/apache-7.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/apache/7/apache-7.pom" - ], - "sha256": "1397ce1db433adc9f223dbf07496d133681448751f4ae29e58f68e78fb4b6c25" - }, - { - "id": { - "group": "org.apache", - "name": "apache", - "version": "13", - "type": "pom", - "extension": "pom" - }, - "name": "apache-13.pom", - "path": "org/apache/apache/13", - "urls": [ - "https://jcenter.bintray.com/org/apache/apache/13/apache-13.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/apache/13/apache-13.pom" - ], - "sha256": "ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d" - }, - { - "id": { - "group": "org.apache", - "name": "apache", - "version": "18", - "type": "pom", - "extension": "pom" - }, - "name": "apache-18.pom", - "path": "org/apache/apache/18", - "urls": [ - "https://jcenter.bintray.com/org/apache/apache/18/apache-18.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/apache/18/apache-18.pom" - ], - "sha256": "7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17" - }, - { - "id": { - "group": "org.apache", - "name": "apache", - "version": "19", - "type": "pom", - "extension": "pom" - }, - "name": "apache-19.pom", - "path": "org/apache/apache/19", - "urls": [ - "https://jcenter.bintray.com/org/apache/apache/19/apache-19.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/apache/19/apache-19.pom" - ], - "sha256": "91f7a33096ea69bac2cbaf6d01feb934cac002c48d8c8cfa9c240b40f1ec21df" - }, - { - "id": { - "group": "org.apache", - "name": "apache", - "version": "21", - "type": "pom", - "extension": "pom" - }, - "name": "apache-21.pom", - "path": "org/apache/apache/21", - "urls": [ - "https://jcenter.bintray.com/org/apache/apache/21/apache-21.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/apache/21/apache-21.pom" - ], - "sha256": "af10c108da014f17cafac7b52b2b4b5a3a1c18265fa2af97a325d9143537b380" - }, - { - "id": { - "group": "org.apache.commons", - "name": "commons-lang3", - "version": "3.8.1", - "type": "jar", - "extension": "jar" - }, - "name": "commons-lang3-3.8.1.jar", - "path": "org/apache/commons/commons-lang3/3.8.1", - "urls": [ - "https://jcenter.bintray.com/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar" - ], - "sha256": "dac807f65b07698ff39b1b07bfef3d87ae3fd46d91bbf8a2bc02b2a831616f68" - }, - { - "id": { - "group": "org.apache.commons", - "name": "commons-lang3", - "version": "3.8.1", - "type": "pom", - "extension": "pom" - }, - "name": "commons-lang3-3.8.1.pom", - "path": "org/apache/commons/commons-lang3/3.8.1", - "urls": [ - "https://jcenter.bintray.com/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.pom" - ], - "sha256": "ec8e09f75411685205bd0d9d7872cc3622e67c76df44a0a227b278bea04458d5" - }, - { - "id": { - "group": "org.apache.commons", - "name": "commons-parent", - "version": "34", - "type": "pom", - "extension": "pom" - }, - "name": "commons-parent-34.pom", - "path": "org/apache/commons/commons-parent/34", - "urls": [ - "https://jcenter.bintray.com/org/apache/commons/commons-parent/34/commons-parent-34.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/commons/commons-parent/34/commons-parent-34.pom" - ], - "sha256": "3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c" - }, - { - "id": { - "group": "org.apache.commons", - "name": "commons-parent", - "version": "42", - "type": "pom", - "extension": "pom" - }, - "name": "commons-parent-42.pom", - "path": "org/apache/commons/commons-parent/42", - "urls": [ - "https://jcenter.bintray.com/org/apache/commons/commons-parent/42/commons-parent-42.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/commons/commons-parent/42/commons-parent-42.pom" - ], - "sha256": "cd313494c670b483ec256972af1698b330e598f807002354eb765479f604b09c" - }, - { - "id": { - "group": "org.apache.commons", - "name": "commons-parent", - "version": "47", - "type": "pom", - "extension": "pom" - }, - "name": "commons-parent-47.pom", - "path": "org/apache/commons/commons-parent/47", - "urls": [ - "https://jcenter.bintray.com/org/apache/commons/commons-parent/47/commons-parent-47.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/commons/commons-parent/47/commons-parent-47.pom" - ], - "sha256": "8a8ecb570553bf9f1ffae211a8d4ca9ee630c17afe59293368fba7bd9b42fcb7" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpclient", - "version": "4.5.13", - "type": "jar", - "extension": "jar" - }, - "name": "httpclient-4.5.13.jar", - "path": "org/apache/httpcomponents/httpclient/4.5.13", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar" - ], - "sha256": "6fe9026a566c6a5001608cf3fc32196641f6c1e5e1986d1037ccdbd5f31ef743" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpclient", - "version": "4.5.13", - "type": "pom", - "extension": "pom" - }, - "name": "httpclient-4.5.13.pom", - "path": "org/apache/httpcomponents/httpclient/4.5.13", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.pom" - ], - "sha256": "78eb9ada74929fcd63d07adc4f49236841a45cc29d5f817bf45801f513fd7e6c" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-client", - "version": "4.5.13", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-client-4.5.13.pom", - "path": "org/apache/httpcomponents/httpcomponents-client/4.5.13", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-client/4.5.13/httpcomponents-client-4.5.13.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcomponents-client/4.5.13/httpcomponents-client-4.5.13.pom" - ], - "sha256": "9cba594c08db7271d0c20e9845d622bb39e69583910b45e7d5df82f6058d4dd9" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-core", - "version": "4.4.13", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-core-4.4.13.pom", - "path": "org/apache/httpcomponents/httpcomponents-core/4.4.13", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-core/4.4.13/httpcomponents-core-4.4.13.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcomponents-core/4.4.13/httpcomponents-core-4.4.13.pom" - ], - "sha256": "c554e7008e4517c7ef54e005cc8b74f4c87a54a0ea2c6f57be5d0569df51936b" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-parent", - "version": "11", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-parent-11.pom", - "path": "org/apache/httpcomponents/httpcomponents-parent/11", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-parent/11/httpcomponents-parent-11.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcomponents-parent/11/httpcomponents-parent-11.pom" - ], - "sha256": "a901f87b115c55070c7ee43efff63e20e7b02d30af2443ae292bf1f4e532d3aa" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcore", - "version": "4.4.13", - "type": "jar", - "extension": "jar" - }, - "name": "httpcore-4.4.13.jar", - "path": "org/apache/httpcomponents/httpcore/4.4.13", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar" - ], - "sha256": "e06e89d40943245fcfa39ec537cdbfce3762aecde8f9c597780d2b00c2b43424" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcore", - "version": "4.4.13", - "type": "pom", - "extension": "pom" - }, - "name": "httpcore-4.4.13.pom", - "path": "org/apache/httpcomponents/httpcore/4.4.13", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.pom" - ], - "sha256": "8f812d9fa7b72a3d4aa7f825278932a5df344b42a6d8398905879431a1bf9a97" - }, - { - "id": { - "group": "org.apache.ivy", - "name": "ivy", - "version": "2.5.0", - "type": "jar", - "extension": "jar" - }, - "name": "ivy-2.5.0.jar", - "path": "org/apache/ivy/ivy/2.5.0", - "urls": [ - "https://jcenter.bintray.com/org/apache/ivy/ivy/2.5.0/ivy-2.5.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/ivy/ivy/2.5.0/ivy-2.5.0.jar" - ], - "sha256": "2f4c835b52311df922f8a8eb057843de5485088b234ccd03e478b9066b5e6bfc" - }, - { - "id": { - "group": "org.apache.ivy", - "name": "ivy", - "version": "2.5.0", - "type": "pom", - "extension": "pom" - }, - "name": "ivy-2.5.0.pom", - "path": "org/apache/ivy/ivy/2.5.0", - "urls": [ - "https://jcenter.bintray.com/org/apache/ivy/ivy/2.5.0/ivy-2.5.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/ivy/ivy/2.5.0/ivy-2.5.0.pom" - ], - "sha256": "516106ddc6a4fc14445e5ea309710faba423d4591ed7667fff5f8c074ace2f18" - }, - { - "id": { - "group": "org.apache.logging.log4j", - "name": "log4j", - "version": "2.11.2", - "type": "pom", - "extension": "pom" - }, - "name": "log4j-2.11.2.pom", - "path": "org/apache/logging/log4j/log4j/2.11.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/logging/log4j/log4j/2.11.2/log4j-2.11.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/logging/log4j/log4j/2.11.2/log4j-2.11.2.pom" - ], - "sha256": "a3d10c4a07ffb384cad0dc518f53afba732a6eb4786ccbccb6b03b744a543bd1" - }, - { - "id": { - "group": "org.apache.logging.log4j", - "name": "log4j-api", - "version": "2.11.2", - "type": "jar", - "extension": "jar" - }, - "name": "log4j-api-2.11.2.jar", - "path": "org/apache/logging/log4j/log4j-api/2.11.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/logging/log4j/log4j-api/2.11.2/log4j-api-2.11.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/logging/log4j/log4j-api/2.11.2/log4j-api-2.11.2.jar" - ], - "sha256": "09b8ce1740491deefdb3c336855822b64609b457c2966d806348456c0da261d2" - }, - { - "id": { - "group": "org.apache.logging.log4j", - "name": "log4j-api", - "version": "2.11.2", - "type": "pom", - "extension": "pom" - }, - "name": "log4j-api-2.11.2.pom", - "path": "org/apache/logging/log4j/log4j-api/2.11.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/logging/log4j/log4j-api/2.11.2/log4j-api-2.11.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/logging/log4j/log4j-api/2.11.2/log4j-api-2.11.2.pom" - ], - "sha256": "a8d00d185bf1b236c18f98331de8c33f12fd477c4f1552f575616576e199024c" - }, - { - "id": { - "group": "org.apache.logging.log4j", - "name": "log4j-to-slf4j", - "version": "2.11.2", - "type": "jar", - "extension": "jar" - }, - "name": "log4j-to-slf4j-2.11.2.jar", - "path": "org/apache/logging/log4j/log4j-to-slf4j/2.11.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/logging/log4j/log4j-to-slf4j/2.11.2/log4j-to-slf4j-2.11.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/logging/log4j/log4j-to-slf4j/2.11.2/log4j-to-slf4j-2.11.2.jar" - ], - "sha256": "4361dd0623b7fc042ad9d6b1eabb0b6a7f92b9cfc21218308f4a386c9ad40ce5" - }, - { - "id": { - "group": "org.apache.logging.log4j", - "name": "log4j-to-slf4j", - "version": "2.11.2", - "type": "pom", - "extension": "pom" - }, - "name": "log4j-to-slf4j-2.11.2.pom", - "path": "org/apache/logging/log4j/log4j-to-slf4j/2.11.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/logging/log4j/log4j-to-slf4j/2.11.2/log4j-to-slf4j-2.11.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/logging/log4j/log4j-to-slf4j/2.11.2/log4j-to-slf4j-2.11.2.pom" - ], - "sha256": "6a05991718bc5da0fdb195aa35f43f0dfcbcb4315f273e3e6cbbad348d4cb91e" - }, - { - "id": { - "group": "org.codehaus.woodstox", - "name": "stax2-api", - "version": "4.1", - "type": "jar", - "extension": "jar" - }, - "name": "stax2-api-4.1.jar", - "path": "org/codehaus/woodstox/stax2-api/4.1", - "urls": [ - "https://jcenter.bintray.com/org/codehaus/woodstox/stax2-api/4.1/stax2-api-4.1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/codehaus/woodstox/stax2-api/4.1/stax2-api-4.1.jar" - ], - "sha256": "3e99c678c42ce353595b6cc71e62f25bd6e58860b3cf79b60adc9240a967924f" - }, - { - "id": { - "group": "org.codehaus.woodstox", - "name": "stax2-api", - "version": "4.1", - "type": "pom", - "extension": "pom" - }, - "name": "stax2-api-4.1.pom", - "path": "org/codehaus/woodstox/stax2-api/4.1", - "urls": [ - "https://jcenter.bintray.com/org/codehaus/woodstox/stax2-api/4.1/stax2-api-4.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/codehaus/woodstox/stax2-api/4.1/stax2-api-4.1.pom" - ], - "sha256": "66f5d29100a30a0b06c36a9f5a3b50f45ef16352be347ba3e22515a889da5fc5" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-continuation", - "version": "9.4.19.v20190610", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-continuation-9.4.19.v20190610.jar", - "path": "org/eclipse/jetty/jetty-continuation/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-continuation/9.4.19.v20190610/jetty-continuation-9.4.19.v20190610.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-continuation/9.4.19.v20190610/jetty-continuation-9.4.19.v20190610.jar" - ], - "sha256": "bb4c7674d04bdb5e811f794b32e5c432687600dd3e587fcd5220a8638e307c26" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-continuation", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-continuation-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-continuation/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-continuation/9.4.19.v20190610/jetty-continuation-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-continuation/9.4.19.v20190610/jetty-continuation-9.4.19.v20190610.pom" - ], - "sha256": "2bbd973e688f8f491aba5861280bae1a8699f5254f522b969e89208ae690edf9" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-http", - "version": "9.4.19.v20190610", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-http-9.4.19.v20190610.jar", - "path": "org/eclipse/jetty/jetty-http/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-http/9.4.19.v20190610/jetty-http-9.4.19.v20190610.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-http/9.4.19.v20190610/jetty-http-9.4.19.v20190610.jar" - ], - "sha256": "54e4e6552d2ecf1fecb2b511c2a7f761f49c96c1980b103142baa33841abd398" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-http", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-http-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-http/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-http/9.4.19.v20190610/jetty-http-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-http/9.4.19.v20190610/jetty-http-9.4.19.v20190610.pom" - ], - "sha256": "8e00592d5bc8c9d1d6f6829e580b128116e70322cb52e11e593c917ae7698608" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-io", - "version": "9.4.19.v20190610", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-io-9.4.19.v20190610.jar", - "path": "org/eclipse/jetty/jetty-io/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-io/9.4.19.v20190610/jetty-io-9.4.19.v20190610.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-io/9.4.19.v20190610/jetty-io-9.4.19.v20190610.jar" - ], - "sha256": "9a8326d191b5627f7985333f65b29c3ce37e22abf4f8aa2c539b84b31d72a270" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-io", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-io-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-io/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-io/9.4.19.v20190610/jetty-io-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-io/9.4.19.v20190610/jetty-io-9.4.19.v20190610.pom" - ], - "sha256": "a7ff54366b7cc300179cf6eb58f790e9253889304ab50e57dc47437d33f5aeb2" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-project", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-project-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-project/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-project/9.4.19.v20190610/jetty-project-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-project/9.4.19.v20190610/jetty-project-9.4.19.v20190610.pom" - ], - "sha256": "a45e1f021608e01fd57b1a75a683509b4631a160300a75494c8811d5a5a5c5b3" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-security", - "version": "9.4.19.v20190610", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-security-9.4.19.v20190610.jar", - "path": "org/eclipse/jetty/jetty-security/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-security/9.4.19.v20190610/jetty-security-9.4.19.v20190610.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-security/9.4.19.v20190610/jetty-security-9.4.19.v20190610.jar" - ], - "sha256": "15a33448a7e0836d610cae9bce5db71d689538f8aafc197914d9c2b3b23ea400" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-security", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-security-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-security/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-security/9.4.19.v20190610/jetty-security-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-security/9.4.19.v20190610/jetty-security-9.4.19.v20190610.pom" - ], - "sha256": "226b7e7a7a4468b0226e353fb1418319d865690f7ca0a2bdd4fb56bc6231dd54" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-server", - "version": "9.4.19.v20190610", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-server-9.4.19.v20190610.jar", - "path": "org/eclipse/jetty/jetty-server/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-server/9.4.19.v20190610/jetty-server-9.4.19.v20190610.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-server/9.4.19.v20190610/jetty-server-9.4.19.v20190610.jar" - ], - "sha256": "573807f7a979a316cda23d684601b69c8304c24ffaf18001fdb3253e9bc8b866" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-server", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-server-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-server/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-server/9.4.19.v20190610/jetty-server-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-server/9.4.19.v20190610/jetty-server-9.4.19.v20190610.pom" - ], - "sha256": "0dc16a4d37c4dc600434ee329bf32decbf900fb05a2db26a26abd81049d64450" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-servlet", - "version": "9.4.19.v20190610", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-servlet-9.4.19.v20190610.jar", - "path": "org/eclipse/jetty/jetty-servlet/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-servlet/9.4.19.v20190610/jetty-servlet-9.4.19.v20190610.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-servlet/9.4.19.v20190610/jetty-servlet-9.4.19.v20190610.jar" - ], - "sha256": "3077c9174db95fa1c0c3523782d8ee562d14c5bd6ec0bf98dc8b75a94aab3727" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-servlet", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-servlet-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-servlet/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-servlet/9.4.19.v20190610/jetty-servlet-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-servlet/9.4.19.v20190610/jetty-servlet-9.4.19.v20190610.pom" - ], - "sha256": "166386146fe72d93e66ec8282d471c122a912ed7fa4889e0319579a19622bdfe" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-servlets", - "version": "9.4.19.v20190610", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-servlets-9.4.19.v20190610.jar", - "path": "org/eclipse/jetty/jetty-servlets/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-servlets/9.4.19.v20190610/jetty-servlets-9.4.19.v20190610.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-servlets/9.4.19.v20190610/jetty-servlets-9.4.19.v20190610.jar" - ], - "sha256": "4d236c03823f9224309990f5643f212e9be09daf8f916f4a8ec985f2820d222d" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-servlets", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-servlets-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-servlets/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-servlets/9.4.19.v20190610/jetty-servlets-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-servlets/9.4.19.v20190610/jetty-servlets-9.4.19.v20190610.pom" - ], - "sha256": "31dbef42afe8681111bb95e5d65421903c3760687b1b5bdaca89bd473ccfce12" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-util", - "version": "9.4.19.v20190610", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-util-9.4.19.v20190610.jar", - "path": "org/eclipse/jetty/jetty-util/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-util/9.4.19.v20190610/jetty-util-9.4.19.v20190610.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-util/9.4.19.v20190610/jetty-util-9.4.19.v20190610.jar" - ], - "sha256": "f102a74fe268aea0c45ee76655fdc7707361192bfe78e030a761a33a1fbae373" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-util", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-util-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-util/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-util/9.4.19.v20190610/jetty-util-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-util/9.4.19.v20190610/jetty-util-9.4.19.v20190610.pom" - ], - "sha256": "7f07690cd02b5e1f01c194bcfd469fb2e269cc81ef4417d3ac3f7fee674f5558" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-webapp", - "version": "9.4.19.v20190610", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-webapp-9.4.19.v20190610.jar", - "path": "org/eclipse/jetty/jetty-webapp/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-webapp/9.4.19.v20190610/jetty-webapp-9.4.19.v20190610.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-webapp/9.4.19.v20190610/jetty-webapp-9.4.19.v20190610.jar" - ], - "sha256": "24490a248a40b7d82ad68ebdfb74c435248093d138b99411078b59a691b68ae9" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-webapp", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-webapp-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-webapp/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-webapp/9.4.19.v20190610/jetty-webapp-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-webapp/9.4.19.v20190610/jetty-webapp-9.4.19.v20190610.pom" - ], - "sha256": "89697903b77fe4b286826e9bae4bacaf270d18ef3c7ff180eda0f46196b05ce0" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-xml", - "version": "9.4.19.v20190610", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-xml-9.4.19.v20190610.jar", - "path": "org/eclipse/jetty/jetty-xml/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-xml/9.4.19.v20190610/jetty-xml-9.4.19.v20190610.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-xml/9.4.19.v20190610/jetty-xml-9.4.19.v20190610.jar" - ], - "sha256": "7c16c74774acefd6f054f9ef2f681ff191e702b49bcb26b529c4d0e1dae65b33" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-xml", - "version": "9.4.19.v20190610", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-xml-9.4.19.v20190610.pom", - "path": "org/eclipse/jetty/jetty-xml/9.4.19.v20190610", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-xml/9.4.19.v20190610/jetty-xml-9.4.19.v20190610.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-xml/9.4.19.v20190610/jetty-xml-9.4.19.v20190610.pom" - ], - "sha256": "40ff6dae6b6b675b05bd24fa1e1e4bcf64f3fa14b3c36627ef104056fc0a7df9" - }, - { - "id": { - "group": "org.hibernate.validator", - "name": "hibernate-validator", - "version": "6.0.17.Final", - "type": "jar", - "extension": "jar" - }, - "name": "hibernate-validator-6.0.17.Final.jar", - "path": "org/hibernate/validator/hibernate-validator/6.0.17.Final", - "urls": [ - "https://jcenter.bintray.com/org/hibernate/validator/hibernate-validator/6.0.17.Final/hibernate-validator-6.0.17.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/org/hibernate/validator/hibernate-validator/6.0.17.Final/hibernate-validator-6.0.17.Final.jar" - ], - "sha256": "3d072ac7e88b800c396d63ef0cad5bead2d8764e3b229b315fc1d17c7012d536" - }, - { - "id": { - "group": "org.hibernate.validator", - "name": "hibernate-validator", - "version": "6.0.17.Final", - "type": "pom", - "extension": "pom" - }, - "name": "hibernate-validator-6.0.17.Final.pom", - "path": "org/hibernate/validator/hibernate-validator/6.0.17.Final", - "urls": [ - "https://jcenter.bintray.com/org/hibernate/validator/hibernate-validator/6.0.17.Final/hibernate-validator-6.0.17.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/org/hibernate/validator/hibernate-validator/6.0.17.Final/hibernate-validator-6.0.17.Final.pom" - ], - "sha256": "9c6c391607654719ab2d1bd1ef07a0f28636d6e0a146587f4c5cd6df917e58a4" - }, - { - "id": { - "group": "org.hibernate.validator", - "name": "hibernate-validator-parent", - "version": "6.0.17.Final", - "type": "pom", - "extension": "pom" - }, - "name": "hibernate-validator-parent-6.0.17.Final.pom", - "path": "org/hibernate/validator/hibernate-validator-parent/6.0.17.Final", - "urls": [ - "https://jcenter.bintray.com/org/hibernate/validator/hibernate-validator-parent/6.0.17.Final/hibernate-validator-parent-6.0.17.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/org/hibernate/validator/hibernate-validator-parent/6.0.17.Final/hibernate-validator-parent-6.0.17.Final.pom" - ], - "sha256": "7e170f5b65644baf0098889331ea97e2f58dbba4206917240d970ccf6b06969a" - }, - { - "id": { - "group": "org.jboss", - "name": "jboss-parent", - "version": "15", - "type": "pom", - "extension": "pom" - }, - "name": "jboss-parent-15.pom", - "path": "org/jboss/jboss-parent/15", - "urls": [ - "https://jcenter.bintray.com/org/jboss/jboss-parent/15/jboss-parent-15.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jboss/jboss-parent/15/jboss-parent-15.pom" - ], - "sha256": "2ea302319636da65ee4566f956fe9f8328caff84fb4eeb1f9f472821a7e4bc29" - }, - { - "id": { - "group": "org.jboss.logging", - "name": "jboss-logging", - "version": "3.3.2.Final", - "type": "jar", - "extension": "jar" - }, - "name": "jboss-logging-3.3.2.Final.jar", - "path": "org/jboss/logging/jboss-logging/3.3.2.Final", - "urls": [ - "https://jcenter.bintray.com/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar" - ], - "sha256": "cb914bfe888da7d9162e965ac8b0d6f28f2f32eca944a00fbbf6dd3cf1aacc13" - }, - { - "id": { - "group": "org.jboss.logging", - "name": "jboss-logging", - "version": "3.3.2.Final", - "type": "pom", - "extension": "pom" - }, - "name": "jboss-logging-3.3.2.Final.pom", - "path": "org/jboss/logging/jboss-logging/3.3.2.Final", - "urls": [ - "https://jcenter.bintray.com/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.pom" - ], - "sha256": "df3b397b802aca364f3302c20b927bd1f9ae69dd581be158748568ef51e0ac79" - }, - { - "id": { - "group": "org.junit.jupiter", - "name": "junit-jupiter-api", - "version": "5.7.0", - "type": "jar", - "extension": "jar" - }, - "name": "junit-jupiter-api-5.7.0.jar", - "path": "org/junit/jupiter/junit-jupiter-api/5.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.jar" - ], - "sha256": "b03f78e0daeed2d77a0af9bcd662b4cdb9693f7ee72e01a539b508b84c63d182" - }, - { - "id": { - "group": "org.junit.jupiter", - "name": "junit-jupiter-api", - "version": "5.7.0", - "type": "module", - "extension": "module" - }, - "name": "junit-jupiter-api-5.7.0.module", - "path": "org/junit/jupiter/junit-jupiter-api/5.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.module", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.module" - ], - "sha256": "d1a7bae6cd44ad6d96715261410eef2338a494436d667280d1373a47c17e241c" - }, - { - "id": { - "group": "org.junit.jupiter", - "name": "junit-jupiter-api", - "version": "5.7.0", - "type": "pom", - "extension": "pom" - }, - "name": "junit-jupiter-api-5.7.0.pom", - "path": "org/junit/jupiter/junit-jupiter-api/5.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.pom" - ], - "sha256": "a0f823d513c8d4692935f24c2fe6e77cc4a7b6147a9e8a518f722e50bbf86138" - }, - { - "id": { - "group": "org.junit.jupiter", - "name": "junit-jupiter-engine", - "version": "5.7.0", - "type": "jar", - "extension": "jar" - }, - "name": "junit-jupiter-engine-5.7.0.jar", - "path": "org/junit/jupiter/junit-jupiter-engine/5.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-engine/5.7.0/junit-jupiter-engine-5.7.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-engine/5.7.0/junit-jupiter-engine-5.7.0.jar" - ], - "sha256": "dfa26af94644ac2612dde6625852fcb550a0d21caa243257de54cba738ba87af" - }, - { - "id": { - "group": "org.junit.jupiter", - "name": "junit-jupiter-engine", - "version": "5.7.0", - "type": "module", - "extension": "module" - }, - "name": "junit-jupiter-engine-5.7.0.module", - "path": "org/junit/jupiter/junit-jupiter-engine/5.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-engine/5.7.0/junit-jupiter-engine-5.7.0.module", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-engine/5.7.0/junit-jupiter-engine-5.7.0.module" - ], - "sha256": "c36bda48228eef5c40cdc9a9d6303bb848382cdb0884b3677d49182b4ec7a1a4" - }, - { - "id": { - "group": "org.junit.jupiter", - "name": "junit-jupiter-engine", - "version": "5.7.0", - "type": "pom", - "extension": "pom" - }, - "name": "junit-jupiter-engine-5.7.0.pom", - "path": "org/junit/jupiter/junit-jupiter-engine/5.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-engine/5.7.0/junit-jupiter-engine-5.7.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-engine/5.7.0/junit-jupiter-engine-5.7.0.pom" - ], - "sha256": "b702e250875d331ee3c6b88f37299fbe951f43992f4b2e4a8f144e2e4cf2c7e8" - }, - { - "id": { - "group": "org.junit.jupiter", - "name": "junit-jupiter-params", - "version": "5.7.0", - "type": "jar", - "extension": "jar" - }, - "name": "junit-jupiter-params-5.7.0.jar", - "path": "org/junit/jupiter/junit-jupiter-params/5.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-params/5.7.0/junit-jupiter-params-5.7.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-params/5.7.0/junit-jupiter-params-5.7.0.jar" - ], - "sha256": "ca9f555c37b9bf79effd2e834af549e4feb52ad8ac9e348fe5b430d4d8a482b7" - }, - { - "id": { - "group": "org.junit.jupiter", - "name": "junit-jupiter-params", - "version": "5.7.0", - "type": "module", - "extension": "module" - }, - "name": "junit-jupiter-params-5.7.0.module", - "path": "org/junit/jupiter/junit-jupiter-params/5.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-params/5.7.0/junit-jupiter-params-5.7.0.module", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-params/5.7.0/junit-jupiter-params-5.7.0.module" - ], - "sha256": "23561cb313916ed459a3a4c325c1573f7dc41f89c14fbea4328aa8c87782baaf" - }, - { - "id": { - "group": "org.junit.jupiter", - "name": "junit-jupiter-params", - "version": "5.7.0", - "type": "pom", - "extension": "pom" - }, - "name": "junit-jupiter-params-5.7.0.pom", - "path": "org/junit/jupiter/junit-jupiter-params/5.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-params/5.7.0/junit-jupiter-params-5.7.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-params/5.7.0/junit-jupiter-params-5.7.0.pom" - ], - "sha256": "23873e305a9751109839ad08b6b37dfadd1036f43b359b3b1b7bd2601fc73260" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-commons", - "version": "1.7.0", - "type": "jar", - "extension": "jar" - }, - "name": "junit-platform-commons-1.7.0.jar", - "path": "org/junit/platform/junit-platform-commons/1.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.jar" - ], - "sha256": "5330ee87cc7586e6e25175a34e9251624ff12ff525269d3415d0b4ca519b6fea" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-commons", - "version": "1.7.0", - "type": "module", - "extension": "module" - }, - "name": "junit-platform-commons-1.7.0.module", - "path": "org/junit/platform/junit-platform-commons/1.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.module", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.module" - ], - "sha256": "b0a5c7a1b7e409d1f5cc963d9aea1c77c34b90e163d6842a4489c6aa07ff8ee2" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-commons", - "version": "1.7.0", - "type": "pom", - "extension": "pom" - }, - "name": "junit-platform-commons-1.7.0.pom", - "path": "org/junit/platform/junit-platform-commons/1.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.pom" - ], - "sha256": "0cd7c4f9bee659912ac1dce46f123cd06f40bbb73ab316bd9411c792e3c680a2" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-engine", - "version": "1.7.0", - "type": "jar", - "extension": "jar" - }, - "name": "junit-platform-engine-1.7.0.jar", - "path": "org/junit/platform/junit-platform-engine/1.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.7.0/junit-platform-engine-1.7.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.7.0/junit-platform-engine-1.7.0.jar" - ], - "sha256": "75f21a20dc594afdc875736725b408cec6d0344874d29f34b2dd3075500236f2" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-engine", - "version": "1.7.0", - "type": "module", - "extension": "module" - }, - "name": "junit-platform-engine-1.7.0.module", - "path": "org/junit/platform/junit-platform-engine/1.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.7.0/junit-platform-engine-1.7.0.module", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.7.0/junit-platform-engine-1.7.0.module" - ], - "sha256": "6510a9fa881cef42d41485538dbc54749426db1e0b14ec433915ea5f2448079a" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-engine", - "version": "1.7.0", - "type": "pom", - "extension": "pom" - }, - "name": "junit-platform-engine-1.7.0.pom", - "path": "org/junit/platform/junit-platform-engine/1.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.7.0/junit-platform-engine-1.7.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.7.0/junit-platform-engine-1.7.0.pom" - ], - "sha256": "225b99c5032fd1cb8cecda2e8b5a7526d6a5f81fb98a29a57557f7f5ccda9d12" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-launcher", - "version": "1.7.0", - "type": "jar", - "extension": "jar" - }, - "name": "junit-platform-launcher-1.7.0.jar", - "path": "org/junit/platform/junit-platform-launcher/1.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-launcher/1.7.0/junit-platform-launcher-1.7.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-launcher/1.7.0/junit-platform-launcher-1.7.0.jar" - ], - "sha256": "fbdc748fde4c4279fe1d3c607447cb3b7ccd45d7338fc574f8a894ddf2d16818" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-launcher", - "version": "1.7.0", - "type": "module", - "extension": "module" - }, - "name": "junit-platform-launcher-1.7.0.module", - "path": "org/junit/platform/junit-platform-launcher/1.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-launcher/1.7.0/junit-platform-launcher-1.7.0.module", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-launcher/1.7.0/junit-platform-launcher-1.7.0.module" - ], - "sha256": "ce94d2ba02504fc91abdc0b797350e52528719d049eecc0438287ec95b964ba4" - }, - { - "id": { - "group": "org.junit.platform", - "name": "junit-platform-launcher", - "version": "1.7.0", - "type": "pom", - "extension": "pom" - }, - "name": "junit-platform-launcher-1.7.0.pom", - "path": "org/junit/platform/junit-platform-launcher/1.7.0", - "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-launcher/1.7.0/junit-platform-launcher-1.7.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-launcher/1.7.0/junit-platform-launcher-1.7.0.pom" - ], - "sha256": "24d05c28f5a9ead2c0678fd11279ea81f1cb7ef9d463441d9104fad15003829a" - }, - { - "id": { - "group": "org.mortbay.jasper", - "name": "apache-el", - "version": "8.5.40", - "type": "jar", - "extension": "jar" - }, - "name": "apache-el-8.5.40.jar", - "path": "org/mortbay/jasper/apache-el/8.5.40", - "urls": [ - "https://jcenter.bintray.com/org/mortbay/jasper/apache-el/8.5.40/apache-el-8.5.40.jar", - "https://repo.gradle.org/gradle/libs-releases/org/mortbay/jasper/apache-el/8.5.40/apache-el-8.5.40.jar" - ], - "sha256": "5535cb6cabd6071771ecac89ccc637afcc43a23be3c14891d018acc5478148ff" - }, - { - "id": { - "group": "org.mortbay.jasper", - "name": "apache-el", - "version": "8.5.40", - "type": "pom", - "extension": "pom" - }, - "name": "apache-el-8.5.40.pom", - "path": "org/mortbay/jasper/apache-el/8.5.40", - "urls": [ - "https://jcenter.bintray.com/org/mortbay/jasper/apache-el/8.5.40/apache-el-8.5.40.pom", - "https://repo.gradle.org/gradle/libs-releases/org/mortbay/jasper/apache-el/8.5.40/apache-el-8.5.40.pom" - ], - "sha256": "b96cf92c6513baeb3096c0f43b8e271e231e128677f6d6796332c0c1afe8ee3e" - }, - { - "id": { - "group": "org.mortbay.jasper", - "name": "jasper-jsp", - "version": "8.5.40", - "type": "pom", - "extension": "pom" - }, - "name": "jasper-jsp-8.5.40.pom", - "path": "org/mortbay/jasper/jasper-jsp/8.5.40", - "urls": [ - "https://jcenter.bintray.com/org/mortbay/jasper/jasper-jsp/8.5.40/jasper-jsp-8.5.40.pom", - "https://repo.gradle.org/gradle/libs-releases/org/mortbay/jasper/jasper-jsp/8.5.40/jasper-jsp-8.5.40.pom" - ], - "sha256": "395caacfd0c5e92f58282e8864ebf21fdfe14354ec86cd961f5d37836b170748" - }, - { - "id": { - "group": "org.reactivestreams", - "name": "reactive-streams", - "version": "1.0.2", - "type": "jar", - "extension": "jar" - }, - "name": "reactive-streams-1.0.2.jar", - "path": "org/reactivestreams/reactive-streams/1.0.2", - "urls": [ - "https://jcenter.bintray.com/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar" - ], - "sha256": "cc09ab0b140e0d0496c2165d4b32ce24f4d6446c0a26c5dc77b06bdf99ee8fae" - }, - { - "id": { - "group": "org.reactivestreams", - "name": "reactive-streams", - "version": "1.0.2", - "type": "pom", - "extension": "pom" - }, - "name": "reactive-streams-1.0.2.pom", - "path": "org/reactivestreams/reactive-streams/1.0.2", - "urls": [ - "https://jcenter.bintray.com/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.pom" - ], - "sha256": "5b626a99e5734ba8d0c0c8c3fc6258afa0624f4ce61ae1192247d03c57463ded" - }, - { - "id": { - "group": "org.slf4j", - "name": "jul-to-slf4j", - "version": "1.7.28", - "type": "jar", - "extension": "jar" - }, - "name": "jul-to-slf4j-1.7.28.jar", - "path": "org/slf4j/jul-to-slf4j/1.7.28", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/jul-to-slf4j/1.7.28/jul-to-slf4j-1.7.28.jar", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/jul-to-slf4j/1.7.28/jul-to-slf4j-1.7.28.jar" - ], - "sha256": "67c99ffdef691c3b0f817e130c2047fa43ecf12017613ff597f66f768d745475" - }, - { - "id": { - "group": "org.slf4j", - "name": "jul-to-slf4j", - "version": "1.7.28", - "type": "pom", - "extension": "pom" - }, - "name": "jul-to-slf4j-1.7.28.pom", - "path": "org/slf4j/jul-to-slf4j/1.7.28", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/jul-to-slf4j/1.7.28/jul-to-slf4j-1.7.28.pom", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/jul-to-slf4j/1.7.28/jul-to-slf4j-1.7.28.pom" - ], - "sha256": "4853b84165f91828072cc2f345a96105a6d89d31b3bf5d8f763fd7c0d72c9086" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-api", - "version": "1.7.28", - "type": "jar", - "extension": "jar" - }, - "name": "slf4j-api-1.7.28.jar", - "path": "org/slf4j/slf4j-api/1.7.28", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.28/slf4j-api-1.7.28.jar", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/1.7.28/slf4j-api-1.7.28.jar" - ], - "sha256": "fb6e4f67a2a4689e3e713584db17a5d1090c1ebe6eec30e9e0349a6ee118141e" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-api", - "version": "1.7.28", - "type": "pom", - "extension": "pom" - }, - "name": "slf4j-api-1.7.28.pom", - "path": "org/slf4j/slf4j-api/1.7.28", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.28/slf4j-api-1.7.28.pom", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/1.7.28/slf4j-api-1.7.28.pom" - ], - "sha256": "61f10feac576665b68caa6170cd423e8fb00055f1fad7ad9d7de2150e5f15caa" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-parent", - "version": "1.7.28", - "type": "pom", - "extension": "pom" - }, - "name": "slf4j-parent-1.7.28.pom", - "path": "org/slf4j/slf4j-parent/1.7.28", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-parent/1.7.28/slf4j-parent-1.7.28.pom", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-parent/1.7.28/slf4j-parent-1.7.28.pom" - ], - "sha256": "919b5f42dde33ace036865d1e2b292d98a0627417ff756e0287f4a56ad3e544e" - }, - { - "id": { - "group": "org.sonatype.oss", - "name": "oss-parent", - "version": "9", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-9.pom", - "path": "org/sonatype/oss/oss-parent/9", - "urls": [ - "https://jcenter.bintray.com/org/sonatype/oss/oss-parent/9/oss-parent-9.pom", - "https://repo.gradle.org/gradle/libs-releases/org/sonatype/oss/oss-parent/9/oss-parent-9.pom" - ], - "sha256": "fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-aop", - "version": "5.1.10.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-aop-5.1.10.RELEASE.jar", - "path": "org/springframework/spring-aop/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-aop/5.1.10.RELEASE/spring-aop-5.1.10.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-aop/5.1.10.RELEASE/spring-aop-5.1.10.RELEASE.jar" - ], - "sha256": "55c211e93b1cd339e2beae6e9440307d1fcb60bfd0c96c105ecea7f58bacc3d3" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-aop", - "version": "5.1.10.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-aop-5.1.10.RELEASE.pom", - "path": "org/springframework/spring-aop/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-aop/5.1.10.RELEASE/spring-aop-5.1.10.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-aop/5.1.10.RELEASE/spring-aop-5.1.10.RELEASE.pom" - ], - "sha256": "07e597b931da570c0a3e89c7590b04baab7ca56b31addd146fda16605a7b26c5" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-beans", - "version": "5.1.10.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-beans-5.1.10.RELEASE.jar", - "path": "org/springframework/spring-beans/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-beans/5.1.10.RELEASE/spring-beans-5.1.10.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-beans/5.1.10.RELEASE/spring-beans-5.1.10.RELEASE.jar" - ], - "sha256": "c82469fd2715bdb3194dff9ab3fbb215f351473d428fc169328d975b30992b9d" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-beans", - "version": "5.1.10.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-beans-5.1.10.RELEASE.pom", - "path": "org/springframework/spring-beans/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-beans/5.1.10.RELEASE/spring-beans-5.1.10.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-beans/5.1.10.RELEASE/spring-beans-5.1.10.RELEASE.pom" - ], - "sha256": "dcf56744d73e9fe489b7749cb63795396a7acc48a18f010a7707add63e5be74c" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-context", - "version": "5.1.10.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-context-5.1.10.RELEASE.jar", - "path": "org/springframework/spring-context/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-context/5.1.10.RELEASE/spring-context-5.1.10.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-context/5.1.10.RELEASE/spring-context-5.1.10.RELEASE.jar" - ], - "sha256": "2867abcedbc32b20f1f5f7265b1664057b034e474f30119337a0169fb9c91727" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-context", - "version": "5.1.10.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-context-5.1.10.RELEASE.pom", - "path": "org/springframework/spring-context/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-context/5.1.10.RELEASE/spring-context-5.1.10.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-context/5.1.10.RELEASE/spring-context-5.1.10.RELEASE.pom" - ], - "sha256": "fb088f1a7ef158ef3cdfb85ede5ee5ae01e042d2c9107e58aafe98f54f3ecb65" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-core", - "version": "5.1.10.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-core-5.1.10.RELEASE.jar", - "path": "org/springframework/spring-core/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-core/5.1.10.RELEASE/spring-core-5.1.10.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-core/5.1.10.RELEASE/spring-core-5.1.10.RELEASE.jar" - ], - "sha256": "531e9fba1a94d0a9afbe27ba6935cb068f2e2a158f31abed396436f5fed02580" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-core", - "version": "5.1.10.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-core-5.1.10.RELEASE.pom", - "path": "org/springframework/spring-core/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-core/5.1.10.RELEASE/spring-core-5.1.10.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-core/5.1.10.RELEASE/spring-core-5.1.10.RELEASE.pom" - ], - "sha256": "e388a847a03fdf6cdcbd3a803378bbee265c043e04c69130573466ce8046dc33" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-expression", - "version": "5.1.10.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-expression-5.1.10.RELEASE.jar", - "path": "org/springframework/spring-expression/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-expression/5.1.10.RELEASE/spring-expression-5.1.10.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-expression/5.1.10.RELEASE/spring-expression-5.1.10.RELEASE.jar" - ], - "sha256": "b3ac94044e6a97cc17ea56054b939c161d8150876e661a467e4d184e2a5d0b58" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-expression", - "version": "5.1.10.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-expression-5.1.10.RELEASE.pom", - "path": "org/springframework/spring-expression/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-expression/5.1.10.RELEASE/spring-expression-5.1.10.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-expression/5.1.10.RELEASE/spring-expression-5.1.10.RELEASE.pom" - ], - "sha256": "04f9834ba65b3198681712a691510f92aa4e006834bc3c20b64817ec8bbff9a3" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-jcl", - "version": "5.1.10.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-jcl-5.1.10.RELEASE.jar", - "path": "org/springframework/spring-jcl/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-jcl/5.1.10.RELEASE/spring-jcl-5.1.10.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-jcl/5.1.10.RELEASE/spring-jcl-5.1.10.RELEASE.jar" - ], - "sha256": "08a81d0f7e604fa2bbe23588a4c7f7c9819098522420e16e0acf630ca713508b" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-jcl", - "version": "5.1.10.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-jcl-5.1.10.RELEASE.pom", - "path": "org/springframework/spring-jcl/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-jcl/5.1.10.RELEASE/spring-jcl-5.1.10.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-jcl/5.1.10.RELEASE/spring-jcl-5.1.10.RELEASE.pom" - ], - "sha256": "6f3b85c214345887e98a3348c0284f24297a6aaaae10b25754cea991196430dc" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-web", - "version": "5.1.10.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-web-5.1.10.RELEASE.jar", - "path": "org/springframework/spring-web/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-web/5.1.10.RELEASE/spring-web-5.1.10.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-web/5.1.10.RELEASE/spring-web-5.1.10.RELEASE.jar" - ], - "sha256": "faf2bb67797af92a1b2342af5085797edd91675d30730a5ede9e112795b9c671" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-web", - "version": "5.1.10.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-web-5.1.10.RELEASE.pom", - "path": "org/springframework/spring-web/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-web/5.1.10.RELEASE/spring-web-5.1.10.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-web/5.1.10.RELEASE/spring-web-5.1.10.RELEASE.pom" - ], - "sha256": "aabeeaa12fab56cdb2615b2136f09d5ce714e9800e719c6e7b00f210b10b6221" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-webmvc", - "version": "5.1.10.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-webmvc-5.1.10.RELEASE.jar", - "path": "org/springframework/spring-webmvc/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-webmvc/5.1.10.RELEASE/spring-webmvc-5.1.10.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-webmvc/5.1.10.RELEASE/spring-webmvc-5.1.10.RELEASE.jar" - ], - "sha256": "622955e52bb3affbdd66c175730c918c1ad43fd53da98dd4987154b4295ed0f8" - }, - { - "id": { - "group": "org.springframework", - "name": "spring-webmvc", - "version": "5.1.10.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-webmvc-5.1.10.RELEASE.pom", - "path": "org/springframework/spring-webmvc/5.1.10.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/spring-webmvc/5.1.10.RELEASE/spring-webmvc-5.1.10.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/spring-webmvc/5.1.10.RELEASE/spring-webmvc-5.1.10.RELEASE.pom" - ], - "sha256": "6f13181c20de3c4ff6e991da9114feefd7f61d669ca0013a7180936024996142" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot", - "version": "2.1.9.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-boot-2.1.9.RELEASE.jar", - "path": "org/springframework/boot/spring-boot/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot/2.1.9.RELEASE/spring-boot-2.1.9.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot/2.1.9.RELEASE/spring-boot-2.1.9.RELEASE.jar" - ], - "sha256": "f6132cff729d4fd3436baef5eb574be21a9d693244d7687dabf2478e25df285b" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot", - "version": "2.1.9.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-boot-2.1.9.RELEASE.pom", - "path": "org/springframework/boot/spring-boot/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot/2.1.9.RELEASE/spring-boot-2.1.9.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot/2.1.9.RELEASE/spring-boot-2.1.9.RELEASE.pom" - ], - "sha256": "89fc032b1e6c04ae064ba62b35d47f395f3be181bcde73da6e11099c5f0b6805" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-autoconfigure", - "version": "2.1.9.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-boot-autoconfigure-2.1.9.RELEASE.jar", - "path": "org/springframework/boot/spring-boot-autoconfigure/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-autoconfigure/2.1.9.RELEASE/spring-boot-autoconfigure-2.1.9.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-autoconfigure/2.1.9.RELEASE/spring-boot-autoconfigure-2.1.9.RELEASE.jar" - ], - "sha256": "1fe2fee6ca81cab388891ed1bd1116cfbd7fff991cf0802a2bf5bb33e09e7ff9" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-autoconfigure", - "version": "2.1.9.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-boot-autoconfigure-2.1.9.RELEASE.pom", - "path": "org/springframework/boot/spring-boot-autoconfigure/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-autoconfigure/2.1.9.RELEASE/spring-boot-autoconfigure-2.1.9.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-autoconfigure/2.1.9.RELEASE/spring-boot-autoconfigure-2.1.9.RELEASE.pom" - ], - "sha256": "fa1c8dbfef02a548b7f1a98689cd3586ca2fb7528da4154c4dfde78e265d566b" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-dependencies", - "version": "2.1.9.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-boot-dependencies-2.1.9.RELEASE.pom", - "path": "org/springframework/boot/spring-boot-dependencies/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-dependencies/2.1.9.RELEASE/spring-boot-dependencies-2.1.9.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-dependencies/2.1.9.RELEASE/spring-boot-dependencies-2.1.9.RELEASE.pom" - ], - "sha256": "03d3b3edff0f94ee3dd3a98e235b65c18fdbf7ad7e1717e80de96d57e398e348" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-parent", - "version": "2.1.9.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-boot-parent-2.1.9.RELEASE.pom", - "path": "org/springframework/boot/spring-boot-parent/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-parent/2.1.9.RELEASE/spring-boot-parent-2.1.9.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-parent/2.1.9.RELEASE/spring-boot-parent-2.1.9.RELEASE.pom" - ], - "sha256": "6b46e6d6ae5ec36fb401dcecd4504a99d1a03e5d4402129334785c59c9728c5a" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starter", - "version": "2.1.9.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-boot-starter-2.1.9.RELEASE.jar", - "path": "org/springframework/boot/spring-boot-starter/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter/2.1.9.RELEASE/spring-boot-starter-2.1.9.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starter/2.1.9.RELEASE/spring-boot-starter-2.1.9.RELEASE.jar" - ], - "sha256": "0cf930a92308e8002875ef920f48266eb6e0d1e1e4e06c379b3fe4cd49ced0ca" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starter", - "version": "2.1.9.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-boot-starter-2.1.9.RELEASE.pom", - "path": "org/springframework/boot/spring-boot-starter/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter/2.1.9.RELEASE/spring-boot-starter-2.1.9.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starter/2.1.9.RELEASE/spring-boot-starter-2.1.9.RELEASE.pom" - ], - "sha256": "5f33e958c3ba773108f87cf5901084da318f590a59ef4873fd8a1febb4591baa" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starter-jetty", - "version": "2.1.9.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-boot-starter-jetty-2.1.9.RELEASE.jar", - "path": "org/springframework/boot/spring-boot-starter-jetty/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter-jetty/2.1.9.RELEASE/spring-boot-starter-jetty-2.1.9.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starter-jetty/2.1.9.RELEASE/spring-boot-starter-jetty-2.1.9.RELEASE.jar" - ], - "sha256": "59c63fec3de28389d3a0fbf60877cc6968ecf3dfc002546aa7e7f03e97f611e7" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starter-jetty", - "version": "2.1.9.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-boot-starter-jetty-2.1.9.RELEASE.pom", - "path": "org/springframework/boot/spring-boot-starter-jetty/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter-jetty/2.1.9.RELEASE/spring-boot-starter-jetty-2.1.9.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starter-jetty/2.1.9.RELEASE/spring-boot-starter-jetty-2.1.9.RELEASE.pom" - ], - "sha256": "f20b38083912143f64b3744b212cd1474f088ba15dfccac841431e51aec0348d" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starter-json", - "version": "2.1.9.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-boot-starter-json-2.1.9.RELEASE.jar", - "path": "org/springframework/boot/spring-boot-starter-json/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter-json/2.1.9.RELEASE/spring-boot-starter-json-2.1.9.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starter-json/2.1.9.RELEASE/spring-boot-starter-json-2.1.9.RELEASE.jar" - ], - "sha256": "a09bf142a45c7cb75f18ceba06e34d9d0cd1bb7539225a80205e4b4e0c8d75e5" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starter-json", - "version": "2.1.9.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-boot-starter-json-2.1.9.RELEASE.pom", - "path": "org/springframework/boot/spring-boot-starter-json/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter-json/2.1.9.RELEASE/spring-boot-starter-json-2.1.9.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starter-json/2.1.9.RELEASE/spring-boot-starter-json-2.1.9.RELEASE.pom" - ], - "sha256": "9a96a5a48cebb6aaeb1328be0fa7c14f163f76b0196db8fabe287db5bc672268" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starter-logging", - "version": "2.1.9.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-boot-starter-logging-2.1.9.RELEASE.jar", - "path": "org/springframework/boot/spring-boot-starter-logging/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter-logging/2.1.9.RELEASE/spring-boot-starter-logging-2.1.9.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starter-logging/2.1.9.RELEASE/spring-boot-starter-logging-2.1.9.RELEASE.jar" - ], - "sha256": "6e6ccd50b5b095cbcae8634083bf07c7d8a4720939dc404de0da21e8686f9f30" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starter-logging", - "version": "2.1.9.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-boot-starter-logging-2.1.9.RELEASE.pom", - "path": "org/springframework/boot/spring-boot-starter-logging/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter-logging/2.1.9.RELEASE/spring-boot-starter-logging-2.1.9.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starter-logging/2.1.9.RELEASE/spring-boot-starter-logging-2.1.9.RELEASE.pom" - ], - "sha256": "ad84a26d85f3aa3ec13c19c5d2d501a01d87803a65dff297e8a4f7a16f97e371" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starter-web", - "version": "2.1.9.RELEASE", - "type": "jar", - "extension": "jar" - }, - "name": "spring-boot-starter-web-2.1.9.RELEASE.jar", - "path": "org/springframework/boot/spring-boot-starter-web/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter-web/2.1.9.RELEASE/spring-boot-starter-web-2.1.9.RELEASE.jar", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starter-web/2.1.9.RELEASE/spring-boot-starter-web-2.1.9.RELEASE.jar" - ], - "sha256": "14b2e6e5d7ef6868888a4d2fe2f0f88b4e4c9983876a43f033ebd9320c610e70" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starter-web", - "version": "2.1.9.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-boot-starter-web-2.1.9.RELEASE.pom", - "path": "org/springframework/boot/spring-boot-starter-web/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter-web/2.1.9.RELEASE/spring-boot-starter-web-2.1.9.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starter-web/2.1.9.RELEASE/spring-boot-starter-web-2.1.9.RELEASE.pom" - ], - "sha256": "5f86ce2139100c62466266b7ae71775b5876982f609dfbea62088f9cae85e9f9" - }, - { - "id": { - "group": "org.springframework.boot", - "name": "spring-boot-starters", - "version": "2.1.9.RELEASE", - "type": "pom", - "extension": "pom" - }, - "name": "spring-boot-starters-2.1.9.RELEASE.pom", - "path": "org/springframework/boot/spring-boot-starters/2.1.9.RELEASE", - "urls": [ - "https://jcenter.bintray.com/org/springframework/boot/spring-boot-starters/2.1.9.RELEASE/spring-boot-starters-2.1.9.RELEASE.pom", - "https://repo.gradle.org/gradle/libs-releases/org/springframework/boot/spring-boot-starters/2.1.9.RELEASE/spring-boot-starters-2.1.9.RELEASE.pom" - ], - "sha256": "58ca4d34ae4c673eaa5b54abc91b41bf921b1bb7026193dfa586836cf0a5349e" - }, - { - "id": { - "group": "org.yaml", - "name": "snakeyaml", - "version": "1.23", - "type": "jar", - "extension": "jar" - }, - "name": "snakeyaml-1.23.jar", - "path": "org/yaml/snakeyaml/1.23", - "urls": [ - "https://jcenter.bintray.com/org/yaml/snakeyaml/1.23/snakeyaml-1.23.jar", - "https://repo.gradle.org/gradle/libs-releases/org/yaml/snakeyaml/1.23/snakeyaml-1.23.jar" - ], - "sha256": "13009fb5ede3cf2be5a8d0f1602155aeaa0ce5ef5f9366892bd258d8d3d4d2b1" - }, - { - "id": { - "group": "org.yaml", - "name": "snakeyaml", - "version": "1.23", - "type": "pom", - "extension": "pom" - }, - "name": "snakeyaml-1.23.pom", - "path": "org/yaml/snakeyaml/1.23", - "urls": [ - "https://jcenter.bintray.com/org/yaml/snakeyaml/1.23/snakeyaml-1.23.pom", - "https://repo.gradle.org/gradle/libs-releases/org/yaml/snakeyaml/1.23/snakeyaml-1.23.pom" - ], - "sha256": "1e1beb22ca906209700122b5cacf6f2719324538c5b1e3c27bf91564c8d31dbd" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "annotations", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "annotations-2.7.19.jar", - "path": "software/amazon/awssdk/annotations/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/annotations/2.7.19/annotations-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/annotations/2.7.19/annotations-2.7.19.jar" - ], - "sha256": "5cdfa12c15a51b771548eecf836570cb51de23a1fd96bf17c2bba5f47c0cb896" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "annotations", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "annotations-2.7.19.pom", - "path": "software/amazon/awssdk/annotations/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/annotations/2.7.19/annotations-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/annotations/2.7.19/annotations-2.7.19.pom" - ], - "sha256": "7277e2e6de2734fcc3ce2bbb83b896762c35a44836947aec410225f5a4971964" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "apache-client", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "apache-client-2.7.19.jar", - "path": "software/amazon/awssdk/apache-client/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/apache-client/2.7.19/apache-client-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/apache-client/2.7.19/apache-client-2.7.19.jar" - ], - "sha256": "b37470db8ac1f4ad63346f504c2ef973eb99550a4aaad8c9398c4df9f55ae594" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "apache-client", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "apache-client-2.7.19.pom", - "path": "software/amazon/awssdk/apache-client/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/apache-client/2.7.19/apache-client-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/apache-client/2.7.19/apache-client-2.7.19.pom" - ], - "sha256": "db55c11d69122bf4ae9b8eaf82062bf9377a2751b0aa0ffd8a04b6601821c7b2" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "auth", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "auth-2.7.19.jar", - "path": "software/amazon/awssdk/auth/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/auth/2.7.19/auth-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/auth/2.7.19/auth-2.7.19.jar" - ], - "sha256": "ee75c970b5c4de291ac6db977e1e1a981fb43a7ba30ae52ee8a00f4a371f6066" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "auth", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "auth-2.7.19.pom", - "path": "software/amazon/awssdk/auth/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/auth/2.7.19/auth-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/auth/2.7.19/auth-2.7.19.pom" - ], - "sha256": "5dbfcd02b63b2a84481c822101eadfce60fa72a3f7e4067e1af54588fd0f58e9" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "aws-core", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "aws-core-2.7.19.jar", - "path": "software/amazon/awssdk/aws-core/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/aws-core/2.7.19/aws-core-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/aws-core/2.7.19/aws-core-2.7.19.jar" - ], - "sha256": "0208690532f71c1b65193d2ab85a66cd26f57d04aaa4038826890143381e7323" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "aws-core", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "aws-core-2.7.19.pom", - "path": "software/amazon/awssdk/aws-core/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/aws-core/2.7.19/aws-core-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/aws-core/2.7.19/aws-core-2.7.19.pom" - ], - "sha256": "c3092bc6bf56b32312d6a6f0bdb8862e1fd96fd870b4cd4b6d2d0b3e3b740373" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "aws-query-protocol", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "aws-query-protocol-2.7.19.jar", - "path": "software/amazon/awssdk/aws-query-protocol/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/aws-query-protocol/2.7.19/aws-query-protocol-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/aws-query-protocol/2.7.19/aws-query-protocol-2.7.19.jar" - ], - "sha256": "8c982f3a434b8276a3ecb24f5a880d4120544143b48ffe5085549a77da9857d8" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "aws-query-protocol", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "aws-query-protocol-2.7.19.pom", - "path": "software/amazon/awssdk/aws-query-protocol/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/aws-query-protocol/2.7.19/aws-query-protocol-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/aws-query-protocol/2.7.19/aws-query-protocol-2.7.19.pom" - ], - "sha256": "b4caf3f658d5e6789aadd5b7083e1d04b27a7f09b207e63e6043eb6d9107a739" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "aws-sdk-java-pom", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "aws-sdk-java-pom-2.7.19.pom", - "path": "software/amazon/awssdk/aws-sdk-java-pom/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/aws-sdk-java-pom/2.7.19/aws-sdk-java-pom-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/aws-sdk-java-pom/2.7.19/aws-sdk-java-pom-2.7.19.pom" - ], - "sha256": "37a0d91d094eeaebbdddc3ebc357cafe6113bac48448c0c3c0a69f9925de18c3" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "aws-xml-protocol", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "aws-xml-protocol-2.7.19.jar", - "path": "software/amazon/awssdk/aws-xml-protocol/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/aws-xml-protocol/2.7.19/aws-xml-protocol-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/aws-xml-protocol/2.7.19/aws-xml-protocol-2.7.19.jar" - ], - "sha256": "dde346d619ecbffb504acb9bc66f5e4541e13106f962c067e7fc825311e2feb0" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "aws-xml-protocol", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "aws-xml-protocol-2.7.19.pom", - "path": "software/amazon/awssdk/aws-xml-protocol/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/aws-xml-protocol/2.7.19/aws-xml-protocol-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/aws-xml-protocol/2.7.19/aws-xml-protocol-2.7.19.pom" - ], - "sha256": "8472e0c909f36cb3f3b0345974aaa87bfb858ea12799857ad93ba7ed81913fef" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "core", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "core-2.7.19.pom", - "path": "software/amazon/awssdk/core/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/core/2.7.19/core-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/core/2.7.19/core-2.7.19.pom" - ], - "sha256": "c47d65f6242f3627dea7aec49ed9f4d27b8bd9f3ab3143c89edcc08a9065bc3a" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "http-client-spi", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "http-client-spi-2.7.19.jar", - "path": "software/amazon/awssdk/http-client-spi/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/http-client-spi/2.7.19/http-client-spi-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/http-client-spi/2.7.19/http-client-spi-2.7.19.jar" - ], - "sha256": "fccf89267de9859340571a7b44e63395760436f6e37b1470690b4609b8bb98c7" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "http-client-spi", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "http-client-spi-2.7.19.pom", - "path": "software/amazon/awssdk/http-client-spi/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/http-client-spi/2.7.19/http-client-spi-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/http-client-spi/2.7.19/http-client-spi-2.7.19.pom" - ], - "sha256": "3d3e37652d81193c2883a7258a71174c502d17026057c263a2f93066a69f3bc4" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "http-clients", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "http-clients-2.7.19.pom", - "path": "software/amazon/awssdk/http-clients/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/http-clients/2.7.19/http-clients-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/http-clients/2.7.19/http-clients-2.7.19.pom" - ], - "sha256": "46edcec27865183f7ccedf631d9fe3695016435b5791ce5aa39399be1eeb0879" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "netty-nio-client", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "netty-nio-client-2.7.19.jar", - "path": "software/amazon/awssdk/netty-nio-client/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/netty-nio-client/2.7.19/netty-nio-client-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/netty-nio-client/2.7.19/netty-nio-client-2.7.19.jar" - ], - "sha256": "1a8bfa92886391312eae110e31408e08b5644e8920e5b9f96eebabf6633fc58f" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "netty-nio-client", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "netty-nio-client-2.7.19.pom", - "path": "software/amazon/awssdk/netty-nio-client/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/netty-nio-client/2.7.19/netty-nio-client-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/netty-nio-client/2.7.19/netty-nio-client-2.7.19.pom" - ], - "sha256": "cc85fddb1aa58456b8f8c091889e8b709fe7a2efa0f5b35ae9a7780422739f74" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "profiles", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "profiles-2.7.19.jar", - "path": "software/amazon/awssdk/profiles/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/profiles/2.7.19/profiles-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/profiles/2.7.19/profiles-2.7.19.jar" - ], - "sha256": "c87cb4dbd1ddb7742e199a3ed462bb63f2c280de1a63d94ddacb2e5547a84b75" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "profiles", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "profiles-2.7.19.pom", - "path": "software/amazon/awssdk/profiles/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/profiles/2.7.19/profiles-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/profiles/2.7.19/profiles-2.7.19.pom" - ], - "sha256": "b1842a99ce20cea26dfee5a55aabedf2fc0d6104c4af9a34e36e24ba72481041" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "protocol-core", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "protocol-core-2.7.19.jar", - "path": "software/amazon/awssdk/protocol-core/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/protocol-core/2.7.19/protocol-core-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/protocol-core/2.7.19/protocol-core-2.7.19.jar" - ], - "sha256": "bd591ea2e6fc37408a79a3a4cdbe4605a35ec4982934e8df0efc28b42365d67e" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "protocol-core", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "protocol-core-2.7.19.pom", - "path": "software/amazon/awssdk/protocol-core/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/protocol-core/2.7.19/protocol-core-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/protocol-core/2.7.19/protocol-core-2.7.19.pom" - ], - "sha256": "bc8923a7d4e827bb3953f0768e809aed1a137830115c8086dce7b78eb0ac76e0" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "protocols", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "protocols-2.7.19.pom", - "path": "software/amazon/awssdk/protocols/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/protocols/2.7.19/protocols-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/protocols/2.7.19/protocols-2.7.19.pom" - ], - "sha256": "a6558ad74253e279ba457ca8fa6010083d154ea371161d3d2a463601d78ec6d4" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "regions", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "regions-2.7.19.jar", - "path": "software/amazon/awssdk/regions/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/regions/2.7.19/regions-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/regions/2.7.19/regions-2.7.19.jar" - ], - "sha256": "42975ac83d4760974748bde154c4251d15d80f3645c49119427d23431849bd22" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "regions", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "regions-2.7.19.pom", - "path": "software/amazon/awssdk/regions/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/regions/2.7.19/regions-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/regions/2.7.19/regions-2.7.19.pom" - ], - "sha256": "274c3fe36923ff4176001275c0463da3aab24854cfc09c1c334df10022346118" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "s3", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "s3-2.7.19.jar", - "path": "software/amazon/awssdk/s3/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/s3/2.7.19/s3-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/s3/2.7.19/s3-2.7.19.jar" - ], - "sha256": "2fd3f71b3264cf7f75bf76606d4bb295b140c5dd66b25a380708c56524b3d4f2" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "s3", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "s3-2.7.19.pom", - "path": "software/amazon/awssdk/s3/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/s3/2.7.19/s3-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/s3/2.7.19/s3-2.7.19.pom" - ], - "sha256": "7805f882007b6c8163679f0ad605702bb1826bdfca179fa825c02eebcf8ace18" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "sdk-core", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "sdk-core-2.7.19.jar", - "path": "software/amazon/awssdk/sdk-core/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/sdk-core/2.7.19/sdk-core-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/sdk-core/2.7.19/sdk-core-2.7.19.jar" - ], - "sha256": "6863d85d4d7a47c02d7d3a0b7dfea608851a8cab36353d1f2a7c6a34fe8d7aaa" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "sdk-core", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "sdk-core-2.7.19.pom", - "path": "software/amazon/awssdk/sdk-core/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/sdk-core/2.7.19/sdk-core-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/sdk-core/2.7.19/sdk-core-2.7.19.pom" - ], - "sha256": "2d86a6e6aea330a416e218224d2ce2f6fc61ef1569debb62636e295e304f8a7b" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "services", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "services-2.7.19.pom", - "path": "software/amazon/awssdk/services/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/services/2.7.19/services-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/services/2.7.19/services-2.7.19.pom" - ], - "sha256": "cbbf2b4d45c2681a9dcc91cf36ab1cf47714f769dc2aae745d69950e7a38673b" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "url-connection-client", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "url-connection-client-2.7.19.jar", - "path": "software/amazon/awssdk/url-connection-client/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/url-connection-client/2.7.19/url-connection-client-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/url-connection-client/2.7.19/url-connection-client-2.7.19.jar" - ], - "sha256": "568bf72374c5949fbb3398fb19eae141708aa6f339385649387797372f6ae033" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "url-connection-client", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "url-connection-client-2.7.19.pom", - "path": "software/amazon/awssdk/url-connection-client/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/url-connection-client/2.7.19/url-connection-client-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/url-connection-client/2.7.19/url-connection-client-2.7.19.pom" - ], - "sha256": "2f178ae7d45be5cf13a0bb99990a4c71ed7ec3e294bbcb8adf6d7692cb52abeb" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "utils", - "version": "2.7.19", - "type": "jar", - "extension": "jar" - }, - "name": "utils-2.7.19.jar", - "path": "software/amazon/awssdk/utils/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/utils/2.7.19/utils-2.7.19.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/utils/2.7.19/utils-2.7.19.jar" - ], - "sha256": "3b880bdb943819afd736367dfa2a0ca7bd07f3f31d633a56d459360d36b1580b" - }, - { - "id": { - "group": "software.amazon.awssdk", - "name": "utils", - "version": "2.7.19", - "type": "pom", - "extension": "pom" - }, - "name": "utils-2.7.19.pom", - "path": "software/amazon/awssdk/utils/2.7.19", - "urls": [ - "https://jcenter.bintray.com/software/amazon/awssdk/utils/2.7.19/utils-2.7.19.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/awssdk/utils/2.7.19/utils-2.7.19.pom" - ], - "sha256": "2ade20946840cc7cbca85522954f4b1ccbd08d68dafd04d9e237c298520cfbba" - }, - { - "id": { - "group": "software.amazon.eventstream", - "name": "eventstream", - "version": "1.0.1", - "type": "jar", - "extension": "jar" - }, - "name": "eventstream-1.0.1.jar", - "path": "software/amazon/eventstream/eventstream/1.0.1", - "urls": [ - "https://jcenter.bintray.com/software/amazon/eventstream/eventstream/1.0.1/eventstream-1.0.1.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/eventstream/eventstream/1.0.1/eventstream-1.0.1.jar" - ], - "sha256": "0c37d8e696117f02c302191b8110b0d0eb20fa412fce34c3a269ec73c16ce822" - }, - { - "id": { - "group": "software.amazon.eventstream", - "name": "eventstream", - "version": "1.0.1", - "type": "pom", - "extension": "pom" - }, - "name": "eventstream-1.0.1.pom", - "path": "software/amazon/eventstream/eventstream/1.0.1", - "urls": [ - "https://jcenter.bintray.com/software/amazon/eventstream/eventstream/1.0.1/eventstream-1.0.1.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/eventstream/eventstream/1.0.1/eventstream-1.0.1.pom" - ], - "sha256": "f9460cb794a0a7af68277efb5769569e8e66515250276c37e62a7e8bd4b257cc" - }, - { - "id": { - "group": "software.amazon.ion", - "name": "ion-java", - "version": "1.0.2", - "type": "jar", - "extension": "jar" - }, - "name": "ion-java-1.0.2.jar", - "path": "software/amazon/ion/ion-java/1.0.2", - "urls": [ - "https://jcenter.bintray.com/software/amazon/ion/ion-java/1.0.2/ion-java-1.0.2.jar", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/ion/ion-java/1.0.2/ion-java-1.0.2.jar" - ], - "sha256": "0d127b205a1fce0abc2a3757a041748651bc66c15cf4c059bac5833b27d471a5" - }, - { - "id": { - "group": "software.amazon.ion", - "name": "ion-java", - "version": "1.0.2", - "type": "pom", - "extension": "pom" - }, - "name": "ion-java-1.0.2.pom", - "path": "software/amazon/ion/ion-java/1.0.2", - "urls": [ - "https://jcenter.bintray.com/software/amazon/ion/ion-java/1.0.2/ion-java-1.0.2.pom", - "https://repo.gradle.org/gradle/libs-releases/software/amazon/ion/ion-java/1.0.2/ion-java-1.0.2.pom" - ], - "sha256": "20a643c46de6bc30cc81fa3b9e3bb1697afa37168cc183745497b704969bbb92" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-core", - "version": "1.11.488", - "type": "jar", - "extension": "jar" - }, - "name": "aws-java-sdk-core-1.11.488.jar", - "path": "com/amazonaws/aws-java-sdk-core/1.11.488", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-core/1.11.488/aws-java-sdk-core-1.11.488.jar", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-core/1.11.488/aws-java-sdk-core-1.11.488.jar" - ], - "sha256": "cec31c0a7f56faa4d9e08aed124a186d95ec73c66893013ebaf979b5c356f71d" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-core", - "version": "1.11.488", - "type": "pom", - "extension": "pom" - }, - "name": "aws-java-sdk-core-1.11.488.pom", - "path": "com/amazonaws/aws-java-sdk-core/1.11.488", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-core/1.11.488/aws-java-sdk-core-1.11.488.pom", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-core/1.11.488/aws-java-sdk-core-1.11.488.pom" - ], - "sha256": "565c2da400873c4713241e9098cd0362468321abac5ac70249341edf95a45c81" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-kms", - "version": "1.11.488", - "type": "jar", - "extension": "jar" - }, - "name": "aws-java-sdk-kms-1.11.488.jar", - "path": "com/amazonaws/aws-java-sdk-kms/1.11.488", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-kms/1.11.488/aws-java-sdk-kms-1.11.488.jar", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-kms/1.11.488/aws-java-sdk-kms-1.11.488.jar" - ], - "sha256": "5449724c43c24c5d148edaf47283b0265524adb247fc99cd59b6944f6e06b6e3" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-kms", - "version": "1.11.488", - "type": "pom", - "extension": "pom" - }, - "name": "aws-java-sdk-kms-1.11.488.pom", - "path": "com/amazonaws/aws-java-sdk-kms/1.11.488", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-kms/1.11.488/aws-java-sdk-kms-1.11.488.pom", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-kms/1.11.488/aws-java-sdk-kms-1.11.488.pom" - ], - "sha256": "90671c95019485e092530bedf0b5db4300e5d5484548d5aaa21e27570e6f8f50" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-pom", - "version": "1.11.488", - "type": "pom", - "extension": "pom" - }, - "name": "aws-java-sdk-pom-1.11.488.pom", - "path": "com/amazonaws/aws-java-sdk-pom/1.11.488", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-pom/1.11.488/aws-java-sdk-pom-1.11.488.pom", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-pom/1.11.488/aws-java-sdk-pom-1.11.488.pom" - ], - "sha256": "0e2cbd204b8cacb635e23f00d793c34a8d02999e68c9458572e9b0ff9db64118" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-s3", - "version": "1.11.488", - "type": "jar", - "extension": "jar" - }, - "name": "aws-java-sdk-s3-1.11.488.jar", - "path": "com/amazonaws/aws-java-sdk-s3/1.11.488", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-s3/1.11.488/aws-java-sdk-s3-1.11.488.jar", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-s3/1.11.488/aws-java-sdk-s3-1.11.488.jar" - ], - "sha256": "607b4057b63682274b4d34c2d07b358ec6ff7a2e2619753dc6dc4cc5c3fbcaf3" - }, - { - "id": { - "group": "com.amazonaws", - "name": "aws-java-sdk-s3", - "version": "1.11.488", - "type": "pom", - "extension": "pom" - }, - "name": "aws-java-sdk-s3-1.11.488.pom", - "path": "com/amazonaws/aws-java-sdk-s3/1.11.488", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-s3/1.11.488/aws-java-sdk-s3-1.11.488.pom", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/aws-java-sdk-s3/1.11.488/aws-java-sdk-s3-1.11.488.pom" - ], - "sha256": "02302bacaebe3b15989093320349d387ccf96e545f3ae684392be9ea6a895f7d" - }, - { - "id": { - "group": "com.amazonaws", - "name": "jmespath-java", - "version": "1.11.488", - "type": "jar", - "extension": "jar" - }, - "name": "jmespath-java-1.11.488.jar", - "path": "com/amazonaws/jmespath-java/1.11.488", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/jmespath-java/1.11.488/jmespath-java-1.11.488.jar", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/jmespath-java/1.11.488/jmespath-java-1.11.488.jar" - ], - "sha256": "6e98377d30a3391595d706cfb5290a346bd8bfa764f1463fd5abf334c36b1404" - }, - { - "id": { - "group": "com.amazonaws", - "name": "jmespath-java", - "version": "1.11.488", - "type": "pom", - "extension": "pom" - }, - "name": "jmespath-java-1.11.488.pom", - "path": "com/amazonaws/jmespath-java/1.11.488", - "urls": [ - "https://jcenter.bintray.com/com/amazonaws/jmespath-java/1.11.488/jmespath-java-1.11.488.pom", - "https://repo.gradle.org/gradle/libs-releases/com/amazonaws/jmespath-java/1.11.488/jmespath-java-1.11.488.pom" - ], - "sha256": "1c99dd71a37d39ae9bee72035a6448fa6e89526710045b2bea8af3f508bbc4f3" - }, - { - "id": { - "group": "dev.minutest", - "name": "minutest", - "version": "2.0.0-alpha", - "type": "jar", - "extension": "jar" - }, - "name": "minutest-2.0.0-alpha.jar", - "path": "dev/minutest/minutest/2.0.0-alpha", - "urls": [ - "https://jcenter.bintray.com/dev/minutest/minutest/2.0.0-alpha/minutest-2.0.0-alpha.jar", - "https://repo.gradle.org/gradle/libs-releases/dev/minutest/minutest/2.0.0-alpha/minutest-2.0.0-alpha.jar" - ], - "sha256": "7c595c03d13b460e9b24a366d5228242776658ab3a75ab8e9b7b9b602393b59a" - }, - { - "id": { - "group": "dev.minutest", - "name": "minutest", - "version": "2.0.0-alpha", - "type": "pom", - "extension": "pom" - }, - "name": "minutest-2.0.0-alpha.pom", - "path": "dev/minutest/minutest/2.0.0-alpha", - "urls": [ - "https://jcenter.bintray.com/dev/minutest/minutest/2.0.0-alpha/minutest-2.0.0-alpha.pom", - "https://repo.gradle.org/gradle/libs-releases/dev/minutest/minutest/2.0.0-alpha/minutest-2.0.0-alpha.pom" - ], - "sha256": "343d2376b797ec34073758b04c8aef4e5227184e8adbc105531a4ddfc2bd52ea" - }, - { - "id": { - "group": "io.github.classgraph", - "name": "classgraph", - "version": "4.8.28", - "type": "jar", - "extension": "jar" - }, - "name": "classgraph-4.8.28.jar", - "path": "io/github/classgraph/classgraph/4.8.28", - "urls": [ - "https://jcenter.bintray.com/io/github/classgraph/classgraph/4.8.28/classgraph-4.8.28.jar", - "https://repo.gradle.org/gradle/libs-releases/io/github/classgraph/classgraph/4.8.28/classgraph-4.8.28.jar" - ], - "sha256": "bddc6eb9bcd88d1054d362c4a870c18b0a6d74f4ce7961a527a03748a16f8e31" - }, - { - "id": { - "group": "io.github.classgraph", - "name": "classgraph", - "version": "4.8.28", - "type": "pom", - "extension": "pom" - }, - "name": "classgraph-4.8.28.pom", - "path": "io/github/classgraph/classgraph/4.8.28", - "urls": [ - "https://jcenter.bintray.com/io/github/classgraph/classgraph/4.8.28/classgraph-4.8.28.pom", - "https://repo.gradle.org/gradle/libs-releases/io/github/classgraph/classgraph/4.8.28/classgraph-4.8.28.pom" - ], - "sha256": "75d61da98c46d79a3a548a952bd806020f808c75ccd21958a6c791cfbfa0481e" - }, - { - "id": { - "group": "io.javalin", - "name": "javalin", - "version": "3.13.3", - "type": "jar", - "extension": "jar" - }, - "name": "javalin-3.13.3.jar", - "path": "io/javalin/javalin/3.13.3", - "urls": [ - "https://jcenter.bintray.com/io/javalin/javalin/3.13.3/javalin-3.13.3.jar", - "https://repo.gradle.org/gradle/libs-releases/io/javalin/javalin/3.13.3/javalin-3.13.3.jar" - ], - "sha256": "b4585102e1e23c08e51d06432001ffdaf6d749ed87e8a4e68525aae1d43a8b4a" - }, - { - "id": { - "group": "io.javalin", - "name": "javalin", - "version": "3.13.3", - "type": "pom", - "extension": "pom" - }, - "name": "javalin-3.13.3.pom", - "path": "io/javalin/javalin/3.13.3", - "urls": [ - "https://jcenter.bintray.com/io/javalin/javalin/3.13.3/javalin-3.13.3.pom", - "https://repo.gradle.org/gradle/libs-releases/io/javalin/javalin/3.13.3/javalin-3.13.3.pom" - ], - "sha256": "87ec1c554071b95d9abb5dda986150e339e40d0444dfdf6f87256f269f9933c2" - }, - { - "id": { - "group": "io.javalin", - "name": "javalin-parent", - "version": "3.13.3", - "type": "pom", - "extension": "pom" - }, - "name": "javalin-parent-3.13.3.pom", - "path": "io/javalin/javalin-parent/3.13.3", - "urls": [ - "https://jcenter.bintray.com/io/javalin/javalin-parent/3.13.3/javalin-parent-3.13.3.pom", - "https://repo.gradle.org/gradle/libs-releases/io/javalin/javalin-parent/3.13.3/javalin-parent-3.13.3.pom" - ], - "sha256": "e16daaf5fba57027e3829b7e9d11ab89e1365eaee4d0090b3b536812b136678c" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpclient", - "version": "4.5.5", - "type": "jar", - "extension": "jar" - }, - "name": "httpclient-4.5.5.jar", - "path": "org/apache/httpcomponents/httpclient/4.5.5", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.5/httpclient-4.5.5.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpclient/4.5.5/httpclient-4.5.5.jar" - ], - "sha256": "7e97724443ad2a25ad8c73183431d47cc7946271bcbbdfa91a8a17522a566573" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpclient", - "version": "4.5.5", - "type": "pom", - "extension": "pom" - }, - "name": "httpclient-4.5.5.pom", - "path": "org/apache/httpcomponents/httpclient/4.5.5", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.5/httpclient-4.5.5.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpclient/4.5.5/httpclient-4.5.5.pom" - ], - "sha256": "db3b0198e11f3aa5fa51310c915b818c134a8cbcb82fc81ddf95ba2313862626" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpclient", - "version": "4.5.9", - "type": "jar", - "extension": "jar" - }, - "name": "httpclient-4.5.9.jar", - "path": "org/apache/httpcomponents/httpclient/4.5.9", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.9/httpclient-4.5.9.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpclient/4.5.9/httpclient-4.5.9.jar" - ], - "sha256": "6c7e3bb423d8c5574f28157fe42b4c38d6a3477bfa2954cfe5f330b14ecad8a9" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpclient", - "version": "4.5.9", - "type": "pom", - "extension": "pom" - }, - "name": "httpclient-4.5.9.pom", - "path": "org/apache/httpcomponents/httpclient/4.5.9", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.9/httpclient-4.5.9.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpclient/4.5.9/httpclient-4.5.9.pom" - ], - "sha256": "a3a1c7e5f1c160808c8c60f888eb4884de82f244dd6816a65428471c064bc73e" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-client", - "version": "4.5.5", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-client-4.5.5.pom", - "path": "org/apache/httpcomponents/httpcomponents-client/4.5.5", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-client/4.5.5/httpcomponents-client-4.5.5.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcomponents-client/4.5.5/httpcomponents-client-4.5.5.pom" - ], - "sha256": "1445d012158f941731a6062c7eab740093ea2745b46b54de236b3f7787e99bf3" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-client", - "version": "4.5.9", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-client-4.5.9.pom", - "path": "org/apache/httpcomponents/httpcomponents-client/4.5.9", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-client/4.5.9/httpcomponents-client-4.5.9.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcomponents-client/4.5.9/httpcomponents-client-4.5.9.pom" - ], - "sha256": "b14d38c62b79dd1fa568f1f278d9910801d39f3d80b63663ead57789a2d37285" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-core", - "version": "4.4.9", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-core-4.4.9.pom", - "path": "org/apache/httpcomponents/httpcomponents-core/4.4.9", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-core/4.4.9/httpcomponents-core-4.4.9.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcomponents-core/4.4.9/httpcomponents-core-4.4.9.pom" - ], - "sha256": "32e66095a919456fc76a10c7865e70c9a14c62bbba847026420a055652366b18" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-core", - "version": "4.4.11", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-core-4.4.11.pom", - "path": "org/apache/httpcomponents/httpcomponents-core/4.4.11", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-core/4.4.11/httpcomponents-core-4.4.11.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcomponents-core/4.4.11/httpcomponents-core-4.4.11.pom" - ], - "sha256": "12360ba16d8025cc4abd6393a62a4e2e2eacc9006c8ec7e488c40852a5cded1c" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-parent", - "version": "9", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-parent-9.pom", - "path": "org/apache/httpcomponents/httpcomponents-parent/9", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-parent/9/httpcomponents-parent-9.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcomponents-parent/9/httpcomponents-parent-9.pom" - ], - "sha256": "2656c7e40bdbe6b6f958798f7d6918b50b544df0e23b52ce3731b9ccc20b5f8c" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-parent", - "version": "10", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-parent-10.pom", - "path": "org/apache/httpcomponents/httpcomponents-parent/10", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-parent/10/httpcomponents-parent-10.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcomponents-parent/10/httpcomponents-parent-10.pom" - ], - "sha256": "caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcore", - "version": "4.4.9", - "type": "jar", - "extension": "jar" - }, - "name": "httpcore-4.4.9.jar", - "path": "org/apache/httpcomponents/httpcore/4.4.9", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.9/httpcore-4.4.9.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcore/4.4.9/httpcore-4.4.9.jar" - ], - "sha256": "1b4a1c0b9b4222eda70108d3c6e2befd4a6be3d9f78ff53dd7a94966fdf51fc5" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcore", - "version": "4.4.9", - "type": "pom", - "extension": "pom" - }, - "name": "httpcore-4.4.9.pom", - "path": "org/apache/httpcomponents/httpcore/4.4.9", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.9/httpcore-4.4.9.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcore/4.4.9/httpcore-4.4.9.pom" - ], - "sha256": "6e94bd777beedeff9b5e770cf654b530325781034b2746c632b131ec74ad513c" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcore", - "version": "4.4.11", - "type": "jar", - "extension": "jar" - }, - "name": "httpcore-4.4.11.jar", - "path": "org/apache/httpcomponents/httpcore/4.4.11", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.11/httpcore-4.4.11.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcore/4.4.11/httpcore-4.4.11.jar" - ], - "sha256": "d799522d579aac06b170603f8f080f6e3248dadc01f9652cdd7ea7bc318c21ce" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcore", - "version": "4.4.11", - "type": "pom", - "extension": "pom" - }, - "name": "httpcore-4.4.11.pom", - "path": "org/apache/httpcomponents/httpcore/4.4.11", - "urls": [ - "https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.11/httpcore-4.4.11.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/httpcomponents/httpcore/4.4.11/httpcore-4.4.11.pom" - ], - "sha256": "d5611b46d8c9a873e316087dd6b684ddf69b768c80843ada8b22a23aebc62301" - }, - { - "id": { - "group": "org.apache.maven", - "name": "maven", - "version": "3.6.3", - "type": "pom", - "extension": "pom" - }, - "name": "maven-3.6.3.pom", - "path": "org/apache/maven/maven/3.6.3", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven/3.6.3/maven-3.6.3.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven/3.6.3/maven-3.6.3.pom" - ], - "sha256": "d2d86245ea66149bc14d2dd72bbb961f964dd658b809a0573252c06531eeec16" - }, - { - "id": { - "group": "org.apache.maven", - "name": "maven-parent", - "version": "33", - "type": "pom", - "extension": "pom" - }, - "name": "maven-parent-33.pom", - "path": "org/apache/maven/maven-parent/33", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-parent/33/maven-parent-33.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-parent/33/maven-parent-33.pom" - ], - "sha256": "3856e3fcd169502d5f12fe2452604ebf6c7c025f15656bfa558ea99ed29d73ea" - }, - { - "id": { - "group": "org.apache.maven", - "name": "maven-repository-metadata", - "version": "3.6.3", - "type": "jar", - "extension": "jar" - }, - "name": "maven-repository-metadata-3.6.3.jar", - "path": "org/apache/maven/maven-repository-metadata/3.6.3", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-repository-metadata/3.6.3/maven-repository-metadata-3.6.3.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-repository-metadata/3.6.3/maven-repository-metadata-3.6.3.jar" - ], - "sha256": "2e7f850b20664a151e6ca73dd3af34e639901435c2fe717717e3cbc7ddead3d4" - }, - { - "id": { - "group": "org.apache.maven", - "name": "maven-repository-metadata", - "version": "3.6.3", - "type": "pom", - "extension": "pom" - }, - "name": "maven-repository-metadata-3.6.3.pom", - "path": "org/apache/maven/maven-repository-metadata/3.6.3", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-repository-metadata/3.6.3/maven-repository-metadata-3.6.3.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-repository-metadata/3.6.3/maven-repository-metadata-3.6.3.pom" - ], - "sha256": "5398b22da433ace2c836f76773d8ff48fa53fa09e2e7a1eba65ff922b03c665e" - }, - { - "id": { - "group": "org.codehaus.plexus", - "name": "plexus", - "version": "5.1", - "type": "pom", - "extension": "pom" - }, - "name": "plexus-5.1.pom", - "path": "org/codehaus/plexus/plexus/5.1", - "urls": [ - "https://jcenter.bintray.com/org/codehaus/plexus/plexus/5.1/plexus-5.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/codehaus/plexus/plexus/5.1/plexus-5.1.pom" - ], - "sha256": "a343e44ff5796aed0ea60be11454c935ce20ab1c5f164acc8da574482dcbc7e9" - }, - { - "id": { - "group": "org.codehaus.plexus", - "name": "plexus-utils", - "version": "3.2.1", - "type": "jar", - "extension": "jar" - }, - "name": "plexus-utils-3.2.1.jar", - "path": "org/codehaus/plexus/plexus-utils/3.2.1", - "urls": [ - "https://jcenter.bintray.com/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.jar" - ], - "sha256": "8d07b497bb8deb167ee5329cae87ef2043833bf52e4f15a5a9379cec447a5b2b" - }, - { - "id": { - "group": "org.codehaus.plexus", - "name": "plexus-utils", - "version": "3.2.1", - "type": "pom", - "extension": "pom" - }, - "name": "plexus-utils-3.2.1.pom", - "path": "org/codehaus/plexus/plexus-utils/3.2.1", - "urls": [ - "https://jcenter.bintray.com/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.pom" - ], - "sha256": "7a5001ab88105b4f37c4fab3b62d977316290a13f8b14c6684f25f2a32efdef1" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-client", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-client-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/jetty-client/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-client/9.4.35.v20201120/jetty-client-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-client/9.4.35.v20201120/jetty-client-9.4.35.v20201120.jar" - ], - "sha256": "58a81574b9f5a6fd8d27c988a0119f7457a5d23b5b27ea645b07713650c3c4f6" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-client", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-client-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-client/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-client/9.4.35.v20201120/jetty-client-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-client/9.4.35.v20201120/jetty-client-9.4.35.v20201120.pom" - ], - "sha256": "83361998ab7434e1b5b83e3964804f3f7be75fcb7e5f02ffaba938cc4da9e588" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-http", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-http-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/jetty-http/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-http/9.4.35.v20201120/jetty-http-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-http/9.4.35.v20201120/jetty-http-9.4.35.v20201120.jar" - ], - "sha256": "bb6f473cf019399fe529b687982eb999018c6650841562197881e12ad6209253" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-http", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-http-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-http/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-http/9.4.35.v20201120/jetty-http-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-http/9.4.35.v20201120/jetty-http-9.4.35.v20201120.pom" - ], - "sha256": "074fa2b37af37ef98e0aaeabc16059b00727d1e52b4b80f578e44af88a5872d6" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-io", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-io-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/jetty-io/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-io/9.4.35.v20201120/jetty-io-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-io/9.4.35.v20201120/jetty-io-9.4.35.v20201120.jar" - ], - "sha256": "dae20d7206f66e0023d294d70a6dc38944935bc89953fe4ded36d4b4ca542d6d" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-io", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-io-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-io/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-io/9.4.35.v20201120/jetty-io-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-io/9.4.35.v20201120/jetty-io-9.4.35.v20201120.pom" - ], - "sha256": "18de8076356860e9bc0f833b61f80f239e24e9e2937bd99a310d05c289c4907b" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-project", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-project-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-project/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-project/9.4.35.v20201120/jetty-project-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-project/9.4.35.v20201120/jetty-project-9.4.35.v20201120.pom" - ], - "sha256": "8fdef76abb865368ac8408c39b4c8dff2271a8a7c964aaea3dfbfe25686a337a" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-security", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-security-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/jetty-security/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-security/9.4.35.v20201120/jetty-security-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-security/9.4.35.v20201120/jetty-security-9.4.35.v20201120.jar" - ], - "sha256": "67917021f89fee65edbc8a1d16c51b382a1989f94e528e1eb1e1156045f97d96" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-security", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-security-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-security/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-security/9.4.35.v20201120/jetty-security-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-security/9.4.35.v20201120/jetty-security-9.4.35.v20201120.pom" - ], - "sha256": "616ab88fc19edb7a90d3130288987d9302986c3782978c3d82addcb1bdc6101a" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-server", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-server-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/jetty-server/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-server/9.4.35.v20201120/jetty-server-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-server/9.4.35.v20201120/jetty-server-9.4.35.v20201120.jar" - ], - "sha256": "93c411e12831c51af5f0519662eb07962696ca3d32ef13a90777b6c5bd81930d" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-server", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-server-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-server/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-server/9.4.35.v20201120/jetty-server-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-server/9.4.35.v20201120/jetty-server-9.4.35.v20201120.pom" - ], - "sha256": "d3c4a2ec84f4eee16657d4458e639cdca69eb6739318003f47c490f577c2f240" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-servlet", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-servlet-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/jetty-servlet/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-servlet/9.4.35.v20201120/jetty-servlet-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-servlet/9.4.35.v20201120/jetty-servlet-9.4.35.v20201120.jar" - ], - "sha256": "63e0a9d2284430cec3062fc1ff4a811b59a4417baf582bc8b1de3dd4aecb0ca7" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-servlet", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-servlet-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-servlet/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-servlet/9.4.35.v20201120/jetty-servlet-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-servlet/9.4.35.v20201120/jetty-servlet-9.4.35.v20201120.pom" - ], - "sha256": "f04e8662d0d23585b1747e557d53eb525149b3d65380831c56b1b47a1354b697" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-util", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-util-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/jetty-util/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-util/9.4.35.v20201120/jetty-util-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-util/9.4.35.v20201120/jetty-util-9.4.35.v20201120.jar" - ], - "sha256": "7db4077559abc8939b414a352d6a8a5c1942aab898a5b0678a63422640ae5dbd" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-util", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-util-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-util/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-util/9.4.35.v20201120/jetty-util-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-util/9.4.35.v20201120/jetty-util-9.4.35.v20201120.pom" - ], - "sha256": "b5f01d242328d24dabc5e8d00bfeddecf6b876506bd4847a2db044f6401c6389" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-util-ajax", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-util-ajax-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/jetty-util-ajax/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-util-ajax/9.4.35.v20201120/jetty-util-ajax-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-util-ajax/9.4.35.v20201120/jetty-util-ajax-9.4.35.v20201120.jar" - ], - "sha256": "bdfa8003420b7d06aa076414ba8916ce7058b6e629da334fd60f714dc918c343" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-util-ajax", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-util-ajax-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-util-ajax/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-util-ajax/9.4.35.v20201120/jetty-util-ajax-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-util-ajax/9.4.35.v20201120/jetty-util-ajax-9.4.35.v20201120.pom" - ], - "sha256": "00d04fa0232adbd425af2dc7bfcec9f7222c10fcd66980fa4b21979731125158" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-webapp", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-webapp-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/jetty-webapp/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-webapp/9.4.35.v20201120/jetty-webapp-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-webapp/9.4.35.v20201120/jetty-webapp-9.4.35.v20201120.jar" - ], - "sha256": "e4f66c777a30b500aec5b1e82893752d8f3cb9e45ee940f34d3d714c776b4a1c" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-webapp", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-webapp-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-webapp/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-webapp/9.4.35.v20201120/jetty-webapp-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-webapp/9.4.35.v20201120/jetty-webapp-9.4.35.v20201120.pom" - ], - "sha256": "061d88e0cffbcf29d513e864dcf79c8a10270a85fd623037ae42df2daa74393b" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-xml", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "jetty-xml-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/jetty-xml/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-xml/9.4.35.v20201120/jetty-xml-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-xml/9.4.35.v20201120/jetty-xml-9.4.35.v20201120.jar" - ], - "sha256": "41ff00c49bc20f25f75dbb2db435605d9c19ee522cb8a3c938bff3b4b16f8400" - }, - { - "id": { - "group": "org.eclipse.jetty", - "name": "jetty-xml", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "jetty-xml-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/jetty-xml/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/jetty-xml/9.4.35.v20201120/jetty-xml-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/jetty-xml/9.4.35.v20201120/jetty-xml-9.4.35.v20201120.pom" - ], - "sha256": "5dad74f442299f342335333f51cf39f7a28d6a001b5bbc2ab43288a0d5e1266d" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-api", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "websocket-api-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/websocket/websocket-api/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-api/9.4.35.v20201120/websocket-api-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-api/9.4.35.v20201120/websocket-api-9.4.35.v20201120.jar" - ], - "sha256": "e7b8a8ef30eed951536b991fc2a2b539e890b6be4ea98e918461051cfb738809" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-api", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "websocket-api-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/websocket/websocket-api/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-api/9.4.35.v20201120/websocket-api-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-api/9.4.35.v20201120/websocket-api-9.4.35.v20201120.pom" - ], - "sha256": "bce6da7a9fac6189de3a081a5716606de261f1dacc0a08c127cd7b9481ee3a62" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-client", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "websocket-client-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/websocket/websocket-client/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-client/9.4.35.v20201120/websocket-client-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-client/9.4.35.v20201120/websocket-client-9.4.35.v20201120.jar" - ], - "sha256": "5aa09ad4b17952bef8fa307dd663bb0d131b1a1248daa6cd130be8dcb07f148a" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-client", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "websocket-client-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/websocket/websocket-client/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-client/9.4.35.v20201120/websocket-client-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-client/9.4.35.v20201120/websocket-client-9.4.35.v20201120.pom" - ], - "sha256": "20ed5e88577040824c4447ec2d0e46687e940b8f60b026e7878c48ad79a735c4" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-common", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "websocket-common-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/websocket/websocket-common/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-common/9.4.35.v20201120/websocket-common-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-common/9.4.35.v20201120/websocket-common-9.4.35.v20201120.jar" - ], - "sha256": "fb1b0d6f472f614053a600367c1f35d806b38ce73a985e26bf3ccae9cd89786e" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-common", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "websocket-common-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/websocket/websocket-common/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-common/9.4.35.v20201120/websocket-common-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-common/9.4.35.v20201120/websocket-common-9.4.35.v20201120.pom" - ], - "sha256": "3973b087d1993484d34c55c9fd15da355d153e99b4ecf4f2652490da40544ab8" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-parent", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "websocket-parent-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/websocket/websocket-parent/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-parent/9.4.35.v20201120/websocket-parent-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-parent/9.4.35.v20201120/websocket-parent-9.4.35.v20201120.pom" - ], - "sha256": "342c1e3a9f0e8fd276bc7bdadf56b4ae81fcb202fd04c7c8542628afdd0cc500" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-server", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "websocket-server-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/websocket/websocket-server/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-server/9.4.35.v20201120/websocket-server-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-server/9.4.35.v20201120/websocket-server-9.4.35.v20201120.jar" - ], - "sha256": "6130a77b1647a76deb1a091038c620d7ea36dff72c6230dbfff2f0a23312266d" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-server", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "websocket-server-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/websocket/websocket-server/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-server/9.4.35.v20201120/websocket-server-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-server/9.4.35.v20201120/websocket-server-9.4.35.v20201120.pom" - ], - "sha256": "a954cf37010c3c77b16e8c809af2638c44d370b3c373d712ff10c56ccdd7c101" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-servlet", - "version": "9.4.35.v20201120", - "type": "jar", - "extension": "jar" - }, - "name": "websocket-servlet-9.4.35.v20201120.jar", - "path": "org/eclipse/jetty/websocket/websocket-servlet/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-servlet/9.4.35.v20201120/websocket-servlet-9.4.35.v20201120.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-servlet/9.4.35.v20201120/websocket-servlet-9.4.35.v20201120.jar" - ], - "sha256": "4d6fd0249b2fdf9ef9f6c53d6201d5807a57dc4e500167cd609c6c1c8ea9b36d" - }, - { - "id": { - "group": "org.eclipse.jetty.websocket", - "name": "websocket-servlet", - "version": "9.4.35.v20201120", - "type": "pom", - "extension": "pom" - }, - "name": "websocket-servlet-9.4.35.v20201120.pom", - "path": "org/eclipse/jetty/websocket/websocket-servlet/9.4.35.v20201120", - "urls": [ - "https://jcenter.bintray.com/org/eclipse/jetty/websocket/websocket-servlet/9.4.35.v20201120/websocket-servlet-9.4.35.v20201120.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/jetty/websocket/websocket-servlet/9.4.35.v20201120/websocket-servlet-9.4.35.v20201120.pom" - ], - "sha256": "c40438c39e1aa9ece25a2b75827f7f9620a585e3f540d946c86a1e12ce9cd6c0" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-gradle-plugin-api", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-gradle-plugin-api-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.4.20/kotlin-gradle-plugin-api-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.4.20/kotlin-gradle-plugin-api-1.4.20.jar" - ], - "sha256": "f8012a9590f7ee3d2dac3e8673fdd41e7d55c4fcde95e556c9dc442ec0f1def8" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-gradle-plugin-api", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-gradle-plugin-api-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.4.20/kotlin-gradle-plugin-api-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.4.20/kotlin-gradle-plugin-api-1.4.20.pom" - ], - "sha256": "f1d0d87457160e8ca1961311d5c6504ce14e498908f9d8387c9d244dd0e78fb8" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-gradle-plugin-model", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-gradle-plugin-model-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.4.20/kotlin-gradle-plugin-model-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.4.20/kotlin-gradle-plugin-model-1.4.20.jar" - ], - "sha256": "67683c917d8c7cabcff293f9c42a2943e86acaeafa0fb5d30cb6b89eecaf55ce" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-gradle-plugin-model", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-gradle-plugin-model-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.4.20/kotlin-gradle-plugin-model-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.4.20/kotlin-gradle-plugin-model-1.4.20.pom" - ], - "sha256": "aebcf5e1d450da8d38e55ab968da381a7214012e868794823a39ce6d66dd49f1" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-sam-with-receiver", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-sam-with-receiver-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.4.20/kotlin-sam-with-receiver-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.4.20/kotlin-sam-with-receiver-1.4.20.jar" - ], - "sha256": "e9fc45657c0cd0021fbcd2db15c758f8af61b961b4f3b2ab3797d2cf104ea0a4" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-sam-with-receiver", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-sam-with-receiver-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.4.20/kotlin-sam-with-receiver-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.4.20/kotlin-sam-with-receiver-1.4.20.pom" - ], - "sha256": "0130e48848936f4544d5ddfb9ea090a2e515cb03e2ba2974c49445a98c63b012" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-test", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-test-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-test/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test/1.4.20/kotlin-test-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test/1.4.20/kotlin-test-1.4.20.jar" - ], - "sha256": "c8fe6d549620b0caf63196e07268e41b81f1fb571b0a554d6c34283c8e506abe" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-test", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-test-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-test/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test/1.4.20/kotlin-test-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test/1.4.20/kotlin-test-1.4.20.pom" - ], - "sha256": "7543ce55778ec99d5906156a1b701f1f78a44f16ca45b26b1a861ebdd4b35386" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-test-annotations-common", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-test-annotations-common-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-test-annotations-common/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-annotations-common/1.4.20/kotlin-test-annotations-common-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-annotations-common/1.4.20/kotlin-test-annotations-common-1.4.20.jar" - ], - "sha256": "86fd9483009ff374e9d492501811cb40be9c71f2fd2ea52d8000f6e2bcee2161" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-test-annotations-common", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-test-annotations-common-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-test-annotations-common/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-annotations-common/1.4.20/kotlin-test-annotations-common-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-annotations-common/1.4.20/kotlin-test-annotations-common-1.4.20.pom" - ], - "sha256": "289dbba098ce96ea3cba6bc9f2e8c7969e01280572292a5aca7e78b59bf26c63" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-test-common", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-test-common-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-test-common/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-common/1.4.20/kotlin-test-common-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-common/1.4.20/kotlin-test-common-1.4.20.jar" - ], - "sha256": "ff56a847678a324d1d548ae3827445d9ccacc2d6584be349f03a2f6fb1e851f7" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-test-common", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-test-common-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-test-common/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-common/1.4.20/kotlin-test-common-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-common/1.4.20/kotlin-test-common-1.4.20.pom" - ], - "sha256": "ada24354ca1f776adb186ad06fd9be077032280ac0d7a3a9550bcd6c5f977ed1" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-test-junit5", - "version": "1.4.20", - "type": "jar", - "extension": "jar" - }, - "name": "kotlin-test-junit5-1.4.20.jar", - "path": "org/jetbrains/kotlin/kotlin-test-junit5/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-junit5/1.4.20/kotlin-test-junit5-1.4.20.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-junit5/1.4.20/kotlin-test-junit5-1.4.20.jar" - ], - "sha256": "17f9eff1308f4f6afc6074d50634341ef885c6d998382c70febedaf8f19a16e3" - }, - { - "id": { - "group": "org.jetbrains.kotlin", - "name": "kotlin-test-junit5", - "version": "1.4.20", - "type": "pom", - "extension": "pom" - }, - "name": "kotlin-test-junit5-1.4.20.pom", - "path": "org/jetbrains/kotlin/kotlin-test-junit5/1.4.20", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-junit5/1.4.20/kotlin-test-junit5-1.4.20.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-junit5/1.4.20/kotlin-test-junit5-1.4.20.pom" - ], - "sha256": "bab42fa500ddba29c4826c5795e802b27cd20dba4957ea2643fdadb6022c2524" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-api", - "version": "1.7.30", - "type": "jar", - "extension": "jar" - }, - "name": "slf4j-api-1.7.30.jar", - "path": "org/slf4j/slf4j-api/1.7.30", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar" - ], - "sha256": "cdba07964d1bb40a0761485c6b1e8c2f8fd9eb1d19c53928ac0d7f9510105c57" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-api", - "version": "1.7.30", - "type": "pom", - "extension": "pom" - }, - "name": "slf4j-api-1.7.30.pom", - "path": "org/slf4j/slf4j-api/1.7.30", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.pom", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.pom" - ], - "sha256": "7e0747751e9b67e19dcb5206f04ea22cc03d250c422426402eadd03513f2c314" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-parent", - "version": "1.7.30", - "type": "pom", - "extension": "pom" - }, - "name": "slf4j-parent-1.7.30.pom", - "path": "org/slf4j/slf4j-parent/1.7.30", - "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-parent/1.7.30/slf4j-parent-1.7.30.pom", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-parent/1.7.30/slf4j-parent-1.7.30.pom" - ], - "sha256": "11647956e48a0c5bfb3ac33f6da7e83f341002b6857efd335a505b687be34b75" - } - ] + "13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + } + }, + "org.junit.jupiter:junit-jupiter-api": { + "5.8.2": { + "junit-jupiter-api-5.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar" + ], + "hash": "sha256-GAjuh+D3GM1uJfO3WvwXlWrIo+3EjH6bq58Z+aeeOAE=" + }, + "junit-jupiter-api-5.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.module" + ], + "hash": "sha256-fpr03/9iZ6zd0VfZ4Rug1dyRszL6dLxMZZOeRReht3A=" + }, + "junit-jupiter-api-5.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.pom" + ], + "hash": "sha256-yb3jYieVswp3NTHoXFgy+NyKp37N0xPu4jXJg8v9Anc=" + } + } + }, + "org.junit.platform:junit-platform-commons": { + "1.8.2": { + "junit-platform-commons-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar" + ], + "hash": "sha256-0uAV/KcTDnmvL0YI3FRBXksQtZLXczPey0saJ0wYUFA=" + }, + "junit-platform-commons-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.module" + ], + "hash": "sha256-NChH0wRv6kNVlWkttPBdXwOeDh0eIE9NV1WQJVcIJiY=" + }, + "junit-platform-commons-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.pom" + ], + "hash": "sha256-zoUuNMahhKpsgO6N8EcXE6dAgTQTTwjjwcPdh8a1mrc=" + } + } + }, + "org.junit.platform:junit-platform-engine": { + "1.8.2": { + "junit-platform-engine-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar" + ], + "hash": "sha256-C30AD4w+jl99a4GWSZNue5k4MU6HyPmDgFIY6ldWflk=" + }, + "junit-platform-engine-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.module" + ], + "hash": "sha256-66d7Nu/fdaZ/RkODM4JfnkSPVQ1SHnJJ2VA1hYDuY2s=" + }, + "junit-platform-engine-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.pom" + ], + "hash": "sha256-AWhkMmYGDtko71qBgjAD7PrnmpqMC7/Xb0IBxsnXccU=" + } + } + }, + "org.junit.platform:junit-platform-launcher": { + "1.8.2": { + "junit-platform-launcher-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar" + ], + "hash": "sha256-giFWQJ/YPmguTFGZs0YAVCmbU4oFjCxtD1ybalvbdZQ=" + }, + "junit-platform-launcher-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.module" + ], + "hash": "sha256-4XQA7HvnYIwfiI1yG0MAHpc2wVDUD5jIoLzalWPYyus=" + }, + "junit-platform-launcher-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.pom" + ], + "hash": "sha256-tfancaautzyJpud/Vtcp9LqOta/dDxD0TbRNaq25UJU=" + } + } + }, + "org.junit.platform:junit-platform-suite-api": { + "1.8.2": { + "junit-platform-suite-api-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.jar" + ], + "hash": "sha256-lO80OwW4dbsuTvlKfMYuYQ4bnNeCR+Ky7EPtYYoe0Kc=" + }, + "junit-platform-suite-api-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.module" + ], + "hash": "sha256-kwagU4n8QNetnQsSigFEMOXRyldKGErujXhns+iRC3o=" + }, + "junit-platform-suite-api-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.pom" + ], + "hash": "sha256-QB/ZdNa5RmRSS+y3z4B8TUfXxXSy+vGxMeukiUn+mJg=" + } + } + }, + "org.junit:junit-bom": { + "5.8.2": { + "junit-bom-5.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.module" + ], + "hash": "sha256-QM+tmT+nDs3yr3TQxW2hSE7iIJZL6Pkyz+YyvponM/o=" + }, + "junit-bom-5.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom" + ], + "hash": "sha256-g2Bpyp6O48VuSDdiItopEmPxN70/0W2E/dR+/MPyhuI=" + } + } + }, + "org.opentest4j:opentest4j": { + "1.3.0": { + "opentest4j-1.3.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar" + ], + "hash": "sha256-SOLfY2yrZWPO1k3N/4q7I1VifLI27wvzdZhoLd90Lxs=" + }, + "opentest4j-1.3.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.module" + ], + "hash": "sha256-SL8dbItdyU90ZSvReQD2VN63FDUCSM9ej8onuQkMjg0=" + }, + "opentest4j-1.3.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.pom" + ], + "hash": "sha256-m/fP/EEPPoNywlIleN+cpW2dQ72TfjCUhwbCMqlDs1U=" + } + }, + "1.2.0": { + "opentest4j-1.2.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" + ], + "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" + }, + "opentest4j-1.2.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" + ], + "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" + } + } + }, + "org.ow2.asm:asm": { + "9.4": { + "asm-9.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.jar" + ], + "hash": "sha256-OdDis9xFr2Wgmwl5RXUKlKEm4FLhJPk0aEQ6HQ4V84E=" + }, + "asm-9.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.pom" + ], + "hash": "sha256-SDdR5I+y0fQ8Ya06sA/6Rm7cAzPY/C/bWibpXTKYI5Q=" + } + } + }, + "org.ow2.asm:asm-commons": { + "9.4": { + "asm-commons-9.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.jar" + ], + "hash": "sha256-DBKKnsPzPJiVknL20WzxQke1CPWJUVdLzb0rVtYyY2Q=" + }, + "asm-commons-9.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.pom" + ], + "hash": "sha256-tCyiq8+IEXdqXdwCkPIQbX8xP4LHiw3czVzOTGOjUXk=" + } + } + }, + "org.ow2.asm:asm-tree": { + "9.4": { + "asm-tree-9.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.jar" + ], + "hash": "sha256-xC1HnPJFZqIesgr37q7vToa9tKiGMGz3L0g7ZedbKs8=" + }, + "asm-tree-9.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.pom" + ], + "hash": "sha256-x+nvk73YqzYwMs5TgvzGTQAtbFicF1IzI2zSmOUaPBY=" + } + } + }, + "org.slf4j:slf4j-api": { + "2.0.9": { + "slf4j-api-2.0.9.jar": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar", + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar" + ], + "hash": "sha256-CBiTDcjX3rtAMgRhFpHaWOSdQsULb/z9zgLa23w8K2w=" + }, + "slf4j-api-2.0.9.pom": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.pom", + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.pom" + ], + "hash": "sha256-nDplT50KoaNLMXjr5TqJx2eS4dgfwelznL6bFhBSM4U=" + } + } + }, + "org.slf4j:slf4j-simple": { + "2.0.9": { + "slf4j-simple-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.0.9/slf4j-simple-2.0.9.jar" + ], + "hash": "sha256-cfnG3m267C0QyqMD+vCMXnSb5TskKJbGTJa3xrttYtw=" + }, + "slf4j-simple-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.0.9/slf4j-simple-2.0.9.pom" + ], + "hash": "sha256-/SkP5smizRkdrWl7hUhysL9/1L6/EUTtQi4rVnhgnqc=" + } + } + }, + "org.vafer:jdependency": { + "2.8.0": { + "jdependency-2.8.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.jar" + ], + "hash": "sha256-v9LMfhv8eKqDtEwKVL8s3jikOC7CRyivaD2Y3GvngZI=" + }, + "jdependency-2.8.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.pom" + ], + "hash": "sha256-EBhn8/npJlei74mjELYE1D0JDJuQqj4LBS3NFqO78y0=" + } } } -} +} \ No newline at end of file diff --git a/gradle-env.nix b/gradle-env.nix index b512f90..23e5185 100644 --- a/gradle-env.nix +++ b/gradle-env.nix @@ -25,6 +25,8 @@ , fetchs3 , fetchurl , gradleGen +, runCommandLocal +, symlinkJoin , writeText , writeTextDir }: @@ -32,7 +34,7 @@ { # Path to the environment spec generated by gradle2nix (e.g. gradle-env.json). envSpec -, pname ? null +, pname ? "project" , version ? null , enableParallelBuilding ? true # Arguments to Gradle used to build the project in buildPhase. @@ -52,9 +54,10 @@ # `{ urls, sha256 }` and fetch into the Nix store. For example: # # { -# s3 = { urls, sha256 }: fetchs3 { +# s3 = { name, urls, hash }: fetchs3 { # s3url = builtins.head urls; -# inherit sha256; +# # TODO This doesn't work without patching fetchs3 to accept SRI hashes +# inherit name hash; # region = "us-west-2"; # credentials = { # access_key_id = "foo"; @@ -67,7 +70,7 @@ let inherit (builtins) - attrValues concatStringsSep filter fromJSON getAttr head match + attrValues concatStringsSep elemAt filter fromJSON getAttr head match replaceStrings sort; inherit (lib) @@ -75,162 +78,185 @@ let mapAttrsToList optionalString readFile removeSuffix unique versionAtLeast versionOlder; + inherit (lib.strings) sanitizeDerivationName; + + toCoordinates = id: + let + coords = builtins.split ":" id; + in { + group = elemAt coords 0; + module = elemAt coords 2; + }; + fetchers' = { http = fetchurl; https = fetchurl; - s3 = { urls, sha256 }: fetchs3 { - s3url = head urls; - inherit sha256; - }; } // fetchers; # Fetch urls using the scheme for the first entry only; there isn't a # straightforward way to tell Nix to try multiple fetchers in turn # and short-circuit on the first successful fetch. - fetch = { urls, sha256 }: + fetch = _: { urls, hash }: let first = head urls; scheme = head (builtins.match "([a-z0-9+.-]+)://.*" first); fetch' = getAttr scheme fetchers'; urls' = filter (hasPrefix scheme) urls; in - fetch' { urls = urls'; inherit sha256; }; + fetch' { urls = urls'; inherit hash; }; - mkDep = { name, path, urls, sha256, ... }: stdenv.mkDerivation { - inherit name; + mkDep = id: version: artifacts: + let + coords = toCoordinates id; + modulePath = "${replaceStrings ["."] ["/"] coords.group}/${coords.module}/${version}"; + in + stdenv.mkDerivation { + pname = "${coords.group}-${coords.module}"; + version = version; - src = fetch { - inherit urls sha256; - }; + srcs = mapAttrsToList fetch artifacts; - phases = "installPhase"; + dontPatch = true; + dontConfigure = true; + dontBuild = true; + dontFixup = true; + dontInstall = true; - installPhase = '' - mkdir -p $out/${path} - ln -s $src $out/${path}/${name} - ''; - }; + preUnpack = '' + mkdir -p "$out/${modulePath}" + ''; - mkModuleMetadata = deps: - let - ids = filter - (id: id.type == "pom") - (map (dep: dep.id) deps); - - modules = groupBy' - (meta: id: - let - isNewer = versionOlder meta.latest id.version; - isNewerRelease = - !(hasSuffix "-SNAPSHOT" id.version) && - versionOlder meta.release id.version; - in { - groupId = id.group; - artifactId = id.name; - latest = if isNewer then id.version else meta.latest; - release = if isNewerRelease then id.version else meta.release; - versions = meta.versions ++ [id.version]; - } - ) - { - latest = ""; - release = ""; - versions = []; - } - (id: "${replaceStrings ["."] ["/"] id.group}/${id.name}/maven-metadata.xml") - ids; + unpackCmd = '' + cp "$curSrc" "$out/${modulePath}/$(stripHash "$curSrc")" + ''; - in - attrValues (mapAttrs (path: meta: - let - versions' = sort versionOlder (unique meta.versions); - in - with meta; writeTextDir path '' - - - ${groupId} - ${artifactId} - - ${optionalString (latest != "") "${latest}"} - ${optionalString (release != "") "${release}"} - - ${concatMapStringsSep "\n " (v: "${v}") versions'} - - - - '' - ) modules); + sourceRoot = "."; - mkSnapshotMetadata = deps: - let - snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps; - - modules = groupBy' - (meta: dep: - let - id = dep.id; - isNewer = dep.build > meta.buildNumber; - # Timestamp values can be bogus, e.g. jitpack.io - updated = if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null - then replaceStrings ["."] [""] dep.timestamp - else ""; - in { - groupId = id.group; - artifactId = id.name; - version = id.version; - timestamp = if isNewer then dep.timestamp else meta.timestamp; - buildNumber = if isNewer then dep.build else meta.buildNumber; - lastUpdated = if isNewer then updated else meta.lastUpdated; - versions = meta.versions or [] ++ [{ - classifier = id.classifier or ""; - extension = id.extension; - value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}"; - updated = updated; - }]; - } - ) - { - timestamp = ""; - buildNumber = -1; - lastUpdated = ""; - } - (dep: "${replaceStrings ["."] ["/"] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml") - snapshotDeps; - - mkSnapshotVersion = version: '' - - ${optionalString (version.classifier != "") "${version.classifier}"} - ${version.extension} - ${version.value} - ${optionalString (version.updated != "") "${version.updated}"} - - ''; + preferLocalBuild = true; + allowSubstitutes = false; + }; - in - attrValues (mapAttrs (path: meta: - with meta; writeTextDir path '' - - - ${groupId} - ${artifactId} - ${version} - - - ${optionalString (timestamp != "") "${timestamp}"} - ${optionalString (buildNumber != -1) "${toString buildNumber}"} - - ${optionalString (lastUpdated != "") "${lastUpdated}"} - - ${concatMapStringsSep "\n " mkSnapshotVersion versions} - - - - '' - ) modules); - - mkRepo = project: type: deps: buildEnv { - name = "${project}-gradle-${type}-env"; - paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps; + mkModule = id: versions: + mapAttrsToList (version: artifacts: mkDep id version artifacts) versions; + + mkModuleMetadata = id: versions: + let + + modules = groupBy' + (meta: id: + let + isNewer = versionOlder meta.latest id.version; + isNewerRelease = + !(hasSuffix "-SNAPSHOT" id.version) && + versionOlder meta.release id.version; + in { + groupId = id.group; + artifactId = id.name; + latest = if isNewer then id.version else meta.latest; + release = if isNewerRelease then id.version else meta.release; + versions = meta.versions ++ [id.version]; + } + ) + { + latest = ""; + release = ""; + versions = []; + } + (id: "${replaceStrings ["."] ["/"] id.group}/${id.name}/maven-metadata.xml") + ids; + + in + attrValues (mapAttrs (path: meta: + let + versions' = sort versionOlder (unique meta.versions); + in + with meta; writeTextDir path '' + + + ${groupId} + ${artifactId} + + ${optionalString (latest != "") "${latest}"} + ${optionalString (release != "") "${release}"} + + ${concatMapStringsSep "\n " (v: "${v}") versions'} + + + + '' + ) modules); + + # mkSnapshotMetadata = deps: + # let + # snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps; + + # modules = groupBy' + # (meta: dep: + # let + # id = dep.id; + # isNewer = dep.build > meta.buildNumber; + # # Timestamp values can be bogus, e.g. jitpack.io + # updated = if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null + # then replaceStrings ["."] [""] dep.timestamp + # else ""; + # in { + # groupId = id.group; + # artifactId = id.name; + # version = id.version; + # timestamp = if isNewer then dep.timestamp else meta.timestamp; + # buildNumber = if isNewer then dep.build else meta.buildNumber; + # lastUpdated = if isNewer then updated else meta.lastUpdated; + # versions = meta.versions or [] ++ [{ + # classifier = id.classifier or ""; + # extension = id.extension; + # value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}"; + # updated = updated; + # }]; + # } + # ) + # { + # timestamp = ""; + # buildNumber = -1; + # lastUpdated = ""; + # } + # (dep: "${replaceStrings ["."] ["/"] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml") + # snapshotDeps; + + # mkSnapshotVersion = version: '' + # + # ${optionalString (version.classifier != "") "${version.classifier}"} + # ${version.extension} + # ${version.value} + # ${optionalString (version.updated != "") "${version.updated}"} + # + # ''; + + # in + # attrValues (mapAttrs (path: meta: + # with meta; writeTextDir path '' + # + # + # ${groupId} + # ${artifactId} + # ${version} + # + # + # ${optionalString (timestamp != "") "${timestamp}"} + # ${optionalString (buildNumber != -1) "${toString buildNumber}"} + # + # ${optionalString (lastUpdated != "") "${lastUpdated}"} + # + # ${concatMapStringsSep "\n " mkSnapshotVersion versions} + # + # + # + # '' + # ) modules); + + mkRepo = name: deps: symlinkJoin { + name = "${name}-gradle-env"; + # paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps; + paths = mapAttrsToList mkModule deps; }; mkInitScript = projectSpec: gradle: @@ -264,12 +290,12 @@ let static def offlineRepo(RepositoryHandler repositories, String env, String path) { repositories.clear() repositories.maven { - name "Nix''${env.capitalize()}MavenOffline" + name "Nix''${env.capitalize()}Offline" url path metadataSources { it.gradleMetadata() it.mavenPom() - it.artifact() + it. } } repositories.ivy { @@ -279,7 +305,6 @@ let metadataSources { it.gradleMetadata() it.ivyDescriptor() - it.artifact() } } } @@ -371,29 +396,31 @@ let buildRootProject = buildProject projectEnv gradleFlags; -in stdenv.mkDerivation (args // { +# in stdenv.mkDerivation (args // { - inherit pname version; +# inherit pname version; - nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ projectEnv.gradle ]; +# nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ projectEnv.gradle ]; - buildPhase = args.buildPhase or '' - runHook preBuild +# buildPhase = args.buildPhase or '' +# runHook preBuild - ( - set -eux +# ( +# set -eux - # Work around https://github.com/gradle/gradle/issues/1055 - TMPHOME="$(mktemp -d)" - mkdir -p "$TMPHOME/init.d" - export GRADLE_USER_HOME="$TMPHOME" +# # Work around https://github.com/gradle/gradle/issues/1055 +# TMPHOME="$(mktemp -d)" +# mkdir -p "$TMPHOME/init.d" +# export GRADLE_USER_HOME="$TMPHOME" - ${buildIncludedProjects} - ${buildRootProject} - ) +# ${buildIncludedProjects} +# ${buildRootProject} +# ) - runHook postBuild - ''; +# runHook postBuild +# ''; + +# dontStrip = true; +# }) - dontStrip = true; -}) +in mkRepo pname (fromJSON (readFile envSpec)) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a11eef3..c95b0a0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] -gradle = "8.3" -kotlin = "1.9.20-Beta2" +gradle = "8.5" +kotlin = "1.9.21" [libraries] clikt = "com.github.ajalt:clikt:+" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 943f0cbfa754578e88a3dae77fce6e3dea56edbf..7f93135c49b765f8051ef9d0a6055ff8e46073d8 100644 GIT binary patch delta 41154 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%0DEqyP8OADCy^l*0 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 03bc515..e6aba25 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 65dcd68..0adc8e1 100755 --- a/gradlew +++ b/gradlew @@ -83,10 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,6 +198,10 @@ if "$cygwin" || "$msys" ; then done fi + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt b/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt deleted file mode 100644 index d57205f..0000000 --- a/model/src/main/kotlin/org/nixos/gradle2nix/DependencyCoordinates.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.nixos.gradle2nix - -import kotlinx.serialization.Serializable - -@Serializable -data class DependencyCoordinates(val group: String, val module: String, val version: String) { - override fun toString(): String = "$group:$module:$version" -} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt new file mode 100644 index 0000000..72de287 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt @@ -0,0 +1,35 @@ +package org.nixos.gradle2nix.model + +import kotlinx.serialization.Serializable + +@Serializable +data class DependencyCoordinates( + val group: String, + val module: String, + val version: String, + val timestamp: String? = null +) { + override fun toString(): String = if (timestamp != null) { + "$group:$module:$version:$timestamp" + } else { + "$group:$module:$version" + } + + val isSnapshot: Boolean get() = timestamp != null + val moduleVersion: String get() = version + val artifactVersion: String get() = + timestamp?.let { version.replace("SNAPSHOT", it) } ?: version + + companion object { + fun parse(id: String): DependencyCoordinates { + val parts = id.split(":") + return when (parts.size) { + 3 -> DependencyCoordinates(parts[0], parts[1], parts[2]) + 4 -> DependencyCoordinates(parts[0], parts[1], parts[2], parts[3]) + else -> throw IllegalStateException( + "couldn't parse dependency coordinates: '$id'" + ) + } + } + } +} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/DependencySource.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySource.kt similarity index 54% rename from model/src/main/kotlin/org/nixos/gradle2nix/DependencySource.kt rename to model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySource.kt index 18b2767..5ec991e 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/DependencySource.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySource.kt @@ -1,5 +1,6 @@ -package org.nixos.gradle2nix.dependencygraph.model +package org.nixos.gradle2nix.model +import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable /** @@ -10,4 +11,16 @@ import kotlinx.serialization.Serializable * We attempt to map this to an actual source file location when building a dependency report. */ @Serializable -data class DependencySource(val id: String, val path: String) +data class DependencySource( + val targetType: ConfigurationTarget, + val targetPath: String, + val buildPath: String, +) + +@Serializable +enum class ConfigurationTarget { + @SerialName("gradle") GRADLE, + @SerialName("settings") SETTINGS, + @SerialName("buildscript") BUILDSCRIPT, + @SerialName("project") PROJECT, +} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/PluginParameters.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt similarity index 89% rename from model/src/main/kotlin/org/nixos/gradle2nix/PluginParameters.kt rename to model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt index f98f083..94fea89 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/PluginParameters.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt @@ -1,4 +1,4 @@ -package org.nixos.gradle2nix +package org.nixos.gradle2nix.model const val PARAM_INCLUDE_PROJECTS = "NIX_INCLUDE_PROJECTS" const val PARAM_INCLUDE_CONFIGURATIONS = "NIX_INCLUDE_CONFIGURATIONS" diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/Repository.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt similarity index 88% rename from model/src/main/kotlin/org/nixos/gradle2nix/Repository.kt rename to model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt index 69659d3..da622cc 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/Repository.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt @@ -1,4 +1,4 @@ -package org.nixos.gradle2nix.dependencygraph.model +package org.nixos.gradle2nix.model import kotlinx.serialization.Serializable diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt new file mode 100644 index 0000000..d023082 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt @@ -0,0 +1,16 @@ +package org.nixos.gradle2nix.model + +import kotlinx.serialization.Serializable + +@Serializable +data class ResolvedArtifact( + val type: Type?, + val file: String, +) { + enum class Type { + SOURCES, + JAVADOC, + IVY_DESCRIPTOR, + MAVEN_POM, + } +} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedConfiguration.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt similarity index 91% rename from model/src/main/kotlin/org/nixos/gradle2nix/ResolvedConfiguration.kt rename to model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt index 3ff51b5..829f049 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedConfiguration.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt @@ -1,4 +1,4 @@ -package org.nixos.gradle2nix.dependencygraph.model +package org.nixos.gradle2nix.model import kotlinx.serialization.Serializable diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt similarity index 64% rename from model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt rename to model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt index 2fc1b46..dcb2375 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/ResolvedDependency.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt @@ -1,7 +1,6 @@ -package org.nixos.gradle2nix.dependencygraph.model +package org.nixos.gradle2nix.model import kotlinx.serialization.Serializable -import org.nixos.gradle2nix.DependencyCoordinates @Serializable data class ResolvedDependency( @@ -10,5 +9,5 @@ data class ResolvedDependency( val direct: Boolean, val coordinates: DependencyCoordinates, val repository: String?, - val dependencies: List + val dependencies: List = emptyList(), ) diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedMetadata.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedMetadata.kt new file mode 100644 index 0000000..52b9c1f --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedMetadata.kt @@ -0,0 +1,9 @@ +package org.nixos.gradle2nix.model + +import kotlinx.serialization.Serializable + +@Serializable +data class ResolvedMetadata( + val moduleId: String, + val uri: String +) diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt index 997c92f..153b756 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt @@ -5,7 +5,7 @@ import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.json.encodeToStream import org.nixos.gradle2nix.dependencygraph.DependencyGraphRenderer -import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration +import org.nixos.gradle2nix.model.ResolvedConfiguration @OptIn(ExperimentalSerializationApi::class) private val json = Json { diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt index 6aa4352..35921eb 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt @@ -1,15 +1,26 @@ package org.nixos.gradle2nix.dependencygraph import org.gradle.api.Plugin +import org.gradle.api.internal.GradleInternal +import org.gradle.api.internal.project.DefaultProjectRegistry +import org.gradle.api.internal.project.ProjectInternal +import org.gradle.api.internal.project.ProjectRegistry import org.gradle.api.invocation.Gradle +import org.gradle.api.logging.Logging import org.gradle.api.provider.Provider +import org.gradle.api.services.internal.RegisteredBuildServiceProvider +import org.gradle.internal.build.BuildProjectRegistry import org.gradle.internal.build.event.BuildEventListenerRegistryInternal +import org.gradle.internal.composite.IncludedBuildInternal +import org.gradle.internal.operations.BuildOperationAncestryTracker +import org.gradle.internal.operations.BuildOperationListenerManager import org.gradle.util.GradleVersion import org.nixos.gradle2nix.dependencygraph.extractor.DependencyExtractor import org.nixos.gradle2nix.dependencygraph.extractor.DependencyExtractorBuildService import org.nixos.gradle2nix.dependencygraph.extractor.LegacyDependencyExtractor import org.nixos.gradle2nix.dependencygraph.util.buildDirCompat import org.nixos.gradle2nix.dependencygraph.util.service +import org.nixos.gradle2nix.model.ConfigurationTarget abstract class AbstractDependencyExtractorPlugin : Plugin { // Register extension functions on `Gradle` type @@ -39,6 +50,15 @@ abstract class AbstractDependencyExtractorPlugin : Plugin { .rootProjectBuildDirectory = project.buildDirCompat } + val logger = Logging.getLogger(AbstractDependencyExtractorPlugin::class.java.name) + + gradle.projectsLoaded { + (gradle as GradleInternal).let { g -> + logger.lifecycle("all projects: ${g.owner.projects.allProjects}") + logger.lifecycle("included projects: ${g.includedBuilds().flatMap { it.target.projects.allProjects }.joinToString { it.identityPath.path }}") + } + } + // Register the service to listen for Build Events applicatorStrategy.registerExtractorListener(gradle, dependencyExtractorProvider) @@ -122,7 +142,6 @@ abstract class AbstractDependencyExtractorPlugin : Plugin { gradle: Gradle, extractorServiceProvider: Provider ) { - // No-op as DependencyExtractorService is Auto-Closable } } } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt index 9b786af..7b6252a 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt @@ -1,7 +1,7 @@ package org.nixos.gradle2nix.dependencygraph import java.io.File -import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration +import org.nixos.gradle2nix.model.ResolvedConfiguration interface DependencyGraphRenderer { fun outputDependencyGraph( diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt index 4f47178..18ec2b6 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt @@ -3,12 +3,27 @@ package org.nixos.gradle2nix.dependencygraph.extractor import java.io.File import java.net.URI import java.util.Collections +import java.util.concurrent.ConcurrentHashMap import org.gradle.api.GradleException +import org.gradle.api.artifacts.DependencyResolutionListener +import org.gradle.api.artifacts.ResolvableDependencies +import org.gradle.api.artifacts.component.BuildIdentifier +import org.gradle.api.artifacts.component.ModuleComponentIdentifier +import org.gradle.api.artifacts.query.ArtifactResolutionQuery +import org.gradle.api.artifacts.result.ResolvedArtifactResult import org.gradle.api.artifacts.result.ResolvedComponentResult import org.gradle.api.artifacts.result.ResolvedDependencyResult +import org.gradle.api.component.Artifact +import org.gradle.api.internal.artifacts.DefaultModuleVersionIdentifier import org.gradle.api.internal.artifacts.DefaultProjectComponentIdentifier import org.gradle.api.internal.artifacts.configurations.ResolveConfigurationDependenciesBuildOperationType +import org.gradle.api.internal.artifacts.repositories.resolver.MavenUniqueSnapshotComponentIdentifier import org.gradle.api.logging.Logging +import org.gradle.configuration.ApplyScriptPluginBuildOperationType +import org.gradle.configuration.ConfigurationTargetIdentifier +import org.gradle.initialization.LoadBuildBuildOperationType +import org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier +import org.gradle.internal.component.external.model.ModuleComponentArtifactIdentifier import org.gradle.internal.exceptions.DefaultMultiCauseException import org.gradle.internal.operations.BuildOperationDescriptor import org.gradle.internal.operations.BuildOperationListener @@ -16,27 +31,44 @@ import org.gradle.internal.operations.OperationFinishEvent import org.gradle.internal.operations.OperationIdentifier import org.gradle.internal.operations.OperationProgressEvent import org.gradle.internal.operations.OperationStartEvent -import org.nixos.gradle2nix.PARAM_INCLUDE_CONFIGURATIONS -import org.nixos.gradle2nix.PARAM_INCLUDE_PROJECTS -import org.nixos.gradle2nix.PARAM_REPORT_DIR +import org.gradle.ivy.IvyDescriptorArtifact +import org.gradle.jvm.JvmLibrary +import org.gradle.language.base.artifact.SourcesArtifact +import org.gradle.language.java.artifact.JavadocArtifact +import org.gradle.maven.MavenPomArtifact +import org.gradle.util.GradleVersion import org.nixos.gradle2nix.dependencygraph.DependencyGraphRenderer -import org.nixos.gradle2nix.DependencyCoordinates -import org.nixos.gradle2nix.dependencygraph.model.DependencySource -import org.nixos.gradle2nix.dependencygraph.model.Repository -import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration -import org.nixos.gradle2nix.dependencygraph.model.ResolvedDependency +import org.nixos.gradle2nix.dependencygraph.util.BuildOperationTracker import org.nixos.gradle2nix.dependencygraph.util.loadOptionalParam +import org.nixos.gradle2nix.model.ConfigurationTarget +import org.nixos.gradle2nix.model.DependencyCoordinates +import org.nixos.gradle2nix.model.DependencySource +import org.nixos.gradle2nix.model.PARAM_INCLUDE_CONFIGURATIONS +import org.nixos.gradle2nix.model.PARAM_INCLUDE_PROJECTS +import org.nixos.gradle2nix.model.PARAM_REPORT_DIR +import org.nixos.gradle2nix.model.Repository +import org.nixos.gradle2nix.model.ResolvedArtifact +import org.nixos.gradle2nix.model.ResolvedConfiguration +import org.nixos.gradle2nix.model.ResolvedDependency abstract class DependencyExtractor : BuildOperationListener, AutoCloseable { + private val configurations = + ConcurrentHashMap< + OperationIdentifier, + Pair>() + private val resolvedConfigurations = Collections.synchronizedList(mutableListOf()) private val thrownExceptions = Collections.synchronizedList(mutableListOf()) var rootProjectBuildDirectory: File? = null + private val operationTracker = BuildOperationTracker() + // Properties are lazily initialized so that System Properties are initialized by the time // the values are used. This is required due to a bug in older Gradle versions. (https://github.com/gradle/gradle/issues/6825) private val configurationFilter by lazy { @@ -52,37 +84,37 @@ abstract class DependencyExtractor : abstract fun getRendererClassName(): String - override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) { - // This method will never be called when registered in a `BuildServiceRegistry` (ie. Gradle 6.1 & higher) - // No-op - } + override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) {} - override fun progress(operationIdentifier: OperationIdentifier, progressEvent: OperationProgressEvent) { - // This method will never be called when registered in a `BuildServiceRegistry` (ie. Gradle 6.1 & higher) - // No-op - } + override fun progress(operationIdentifier: OperationIdentifier, progressEvent: OperationProgressEvent) {} override fun finished(buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent) { - handleBuildOperationType< + operationTracker.finished(buildOperation, finishEvent) + + handleFinishBuildOperationType< ResolveConfigurationDependenciesBuildOperationType.Details, ResolveConfigurationDependenciesBuildOperationType.Result - >(buildOperation, finishEvent) { details, result -> extractConfigurationDependencies(details, result) } + >(buildOperation, finishEvent) { details, result -> + buildOperation.id?.let { operationId -> + configurations[operationId] = details to result + } + } } - private inline fun handleBuildOperationType( + private inline fun handleFinishBuildOperationType( buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent, handler: (details: D, result: R) -> Unit ) { try { - handleBuildOperationTypeRaw(buildOperation, finishEvent, handler) + handleFinishBuildOperationTypeRaw(buildOperation, finishEvent, handler) } catch (e: Throwable) { thrownExceptions.add(e) throw e } } - private inline fun handleBuildOperationTypeRaw( + private inline fun handleFinishBuildOperationTypeRaw( buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent, handler: (details: D, result: R) -> Unit @@ -101,13 +133,28 @@ abstract class DependencyExtractor : handler(details, result) } + // This returns null for the root build, because the build operation won't complete until after close() is called. + private fun findBuildDetails(buildOperationId: OperationIdentifier?): LoadBuildBuildOperationType.Details? { + return operationTracker.findParent(buildOperationId) { + it.details as? LoadBuildBuildOperationType.Details + } + } + + private fun processConfigurations() { + for ((operationId, data) in configurations) { + val (details, result) = data + extractConfigurationDependencies(operationId, details, result) + } + } + private fun extractConfigurationDependencies( + operationId: OperationIdentifier, details: ResolveConfigurationDependenciesBuildOperationType.Details, result: ResolveConfigurationDependenciesBuildOperationType.Result ) { val repositories = details.repositories?.mapNotNull { @Suppress("UNCHECKED_CAST") - Repository( + (Repository( id = it.id, type = enumValueOf(it.type), name = it.name, @@ -115,35 +162,53 @@ abstract class DependencyExtractor : metadataSources = (it.properties["METADATA_SOURCES"] as? List) ?: emptyList(), metadataResources = metadataResources(it), artifactResources = artifactResources(it), - ) + )) } ?: emptyList() + + if (repositories.isEmpty()) { + return + } + val rootComponent = result.rootComponent if (rootComponent.dependencies.isEmpty()) { // No dependencies to extract: can safely ignore return } - val projectIdentityPath = (rootComponent.id as? DefaultProjectComponentIdentifier)?.identityPath?.path - - // TODO: At this point, any resolution not bound to a particular project will be assigned to the root "build :" - // This is because `details.buildPath` is always ':', which isn't correct in a composite build. - // It is possible to do better. By tracking the current build operation context, we can assign more precisely. - // See the Gradle Enterprise Build Scan Plugin: `ConfigurationResolutionCapturer_5_0` - val rootPath = projectIdentityPath ?: details.buildPath - if (!configurationFilter.include(rootPath, details.configurationName)) { - LOGGER.debug("Ignoring resolved configuration: $rootPath - ${details.configurationName}") - return + val source: DependencySource = when { + details.isScriptConfiguration -> { + val parent = operationTracker.findParent(operationId) { + it.details as? ApplyScriptPluginBuildOperationType.Details + } ?: throw IllegalStateException("Couldn't find parent script operation for ${details.configurationName}") + DependencySource( + targetType = when (parent.targetType) { + ConfigurationTargetIdentifier.Type.GRADLE.label -> ConfigurationTarget.GRADLE + ConfigurationTargetIdentifier.Type.SETTINGS.label -> ConfigurationTarget.SETTINGS + ConfigurationTargetIdentifier.Type.PROJECT.label -> ConfigurationTarget.BUILDSCRIPT + else -> throw IllegalStateException("Unknown configuration target type: ${parent.targetType}") + }, + targetPath = parent.targetPath ?: ":", + buildPath = parent.buildPath!! + ) + } + else -> { + DependencySource( + targetType = ConfigurationTarget.PROJECT, + targetPath = details.projectPath!!, + buildPath = details.buildPath + ) + } } - val rootId = if (projectIdentityPath == null) "build $rootPath" else componentId(rootComponent) - val rootSource = DependencySource(rootId, rootPath) - val resolvedConfiguration = ResolvedConfiguration(rootSource, details.configurationName, repositories) + + val resolvedConfiguration = ResolvedConfiguration(source, details.configurationName, repositories) for (directDependency in getResolvedDependencies(rootComponent)) { + val moduleComponentId = directDependency.id as? ModuleComponentIdentifier ?: continue val directDep = createComponentNode( - componentId(directDependency), - rootSource, + moduleComponentId, + source, true, directDependency, result.getRepositoryId(directDependency) @@ -167,16 +232,18 @@ abstract class DependencyExtractor : val dependencyComponents = getResolvedDependencies(component) for (dependencyComponent in dependencyComponents) { - val dependencyId = componentId(dependencyComponent) - if (!resolvedConfiguration.hasDependency(dependencyId)) { - val dependencyNode = createComponentNode( - dependencyId, - componentSource, - direct, - dependencyComponent, - result.getRepositoryId(component) - ) - resolvedConfiguration.addDependency(dependencyNode) + if (!resolvedConfiguration.hasDependency(componentId(dependencyComponent))) { + val moduleComponentId = dependencyComponent.id as? ModuleComponentIdentifier + if (moduleComponentId != null) { + val dependencyNode = createComponentNode( + moduleComponentId, + componentSource, + direct, + dependencyComponent, + result.getRepositoryId(component) + ) + resolvedConfiguration.addDependency(dependencyNode) + } walkComponentDependencies(result, dependencyComponent, componentSource, resolvedConfiguration) } @@ -186,24 +253,40 @@ abstract class DependencyExtractor : private fun getSource(component: ResolvedComponentResult, source: DependencySource): DependencySource { val componentId = component.id if (componentId is DefaultProjectComponentIdentifier) { - return DependencySource(componentId(component), componentId.identityPath.path) + return DependencySource( + ConfigurationTarget.PROJECT, + componentId.projectPath, + componentId.build.buildPathCompat + ) } return source } + private val BuildIdentifier.buildPathCompat: String + @Suppress("DEPRECATION") + get() = if (GradleVersion.current() < GradleVersion.version("8.2")) name else buildPath + private fun getResolvedDependencies(component: ResolvedComponentResult): List { return component.dependencies.filterIsInstance().map { it.selected }.filter { it != component } } - private fun createComponentNode(componentId: String, source: DependencySource, direct: Boolean, component: ResolvedComponentResult, repositoryId: String?): ResolvedDependency { - val componentDependencies = component.dependencies.filterIsInstance().map { componentId(it.selected) } + private fun createComponentNode( + componentId: ModuleComponentIdentifier, + source: DependencySource, + direct: Boolean, + component: ResolvedComponentResult, + repositoryId: String? + ): ResolvedDependency { + val componentDependencies = + component.dependencies.filterIsInstance().map { componentId(it.selected) } + val coordinates = coordinates(componentId) return ResolvedDependency( - componentId, + componentId.displayName, source, direct, - coordinates(component), + coordinates, repositoryId, - componentDependencies + componentDependencies, ) } @@ -211,16 +294,25 @@ abstract class DependencyExtractor : return component.id.displayName } - private fun coordinates(component: ResolvedComponentResult): DependencyCoordinates { - // TODO: Consider and handle null moduleVersion - val moduleVersionIdentifier = component.moduleVersion!! + private fun coordinates(componentId: ModuleComponentIdentifier): DependencyCoordinates { return DependencyCoordinates( - moduleVersionIdentifier.group, - moduleVersionIdentifier.name, - moduleVersionIdentifier.version + componentId.group, + componentId.module, + componentId.version, + (componentId as? MavenUniqueSnapshotComponentIdentifier)?.timestamp ) } + private fun artifactType(type: Class): ResolvedArtifact.Type? { + return when (type) { + SourcesArtifact::class.java -> ResolvedArtifact.Type.SOURCES + JavadocArtifact::class.java -> ResolvedArtifact.Type.JAVADOC + IvyDescriptorArtifact::class.java -> ResolvedArtifact.Type.IVY_DESCRIPTOR + MavenPomArtifact::class.java -> ResolvedArtifact.Type.MAVEN_POM + else -> null + } + } + private fun writeDependencyGraph() { val outputDirectory = getOutputDir() outputDirectory.mkdirs() @@ -248,6 +340,8 @@ abstract class DependencyExtractor : } override fun close() { + LOGGER.lifecycle("DependencyExtractor: CLOSE") + if (thrownExceptions.isNotEmpty()) { throw DefaultMultiCauseException( "The Gradle2Nix plugin encountered errors while extracting dependencies. " + @@ -256,6 +350,10 @@ abstract class DependencyExtractor : ) } try { + processConfigurations() + + LOGGER.lifecycle("Resolved ${resolvedConfigurations.size} configurations.") + writeDependencyGraph() } catch (e: RuntimeException) { throw GradleException( diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt index 5f3c7bd..8f49dbd 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt @@ -8,7 +8,6 @@ abstract class DependencyExtractorBuildService : DependencyExtractor(), BuildService { - // Some parameters for the web server internal interface Params : BuildServiceParameters { val rendererClassName: Property } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/BuildOperationTracker.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/BuildOperationTracker.kt new file mode 100644 index 0000000..2a833e0 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/BuildOperationTracker.kt @@ -0,0 +1,64 @@ +package org.nixos.gradle2nix.dependencygraph.util + +import java.util.concurrent.ConcurrentHashMap +import org.gradle.api.logging.Logging +import org.gradle.internal.operations.BuildOperation +import org.gradle.internal.operations.BuildOperationDescriptor +import org.gradle.internal.operations.BuildOperationListener +import org.gradle.internal.operations.OperationFinishEvent +import org.gradle.internal.operations.OperationIdentifier +import org.gradle.internal.operations.OperationProgressEvent +import org.gradle.internal.operations.OperationStartEvent + +class BuildOperationTracker : BuildOperationListener { + private val _parents: MutableMap = ConcurrentHashMap() + private val _operations: MutableMap = ConcurrentHashMap() + private val _results: MutableMap = ConcurrentHashMap() + + val parents: Map get() = _parents + val operations: Map get() = _operations + val results: Map get() = _results + + override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) { + } + + override fun progress(operationIdentifier: OperationIdentifier, progressEvent: OperationProgressEvent) { + } + + override fun finished(buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent) { + val id = buildOperation.id ?: return + _parents[id] = buildOperation.parentId + _operations[id] = buildOperation + } + + tailrec fun findParent(id: OperationIdentifier?, block: (BuildOperationDescriptor) -> T?): T? { + if (id == null) return null + val operation = _operations[id] ?: return null.also { + LOGGER.lifecycle("no operation for $id") + } + return block(operation) ?: findParent(operation.parentId, block) + } + + fun findChild(id: OperationIdentifier?, block: (BuildOperationDescriptor) -> T?): T? { + if (id == null) return null + val operation = operations[id] ?: return null + block(operation)?.let { return it } + return children(id).firstNotNullOfOrNull { findChild(it, block) } + } + + fun children(id: OperationIdentifier): Set { + return parents.filterValues { it == id }.keys + } + + inline fun getDetails(id: OperationIdentifier): T? { + return operations[id]?.details as? T + } + + inline fun getResult(id: OperationIdentifier): T? { + return results[id] as? T + } + + companion object { + private val LOGGER = Logging.getLogger(BuildOperationTracker::class.qualifiedName!!) + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt index eb46431..2c11c1b 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt @@ -6,8 +6,8 @@ import org.gradle.api.Task import org.gradle.api.invocation.Gradle import org.gradle.api.tasks.TaskProvider import org.gradle.util.GradleVersion -import org.nixos.gradle2nix.RESOLVE_ALL_TASK -import org.nixos.gradle2nix.RESOLVE_PROJECT_TASK +import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK +import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK // TODO: Rename these From e83e42f9d40c3fd84e8a2b6847920ba0a07a08ab Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Tue, 19 Dec 2023 17:40:34 -0800 Subject: [PATCH 09/34] Fix ivy descriptor and snapshot artifacts --- .../kotlin/org/nixos/gradle2nix/Process.kt | 123 +++++++---- .../kotlin/org/nixos/gradle2nix/env/Env.kt | 205 +----------------- .../metadata/VerificationMetadata.kt | 13 +- .../dependency/snapshot-redirect.groovy.json | 4 +- .../resolves-from-default-repo.groovy.json | 64 +++--- .../resolves-from-default-repo.kotlin.json | 64 +++--- .../gradle2nix/model/DependencyCoordinates.kt | 35 ++- .../gradle2nix/model/ResolvedConfiguration.kt | 2 +- .../gradle2nix/model/ResolvedDependency.kt | 3 +- .../org/nixos/gradle2nix/model/Version.kt | 172 +++++++++++++++ .../extractor/DependencyExtractor.kt | 62 +++--- 11 files changed, 382 insertions(+), 365 deletions(-) create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/Version.kt diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt index 104ab41..6050acf 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -21,8 +21,6 @@ import org.nixos.gradle2nix.env.ArtifactSet import org.nixos.gradle2nix.env.Env import org.nixos.gradle2nix.env.Module import org.nixos.gradle2nix.env.ModuleId -import org.nixos.gradle2nix.env.ModuleVersionId -import org.nixos.gradle2nix.env.Version import org.nixos.gradle2nix.metadata.Checksum import org.nixos.gradle2nix.metadata.Component import org.nixos.gradle2nix.metadata.Md5 @@ -31,6 +29,8 @@ import org.nixos.gradle2nix.metadata.Sha256 import org.nixos.gradle2nix.metadata.Sha512 import org.nixos.gradle2nix.metadata.VerificationMetadata import org.nixos.gradle2nix.metadata.parseVerificationMetadata +import org.nixos.gradle2nix.model.DependencyCoordinates +import org.nixos.gradle2nix.model.Version import org.nixos.gradle2nix.module.GradleModule import org.nixos.gradle2nix.module.Variant @@ -44,12 +44,10 @@ private fun shouldSkipRepository(repository: Repository): Boolean { fun processDependencies(config: Config): Env { val verificationMetadata = readVerificationMetadata(config) - val verificationComponents = verificationMetadata?.components?.associateBy { - ModuleVersionId(ModuleId(it.group, it.name), it.version) - } ?: emptyMap() - val moduleCache = mutableMapOf() - val pomCache = mutableMapOf?>() - val ivyCache = mutableMapOf?>() + val verificationComponents = verificationMetadata?.components?.associateBy { it.id } ?: emptyMap() + val moduleCache = mutableMapOf() + val pomCache = mutableMapOf?>() + val ivyCache = mutableMapOf?>() val configurations = readDependencyGraph(config) val repositories = configurations @@ -71,15 +69,14 @@ fun processDependencies(config: Config): Env { return configurations.asSequence() .flatMap { it.allDependencies.asSequence() } - .filterNot { it.id.startsWith("project ") || it.repository == null || it.repository !in repositories } - .groupBy { ModuleId(it.coordinates.group, it.coordinates.module) } - .mapValues { (id, deps) -> - val versions = deps.groupBy { Version(it.coordinates.version) } - .mapValues { (version, deps) -> - val componentId = ModuleVersionId(id, version) + .filterNot { it.repository == null || it.repository !in repositories } + .groupBy { ModuleId(it.id.group, it.id.module) } + .mapValues { (_, deps) -> + val byVersion = deps.groupBy { it.id } + .mapValues { (componentId, deps) -> val dep = MergedDependency( id = componentId, - repositories = deps.mapNotNull { repositories[it.repository] } + repositories = deps.mapNotNull { repositories[it.repository] }.distinct() ) val component = verificationComponents[componentId] ?: verifyComponentFilesInCache(config, componentId) @@ -93,7 +90,7 @@ fun processDependencies(config: Config): Env { maybeDownloadMavenPom(config.logger, component, dep.repositories, gradleModule) } val ivyArtifact = ivyCache.getOrPut(componentId) { - maybeDownloadIvyDescriptor(config.logger, component, dep.repositories, gradleModule) + maybeDownloadIvyDescriptor(config.logger, component, dep.repositories) } val files = buildMap { @@ -104,7 +101,7 @@ fun processDependencies(config: Config): Env { artifact.name, ArtifactFile( urls = dep.repositories.flatMap { repo -> - artifactUrls(componentId, artifact.name, repo, gradleModule) + artifactUrls(config.logger, componentId, artifact.name, repo, gradleModule) }.distinct(), hash = artifact.checksums.first().toSri() ) @@ -114,8 +111,9 @@ fun processDependencies(config: Config): Env { ArtifactSet(files) } + .mapKeys { Version(it.key.version) } .toSortedMap(Version.Comparator.reversed()) - Module(versions) + Module(byVersion) } .toSortedMap(compareBy(ModuleId::toString)) } @@ -134,9 +132,9 @@ private fun readDependencyGraph(config: Config): List { private fun verifyComponentFilesInCache( config: Config, - id: ModuleVersionId, + id: DependencyCoordinates, ): Component? { - val cacheDir = with(id) { config.gradleHome.resolve("caches/modules-2/files-2.1/$group/$name/$version") } + val cacheDir = with(id) { config.gradleHome.resolve("caches/modules-2/files-2.1/$group/$module/$version") } if (!cacheDir.exists()) { return null } @@ -149,17 +147,17 @@ private fun verifyComponentFilesInCache( private fun verifyComponentFilesInTestRepository( config: Config, - id: ModuleVersionId + id: DependencyCoordinates ): Component? { if (m2 == null) return null val dir = with(id) { - File(URI.create(m2)).resolve("${group.replace(".", "/")}/$name/$version") + File(URI.create(m2)).resolve("${group.replace(".", "/")}/$module/$version") } if (!dir.exists()) { config.logger.log("$id: not found in m2 repository; tried $dir") return null } - val verifications = dir.walk().filter { it.isFile && it.name.startsWith(id.name) }.map { f -> + val verifications = dir.walk().filter { it.isFile && it.name.startsWith(id.module) }.map { f -> ArtifactMetadata( f.name, sha256 = Sha256(f.sha256()) @@ -175,7 +173,7 @@ private fun maybeDownloadGradleModule( repos: List ): ArtifactDownload>? { if (component.artifacts.none { it.name.endsWith(".module") }) return null - val filename = with(component.id) { "$name-$version.module" } + val filename = with(component.id) { "$module-$version.module" } return maybeDownloadArtifact(logger, component.id, filename, repos)?.let { artifact -> try { ArtifactDownload( @@ -199,12 +197,12 @@ private fun maybeDownloadMavenPom( if (component.artifacts.any { it.name.endsWith(".pom") }) return null val pomRepos = repos.filter { "mavenPom" in it.metadataSources } if (pomRepos.isEmpty()) return null - val filename = with(component.id) { "$name-$version.pom" } + val filename = with(component.id) { "$module-$version.pom" } return maybeDownloadArtifact(logger, component.id, filename, pomRepos)?.let { artifact -> filename to ArtifactFile( urls = pomRepos.flatMap { repo -> - artifactUrls(component.id, filename, repo, gradleModule) + artifactUrls(logger, component.id, filename, repo, gradleModule) }.distinct(), hash = artifact.hash.toSri() ) @@ -215,28 +213,52 @@ private fun maybeDownloadIvyDescriptor( logger: Logger, component: Component, repos: List, - gradleModule: GradleModule? ): Pair? { - if (component.artifacts.any { it.name == "ivy.xml" }) return null val ivyRepos = repos.filter { "ivyDescriptor" in it.metadataSources } if (ivyRepos.isEmpty()) return null - return maybeDownloadArtifact(logger, component.id, "ivy.xml", ivyRepos)?.let { artifact -> - "ivy.xml" to ArtifactFile( - urls = ivyRepos.flatMap { repo -> - artifactUrls(component.id, "ivy.xml", repo, gradleModule) - }.distinct(), - hash = artifact.hash.toSri() - ) + + val urls = ivyRepos + .flatMap { repo -> + val attributes = attributes(component.id, repo) + repo.metadataResources.mapNotNull { fill(it, attributes).takeIf(::isUrlComplete) } + } + .filter { url -> + component.artifacts.none { url.substringAfterLast('/') == it.name } + } + + var artifact: ArtifactDownload? = null + + for (url in urls) { + try { + val source = HashingSource.sha256(URL(url).openStream().source()) + val text = source.buffer().readUtf8() + val hash = source.hash + artifact = ArtifactDownload(text, url, Sha256(hash.hex())) + break + } catch (e: IOException) { + // Pass + } } + + if (artifact == null) { + logger.debug("ivy descriptor not found in urls: $urls") + return null + } + return artifact.artifact to ArtifactFile( + urls = urls, + hash = artifact.hash.toSri() + ) } private fun maybeDownloadArtifact( logger: Logger, - id: ModuleVersionId, + id: DependencyCoordinates, filename: String, repos: List ): ArtifactDownload? { - val urls = repos.flatMap { artifactUrls(id, filename, it, null)} + val urls = repos.flatMap { artifactUrls(logger, id, filename, it, null)} + + logger.debug("artifact $filename: $urls") for (url in urls) { try { @@ -270,10 +292,11 @@ private fun Checksum.toSri(): String { } private fun artifactUrls( - id: ModuleVersionId, + logger: Logger, + id: DependencyCoordinates, filename: String, repository: Repository, - module: GradleModule? + module: GradleModule?, ): List { val groupAsPath = id.group.replace(".", "/") @@ -286,8 +309,8 @@ private fun artifactUrls( val attributes = mutableMapOf( "organisation" to if (repository.m2Compatible) groupAsPath else id.group, - "module" to id.name, - "revision" to id.version.toString(), + "module" to id.module, + "revision" to id.version, ) + fileAttributes(repoFilename, id.version) val resources = when (attributes["ext"]) { @@ -299,7 +322,7 @@ private fun artifactUrls( repository.artifactResources } else -> repository.artifactResources - } + }.map { it.replaceFirst("-[revision]", "-${id.artifactVersion}") } val urls = mutableListOf() @@ -309,10 +332,12 @@ private fun artifactUrls( } if (location.none { it == '[' || it == ']' }) { urls.add(location) + } else { + logger.warn("failed to construct artifact URL: $location") } } - return urls + return urls.distinct() } private val optionalRegex = Regex("\\(([^)]+)\\)") @@ -328,8 +353,16 @@ private fun fill(template: String, attributes: Map): String { } } +private fun isUrlComplete(url: String): Boolean = !url.contains("[") + +private fun attributes(id: DependencyCoordinates, repository: Repository): Map = buildMap { + put("organisation", if (repository.m2Compatible) id.group.replace(".", "/") else id.group) + put("module", id.module) + put("revision", id.version) +} + // Gradle persists artifacts with the Maven artifact pattern, which may not match the repository's pattern. -private fun fileAttributes(file: String, version: Version): Map { +private fun fileAttributes(file: String, version: String): Map { val parts = Regex("(.+)-$version(-([^.]+))?(\\.(.+))?").matchEntire(file) ?: return emptyMap() val (artifact, _, classifier, _, ext) = parts.destructured @@ -342,7 +375,7 @@ private fun fileAttributes(file: String, version: Version): Map } private data class MergedDependency( - val id: ModuleVersionId, + val id: DependencyCoordinates, val repositories: List ) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt b/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt index 414215b..2176a31 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt @@ -1,6 +1,5 @@ package org.nixos.gradle2nix.env -import java.util.concurrent.ConcurrentHashMap import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable import kotlinx.serialization.SerializationException @@ -9,8 +8,7 @@ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder -import org.gradle.internal.impldep.com.google.common.collect.ImmutableMap -import org.gradle.internal.impldep.com.google.common.primitives.Longs +import org.nixos.gradle2nix.model.Version typealias Env = Map @@ -68,204 +66,3 @@ data class ModuleId( } } } - -@Serializable(ModuleVersionId.Serializer::class) -data class ModuleVersionId( - val moduleId: ModuleId, - val version: Version -) : Comparable { - constructor(group: String, name: String, version: Version) : this(ModuleId(group, name), version) - - val group: String get() = moduleId.group - val name: String get() = moduleId.name - - override fun compareTo(other: ModuleVersionId): Int = - compareValuesBy( - this, - other, - ModuleVersionId::moduleId, - ModuleVersionId::version - ) - - - override fun toString(): String = "$group:$name:$version" - - internal object Serializer : KSerializer { - override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor( - Version::class.qualifiedName!!, - PrimitiveKind.STRING - ) - - override fun serialize(encoder: Encoder, value: ModuleVersionId) { - encoder.encodeString(value.toString()) - } - - override fun deserialize(decoder: Decoder): ModuleVersionId { - val encoded = decoder.decodeString() - val parts = encoded.split(":") - if (parts.size != 3 || parts.any(String::isBlank)) { - throw SerializationException("invalid module version id: $encoded") - } - return ModuleVersionId( - moduleId = ModuleId(parts[0], parts[1]), - version = Version(parts[3]) - ) - } - } -} - -@Serializable(Version.Serializer::class) -class Version(val source: String, val parts: List, base: Version?) : Comparable { - - private val base: Version - val numericParts: List - - init { - this.base = base ?: this - this.numericParts = parts.map(Longs::tryParse) - } - - override fun compareTo(other: Version): Int = compare(this, other) - - override fun toString(): String = source - - override fun equals(other: Any?): Boolean = when { - other === this -> true - other == null || other !is Version -> false - else -> source == other.source - } - - override fun hashCode(): Int = source.hashCode() - - object Comparator : kotlin.Comparator { - override fun compare(o1: Version, o2: Version): Int = - Version.compare(o1, o2) - } - - internal object Serializer : KSerializer { - override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor( - Version::class.qualifiedName!!, - PrimitiveKind.STRING - ) - - override fun serialize(encoder: Encoder, value: Version) { - encoder.encodeString(value.source) - } - - override fun deserialize(decoder: Decoder): Version { - return Version(decoder.decodeString()) - } - } - - companion object { - private val SPECIAL_MEANINGS: Map = ImmutableMap.builderWithExpectedSize(7) - .put("dev", -1) - .put("rc", 1) - .put("snapshot", 2) - .put("final", 3).put("ga", 4).put("release", 5) - .put("sp", 6).build() - - private val cache = ConcurrentHashMap() - - // From org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionParser - operator fun invoke(original: String): Version = cache.getOrPut(original) { - val parts = mutableListOf() - var digit = false - var startPart = 0 - var pos = 0 - var endBase = 0 - var endBaseStr = 0 - while (pos < original.length) { - val ch = original[pos] - if (ch == '.' || ch == '_' || ch == '-' || ch == '+') { - parts.add(original.substring(startPart, pos)) - startPart = pos + 1 - digit = false - if (ch != '.' && endBaseStr == 0) { - endBase = parts.size - endBaseStr = pos - } - } else if (ch in '0'..'9') { - if (!digit && pos > startPart) { - if (endBaseStr == 0) { - endBase = parts.size + 1 - endBaseStr = pos - } - parts.add(original.substring(startPart, pos)) - startPart = pos - } - digit = true - } else { - if (digit) { - if (endBaseStr == 0) { - endBase = parts.size + 1 - endBaseStr = pos - } - parts.add(original.substring(startPart, pos)) - startPart = pos - } - digit = false - } - pos++ - } - if (pos > startPart) { - parts.add(original.substring(startPart, pos)) - } - var base: Version? = null - if (endBaseStr > 0) { - base = Version(original.substring(0, endBaseStr), parts.subList(0, endBase), null) - } - Version(original, parts, base) - } - - // From org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.StaticVersionComparator - private fun compare(version1: Version, version2: Version): Int { - if (version1 == version2) { - return 0 - } - - val parts1 = version1.parts - val parts2 = version2.parts - val numericParts1 = version1.numericParts - val numericParts2 = version2.numericParts - var lastIndex = -1 - - for (i in 0..<(minOf(parts1.size, parts2.size))) { - lastIndex = i - - val part1 = parts1[i] - val part2 = parts2[i] - - val numericPart1 = numericParts1[i] - val numericPart2 = numericParts2[i] - - when { - part1 == part2 -> continue - numericPart1 != null && numericPart2 == null -> return 1 - numericPart2 != null && numericPart1 == null -> return -1 - numericPart1 != null && numericPart2 != null -> { - val result = numericPart1.compareTo(numericPart2) - if (result == 0) continue - return result - } - else -> { - // both are strings, we compare them taking into account special meaning - val sm1 = SPECIAL_MEANINGS[part1.lowercase()] - val sm2 = SPECIAL_MEANINGS[part2.lowercase()] - if (sm1 != null) return sm1 - (sm2 ?: 0) - if (sm2 != null) return -sm2 - return part1.compareTo(part2) - } - } - } - if (lastIndex < parts1.size) { - return if (numericParts1[lastIndex] == null) -1 else 1 - } - if (lastIndex < parts2.size) { - return if (numericParts2[lastIndex] == null) 1 else -1 - } - - return 0 - } - } -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt index 54b8c23..3bd95d9 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt @@ -9,8 +9,7 @@ import nl.adaptivity.xmlutil.serialization.XmlElement import nl.adaptivity.xmlutil.serialization.XmlSerialName import nl.adaptivity.xmlutil.xmlStreaming import org.nixos.gradle2nix.Logger -import org.nixos.gradle2nix.env.ModuleVersionId -import org.nixos.gradle2nix.env.Version +import org.nixos.gradle2nix.model.DependencyCoordinates sealed interface Coordinates { val group: String? @@ -104,15 +103,17 @@ data class Artifact( data class Component( val group: String, val name: String, - val version: Version, + val version: String, + val timestamp: String? = null, val artifacts: List = emptyList(), ) { - val id: ModuleVersionId get() = ModuleVersionId(group, name, version) + val id: DependencyCoordinates get() = DependencyCoordinates(group, name, version, timestamp) - constructor(id: ModuleVersionId, artifacts: List) : this( + constructor(id: DependencyCoordinates, artifacts: List) : this( id.group, - id.name, + id.module, id.version, + id.timestamp, artifacts ) } diff --git a/fixtures/golden/dependency/snapshot-redirect.groovy.json b/fixtures/golden/dependency/snapshot-redirect.groovy.json index d3f7334..d4f9c6c 100644 --- a/fixtures/golden/dependency/snapshot-redirect.groovy.json +++ b/fixtures/golden/dependency/snapshot-redirect.groovy.json @@ -3,13 +3,13 @@ "-SNAPSHOT": { "packr--SNAPSHOT.jar": { "urls": [ - "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.jar" + "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.jar" ], "hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" }, "packr--SNAPSHOT.pom": { "urls": [ - "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.pom" + "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.pom" ], "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" } diff --git a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json index a1243bf..039ae71 100644 --- a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json +++ b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json @@ -3,15 +3,15 @@ "5.6.0": { "jna-5.6.0.jar": { "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" ], "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" }, "jna-5.6.0.pom": { "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" ], "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" } @@ -21,15 +21,15 @@ "1.0.20200330": { "trove4j-1.0.20200330.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" ], "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" }, "trove4j-1.0.20200330.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" ], "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } @@ -97,15 +97,15 @@ "1.7.21": { "kotlin-compiler-embeddable-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" ], "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" }, "kotlin-compiler-embeddable-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" ], "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" } @@ -147,15 +147,15 @@ "1.7.21": { "kotlin-daemon-embeddable-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" ], "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" }, "kotlin-daemon-embeddable-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" ], "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" } @@ -371,15 +371,15 @@ "1.7.21": { "kotlin-scripting-common-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" ], "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" }, "kotlin-scripting-common-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" ], "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" } @@ -389,15 +389,15 @@ "1.7.21": { "kotlin-scripting-compiler-embeddable-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" ], "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" }, "kotlin-scripting-compiler-embeddable-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" ], "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" } @@ -407,15 +407,15 @@ "1.7.21": { "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" ], "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" }, "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" ], "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" } @@ -425,15 +425,15 @@ "1.7.21": { "kotlin-scripting-jvm-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" ], "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" }, "kotlin-scripting-jvm-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" ], "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" } diff --git a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json index a1243bf..039ae71 100644 --- a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json +++ b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json @@ -3,15 +3,15 @@ "5.6.0": { "jna-5.6.0.jar": { "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" ], "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" }, "jna-5.6.0.pom": { "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" ], "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" } @@ -21,15 +21,15 @@ "1.0.20200330": { "trove4j-1.0.20200330.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" ], "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" }, "trove4j-1.0.20200330.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" ], "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } @@ -97,15 +97,15 @@ "1.7.21": { "kotlin-compiler-embeddable-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" ], "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" }, "kotlin-compiler-embeddable-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" ], "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" } @@ -147,15 +147,15 @@ "1.7.21": { "kotlin-daemon-embeddable-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" ], "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" }, "kotlin-daemon-embeddable-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" ], "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" } @@ -371,15 +371,15 @@ "1.7.21": { "kotlin-scripting-common-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" ], "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" }, "kotlin-scripting-common-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" ], "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" } @@ -389,15 +389,15 @@ "1.7.21": { "kotlin-scripting-compiler-embeddable-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" ], "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" }, "kotlin-scripting-compiler-embeddable-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" ], "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" } @@ -407,15 +407,15 @@ "1.7.21": { "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" ], "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" }, "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" ], "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" } @@ -425,15 +425,15 @@ "1.7.21": { "kotlin-scripting-jvm-1.7.21.jar": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" ], "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" }, "kotlin-scripting-jvm-1.7.21.pom": { "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" ], "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" } diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt index 72de287..b5bc83f 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt @@ -1,26 +1,53 @@ package org.nixos.gradle2nix.model +import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder -@Serializable +@Serializable(DependencyCoordinates.Serializer::class) data class DependencyCoordinates( val group: String, val module: String, val version: String, val timestamp: String? = null -) { +) : Comparable { + override fun toString(): String = if (timestamp != null) { "$group:$module:$version:$timestamp" } else { "$group:$module:$version" } - val isSnapshot: Boolean get() = timestamp != null - val moduleVersion: String get() = version val artifactVersion: String get() = timestamp?.let { version.replace("SNAPSHOT", it) } ?: version + override fun compareTo(other: DependencyCoordinates): Int = comparator.compare(this, other) + + object Serializer : KSerializer { + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor( + DependencyCoordinates::class.qualifiedName!!, + PrimitiveKind.STRING + ) + + override fun deserialize(decoder: Decoder): DependencyCoordinates { + val encoded = decoder.decodeString() + return parse(encoded) + } + + override fun serialize(encoder: Encoder, value: DependencyCoordinates) { + encoder.encodeString(value.toString()) + } + } + companion object { + val comparator = compareBy { it.group } + .thenBy { it.module } + .thenByDescending { it.artifactVersion } + fun parse(id: String): DependencyCoordinates { val parts = id.split(":") return when (parts.size) { diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt index 829f049..72ec576 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt @@ -13,7 +13,7 @@ data class ResolvedConfiguration( allDependencies.add(component) } - fun hasDependency(componentId: String): Boolean { + fun hasDependency(componentId: DependencyCoordinates): Boolean { return allDependencies.any { it.id == componentId } } } diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt index dcb2375..f219359 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt @@ -4,10 +4,9 @@ import kotlinx.serialization.Serializable @Serializable data class ResolvedDependency( - val id: String, + val id: DependencyCoordinates, val source: DependencySource, val direct: Boolean, - val coordinates: DependencyCoordinates, val repository: String?, val dependencies: List = emptyList(), ) diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/Version.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/Version.kt new file mode 100644 index 0000000..8219268 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/Version.kt @@ -0,0 +1,172 @@ +package org.nixos.gradle2nix.model + +import java.util.concurrent.ConcurrentHashMap +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + + +@Serializable(Version.Serializer::class) +class Version(val source: String, val parts: List, base: Version?) : Comparable { + + private val base: Version + val numericParts: List + + init { + this.base = base ?: this + this.numericParts = parts.map { + try { it.toLong() } catch (e: NumberFormatException) { null } + } + } + + override fun compareTo(other: Version): Int = compare(this, other) + + override fun toString(): String = source + + override fun equals(other: Any?): Boolean = when { + other === this -> true + other == null || other !is Version -> false + else -> source == other.source + } + + override fun hashCode(): Int = source.hashCode() + + object Comparator : kotlin.Comparator { + override fun compare(o1: Version, o2: Version): Int = + Version.compare(o1, o2) + } + + internal object Serializer : KSerializer { + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor( + Version::class.qualifiedName!!, + PrimitiveKind.STRING + ) + + override fun serialize(encoder: Encoder, value: Version) { + encoder.encodeString(value.source) + } + + override fun deserialize(decoder: Decoder): Version { + return Version(decoder.decodeString()) + } + } + + companion object { + private val SPECIAL_MEANINGS: Map = mapOf( + "dev" to -1, + "rc" to 1, + "snapshot" to 2, + "final" to 3, + "ga" to 4, + "release" to 5, + "sp" to 6 + ) + + private val cache = ConcurrentHashMap() + + // From org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionParser + operator fun invoke(original: String): Version = cache.getOrPut(original) { + val parts = mutableListOf() + var digit = false + var startPart = 0 + var pos = 0 + var endBase = 0 + var endBaseStr = 0 + while (pos < original.length) { + val ch = original[pos] + if (ch == '.' || ch == '_' || ch == '-' || ch == '+') { + parts.add(original.substring(startPart, pos)) + startPart = pos + 1 + digit = false + if (ch != '.' && endBaseStr == 0) { + endBase = parts.size + endBaseStr = pos + } + } else if (ch in '0'..'9') { + if (!digit && pos > startPart) { + if (endBaseStr == 0) { + endBase = parts.size + 1 + endBaseStr = pos + } + parts.add(original.substring(startPart, pos)) + startPart = pos + } + digit = true + } else { + if (digit) { + if (endBaseStr == 0) { + endBase = parts.size + 1 + endBaseStr = pos + } + parts.add(original.substring(startPart, pos)) + startPart = pos + } + digit = false + } + pos++ + } + if (pos > startPart) { + parts.add(original.substring(startPart, pos)) + } + var base: Version? = null + if (endBaseStr > 0) { + base = Version(original.substring(0, endBaseStr), parts.subList(0, endBase), null) + } + Version(original, parts, base) + } + + // From org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.StaticVersionComparator + private fun compare(version1: Version, version2: Version): Int { + if (version1 == version2) { + return 0 + } + + val parts1 = version1.parts + val parts2 = version2.parts + val numericParts1 = version1.numericParts + val numericParts2 = version2.numericParts + var lastIndex = -1 + + for (i in 0..<(minOf(parts1.size, parts2.size))) { + lastIndex = i + + val part1 = parts1[i] + val part2 = parts2[i] + + val numericPart1 = numericParts1[i] + val numericPart2 = numericParts2[i] + + when { + part1 == part2 -> continue + numericPart1 != null && numericPart2 == null -> return 1 + numericPart2 != null && numericPart1 == null -> return -1 + numericPart1 != null && numericPart2 != null -> { + val result = numericPart1.compareTo(numericPart2) + if (result == 0) continue + return result + } + else -> { + // both are strings, we compare them taking into account special meaning + val sm1 = SPECIAL_MEANINGS[part1.lowercase()] + val sm2 = SPECIAL_MEANINGS[part2.lowercase()] + if (sm1 != null) return sm1 - (sm2 ?: 0) + if (sm2 != null) return -sm2 + return part1.compareTo(part2) + } + } + } + if (lastIndex < parts1.size) { + return if (numericParts1[lastIndex] == null) -1 else 1 + } + if (lastIndex < parts2.size) { + return if (numericParts2[lastIndex] == null) 1 else -1 + } + + return 0 + } + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt index 18ec2b6..c9ddea7 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt @@ -205,17 +205,19 @@ abstract class DependencyExtractor : val resolvedConfiguration = ResolvedConfiguration(source, details.configurationName, repositories) for (directDependency in getResolvedDependencies(rootComponent)) { - val moduleComponentId = directDependency.id as? ModuleComponentIdentifier ?: continue - val directDep = createComponentNode( - moduleComponentId, - source, - true, - directDependency, - result.getRepositoryId(directDependency) - ) - resolvedConfiguration.addDependency(directDep) + val coordinates = (directDependency.id as? ModuleComponentIdentifier)?.let(::coordinates) + if (coordinates != null) { + val directDep = createComponentNode( + coordinates, + source, + true, + directDependency, + result.getRepositoryId(directDependency) + ) + resolvedConfiguration.addDependency(directDep) - walkComponentDependencies(result, directDependency, directDep.source, resolvedConfiguration) + walkComponentDependencies(result, directDependency, directDep.source, resolvedConfiguration) + } } resolvedConfigurations.add(resolvedConfiguration) @@ -232,19 +234,17 @@ abstract class DependencyExtractor : val dependencyComponents = getResolvedDependencies(component) for (dependencyComponent in dependencyComponents) { - if (!resolvedConfiguration.hasDependency(componentId(dependencyComponent))) { - val moduleComponentId = dependencyComponent.id as? ModuleComponentIdentifier - if (moduleComponentId != null) { - val dependencyNode = createComponentNode( - moduleComponentId, - componentSource, - direct, - dependencyComponent, - result.getRepositoryId(component) - ) - resolvedConfiguration.addDependency(dependencyNode) - } - + val coordinates = (dependencyComponent.id as? ModuleComponentIdentifier)?.let(::coordinates) + ?: continue + if (!resolvedConfiguration.hasDependency(coordinates)) { + val dependencyNode = createComponentNode( + coordinates, + componentSource, + direct, + dependencyComponent, + result.getRepositoryId(component) + ) + resolvedConfiguration.addDependency(dependencyNode) walkComponentDependencies(result, dependencyComponent, componentSource, resolvedConfiguration) } } @@ -271,7 +271,7 @@ abstract class DependencyExtractor : } private fun createComponentNode( - componentId: ModuleComponentIdentifier, + coordinates: DependencyCoordinates, source: DependencySource, direct: Boolean, component: ResolvedComponentResult, @@ -279,12 +279,10 @@ abstract class DependencyExtractor : ): ResolvedDependency { val componentDependencies = component.dependencies.filterIsInstance().map { componentId(it.selected) } - val coordinates = coordinates(componentId) return ResolvedDependency( - componentId.displayName, + coordinates, source, direct, - coordinates, repositoryId, componentDependencies, ) @@ -303,16 +301,6 @@ abstract class DependencyExtractor : ) } - private fun artifactType(type: Class): ResolvedArtifact.Type? { - return when (type) { - SourcesArtifact::class.java -> ResolvedArtifact.Type.SOURCES - JavadocArtifact::class.java -> ResolvedArtifact.Type.JAVADOC - IvyDescriptorArtifact::class.java -> ResolvedArtifact.Type.IVY_DESCRIPTOR - MavenPomArtifact::class.java -> ResolvedArtifact.Type.MAVEN_POM - else -> null - } - } - private fun writeDependencyGraph() { val outputDirectory = getOutputDir() outputDirectory.mkdirs() From 8d2ec45ad4501aa99d64950f7929eff82d773466 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 17 May 2024 14:52:02 -0700 Subject: [PATCH 10/34] Rewrite plugin, use filenames in lockfile --- app/build.gradle.kts | 22 +- .../org/nixos/gradle2nix/GradleRunner.kt | 92 +- .../kotlin/org/nixos/gradle2nix/Logger.kt | 47 +- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 84 +- .../kotlin/org/nixos/gradle2nix/Process.kt | 374 +- .../kotlin/org/nixos/gradle2nix}/Version.kt | 31 +- .../kotlin/org/nixos/gradle2nix/env/Env.kt | 62 +- .../{module => gradle}/GradleModule.kt | 2 +- .../metadata/VerificationMetadata.kt | 13 +- .../kotlin/org/nixos/gradle2nix/GoldenTest.kt | 3 + .../kotlin/org/nixos/gradle2nix/TestUtil.kt | 120 +- .../maven-bom/kotlin/build.gradle.kts | 12 - .../basic/basic-java-project.groovy.json | 146 +- .../basic/basic-java-project.kotlin.json | 146 +- .../basic/basic-kotlin-project.kotlin.json | 3096 +++++----- .../buildsrc/plugin-in-buildsrc.kotlin.json | 1332 ++-- .../golden/dependency/classifier.groovy.json | 42 +- .../golden/dependency/classifier.kotlin.json | 42 +- .../golden/dependency/maven-bom.kotlin.json | 88 +- .../dependency/snapshot-dynamic.groovy.json | 26 +- .../dependency/snapshot-dynamic.kotlin.json | 26 +- .../dependency/snapshot-redirect.groovy.json | 128 +- .../golden/dependency/snapshot.groovy.json | 26 +- .../golden/dependency/snapshot.kotlin.json | 26 +- fixtures/golden/included-build.groovy.json | 78 +- .../settings-buildscript.groovy.json | 354 +- fixtures/golden/ivy/basic.kotlin.json | 52 +- .../resolves-from-default-repo.groovy.json | 1108 ++-- .../resolves-from-default-repo.kotlin.json | 1108 ++-- .../golden/settings/buildscript.groovy.json | 26 +- ...pendency-resolution-management.kotlin.json | 26 +- .../subprojects/multi-module.groovy.json | 240 +- .../subprojects/multi-module.kotlin.json | 240 +- .../basic-java-project/groovy/build.gradle | 0 .../basic-java-project/groovy/settings.gradle | 0 .../kotlin/build.gradle.kts | 0 .../kotlin/settings.gradle.kts | 0 .../kotlin/build.gradle.kts | 8 +- .../kotlin/settings.gradle.kts | 0 .../kotlin/build.gradle.kts | 0 .../kotlin/buildSrc/build.gradle.kts | 0 .../kotlin/buildSrc/settings.gradle.kts | 0 .../com/example/ApplyPluginPublishPlugin.kt | 0 .../kotlin/settings.gradle.kts | 0 .../dependency/classifier/groovy/build.gradle | 0 .../classifier/groovy/settings.gradle | 0 .../classifier/kotlin/build.gradle.kts | 0 .../classifier/kotlin/settings.gradle.kts | 0 .../maven-bom/kotlin/build.gradle.kts | 16 + .../maven-bom/kotlin/settings.gradle.kts | 0 .../snapshot-dynamic/groovy/build.gradle | 5 +- .../snapshot-dynamic/groovy/settings.gradle | 0 .../snapshot-dynamic/kotlin/build.gradle.kts | 5 +- .../kotlin/settings.gradle.kts | 0 .../snapshot-redirect/groovy/build.gradle | 1 + .../snapshot-redirect/groovy/settings.gradle | 0 .../dependency/snapshot/groovy/build.gradle | 5 +- .../snapshot/groovy/settings.gradle | 0 .../snapshot/kotlin/build.gradle.kts | 5 +- .../snapshot/kotlin/settings.gradle.kts | 0 .../included-build/groovy/build.gradle | 5 +- .../groovy/included-child/build.gradle | 5 +- .../groovy/included-child/settings.gradle | 5 +- .../included-build/groovy/settings.gradle | 0 .../settings-buildscript/groovy/build.gradle | 0 .../settings-buildscript/groovy/default.nix | 0 .../groovy/gradle-env.json | 0 .../groovy/gradle-env.nix | 0 .../groovy/semantic-build-versioning.gradle | 0 .../groovy/settings.gradle | 0 .../ivy/basic/kotlin/build.gradle.kts | 0 .../ivy/basic/kotlin/settings.gradle.kts | 0 .../groovy/build.gradle | 0 .../groovy/settings.gradle | 0 .../kotlin/build.gradle.kts | 0 .../kotlin/settings.gradle.kts | 0 .../s3/maven-snapshot/groovy/build.gradle | 0 .../s3/maven-snapshot/groovy/settings.gradle | 0 .../s3/maven-snapshot/kotlin/build.gradle.kts | 0 .../maven-snapshot/kotlin/settings.gradle.kts | 0 .../s3/maven/groovy/build.gradle | 4 +- .../projects/s3/maven/groovy/settings.gradle | 1 + .../s3/maven/kotlin/build.gradle.kts | 0 .../s3/maven/kotlin/settings.gradle.kts | 0 .../buildscript/groovy/settings.gradle | 1 + .../kotlin/build.gradle.kts | 0 .../kotlin/settings.gradle.kts | 9 + .../multi-module/groovy/build.gradle | 0 .../multi-module/groovy/child-a/build.gradle | 0 .../multi-module/groovy/child-b/build.gradle | 0 .../multi-module/groovy/settings.gradle | 0 .../multi-module/kotlin/build.gradle.kts | 0 .../kotlin/child-a/build.gradle.kts | 0 .../kotlin/child-b/build.gradle.kts | 0 .../multi-module/kotlin/settings.gradle.kts | 0 .../oss/oss-parent/7/oss-parent-7.pom | 155 + .../oss/oss-parent/7/oss-parent-7.pom.md5 | 1 + .../oss/oss-parent/7/oss-parent-7.pom.sha1 | 1 + .../oss/oss-parent/maven-metadata.xml | 19 + fixtures/s3/maven/groovy/settings.gradle | 0 .../kotlin/settings.gradle.kts | 6 - gradle-env.json | 5343 ++++++++++------- gradle-env.nix | 185 +- gradle/libs.versions.toml | 10 +- gradle/wrapper/gradle-wrapper.jar | Bin 63721 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 14 +- gradlew.bat | 20 +- model/build.gradle.kts | 5 - .../gradle2nix/model/DependencyCoordinates.kt | 81 +- .../nixos/gradle2nix/model/DependencySet.kt | 8 + .../gradle2nix/model/DependencySource.kt | 26 - .../gradle2nix/model/PluginParameters.kt | 3 - .../org/nixos/gradle2nix/model/Repository.kt | 20 +- .../gradle2nix/model/ResolvedArtifact.kt | 17 +- .../gradle2nix/model/ResolvedConfiguration.kt | 19 - .../gradle2nix/model/ResolvedDependency.kt | 14 +- .../gradle2nix/model/ResolvedMetadata.kt | 9 - .../impl/DefaultDependencyCoordinates.kt | 29 + .../model/impl/DefaultDependencySet.kt | 8 + .../model/impl/DefaultRepository.kt | 11 + .../model/impl/DefaultResolvedArtifact.kt | 9 + .../model/impl/DefaultResolvedDependency.kt | 10 + plugin/build.gradle.kts | 16 +- .../org/nixos/gradle2nix/Gradle2NixPlugin.kt | 43 +- .../gradle2nix/NixDependencyGraphRenderer.kt | 27 - .../AbstractDependencyExtractorPlugin.kt | 148 - .../dependencygraph/DependencyExtractor.kt | 252 + .../DependencyGraphRenderer.kt | 11 - .../dependencygraph/DependencyUrlParser.kt | 158 + .../extractor/DependencyExtractor.kt | 428 -- .../DependencyExtractorBuildService.kt | 18 - .../extractor/LegacyDependencyExtractor.kt | 10 - .../extractor/ResolvedConfigurationFilter.kt | 16 - .../util/BuildOperationTracker.kt | 64 - .../dependencygraph/util/GradleExtensions.kt | 30 - .../dependencygraph/util/PluginParameters.kt | 6 - .../AbstractResolveProjectDependenciesTask.kt | 15 + .../ForceDependencyResolutionPlugin.kt | 6 +- .../LegacyResolveProjectDependenciesTask.kt | 6 +- .../ResolveProjectDependenciesTask.kt | 34 +- .../nixos/gradle2nix/util/GradleExtensions.kt | 27 + .../DependencyUrlParserTest.kt | 58 + settings.gradle.kts | 1 - 144 files changed, 8932 insertions(+), 7760 deletions(-) rename {model/src/main/kotlin/org/nixos/gradle2nix/model => app/src/main/kotlin/org/nixos/gradle2nix}/Version.kt (82%) rename app/src/main/kotlin/org/nixos/gradle2nix/{module => gradle}/GradleModule.kt (98%) delete mode 100644 fixtures/dependency/maven-bom/kotlin/build.gradle.kts rename fixtures/{ => projects}/basic/basic-java-project/groovy/build.gradle (100%) rename fixtures/{ => projects}/basic/basic-java-project/groovy/settings.gradle (100%) rename fixtures/{ => projects}/basic/basic-java-project/kotlin/build.gradle.kts (100%) rename fixtures/{ => projects}/basic/basic-java-project/kotlin/settings.gradle.kts (100%) rename fixtures/{ => projects}/basic/basic-kotlin-project/kotlin/build.gradle.kts (82%) rename fixtures/{ => projects}/basic/basic-kotlin-project/kotlin/settings.gradle.kts (100%) rename fixtures/{ => projects}/buildsrc/plugin-in-buildsrc/kotlin/build.gradle.kts (100%) rename fixtures/{ => projects}/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts (100%) rename fixtures/{ => projects}/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/settings.gradle.kts (100%) rename fixtures/{ => projects}/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com/example/ApplyPluginPublishPlugin.kt (100%) rename fixtures/{ => projects}/buildsrc/plugin-in-buildsrc/kotlin/settings.gradle.kts (100%) rename fixtures/{ => projects}/dependency/classifier/groovy/build.gradle (100%) rename fixtures/{ => projects}/dependency/classifier/groovy/settings.gradle (100%) rename fixtures/{ => projects}/dependency/classifier/kotlin/build.gradle.kts (100%) rename fixtures/{ => projects}/dependency/classifier/kotlin/settings.gradle.kts (100%) create mode 100644 fixtures/projects/dependency/maven-bom/kotlin/build.gradle.kts rename fixtures/{ => projects}/dependency/maven-bom/kotlin/settings.gradle.kts (100%) rename fixtures/{ => projects}/dependency/snapshot-dynamic/groovy/build.gradle (50%) rename fixtures/{ => projects}/dependency/snapshot-dynamic/groovy/settings.gradle (100%) rename fixtures/{ => projects}/dependency/snapshot-dynamic/kotlin/build.gradle.kts (50%) rename fixtures/{ => projects}/dependency/snapshot-dynamic/kotlin/settings.gradle.kts (100%) rename fixtures/{ => projects}/dependency/snapshot-redirect/groovy/build.gradle (89%) rename fixtures/{ => projects}/dependency/snapshot-redirect/groovy/settings.gradle (100%) rename fixtures/{ => projects}/dependency/snapshot/groovy/build.gradle (50%) rename fixtures/{ => projects}/dependency/snapshot/groovy/settings.gradle (100%) rename fixtures/{ => projects}/dependency/snapshot/kotlin/build.gradle.kts (50%) rename fixtures/{ => projects}/dependency/snapshot/kotlin/settings.gradle.kts (100%) rename fixtures/{ => projects}/included-build/groovy/build.gradle (56%) rename fixtures/{ => projects}/included-build/groovy/included-child/build.gradle (56%) rename fixtures/{ => projects}/included-build/groovy/included-child/settings.gradle (51%) rename fixtures/{ => projects}/included-build/groovy/settings.gradle (100%) rename fixtures/{ => projects}/integration/settings-buildscript/groovy/build.gradle (100%) rename fixtures/{ => projects}/integration/settings-buildscript/groovy/default.nix (100%) rename fixtures/{ => projects}/integration/settings-buildscript/groovy/gradle-env.json (100%) rename fixtures/{ => projects}/integration/settings-buildscript/groovy/gradle-env.nix (100%) rename fixtures/{ => projects}/integration/settings-buildscript/groovy/semantic-build-versioning.gradle (100%) rename fixtures/{ => projects}/integration/settings-buildscript/groovy/settings.gradle (100%) rename fixtures/{ => projects}/ivy/basic/kotlin/build.gradle.kts (100%) rename fixtures/{ => projects}/ivy/basic/kotlin/settings.gradle.kts (100%) rename fixtures/{ => projects}/plugin/resolves-from-default-repo/groovy/build.gradle (100%) rename fixtures/{ => projects}/plugin/resolves-from-default-repo/groovy/settings.gradle (100%) rename fixtures/{ => projects}/plugin/resolves-from-default-repo/kotlin/build.gradle.kts (100%) rename fixtures/{ => projects}/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts (100%) rename fixtures/{ => projects}/s3/maven-snapshot/groovy/build.gradle (100%) rename fixtures/{ => projects}/s3/maven-snapshot/groovy/settings.gradle (100%) rename fixtures/{ => projects}/s3/maven-snapshot/kotlin/build.gradle.kts (100%) rename fixtures/{ => projects}/s3/maven-snapshot/kotlin/settings.gradle.kts (100%) rename fixtures/{ => projects}/s3/maven/groovy/build.gradle (87%) create mode 100644 fixtures/projects/s3/maven/groovy/settings.gradle rename fixtures/{ => projects}/s3/maven/kotlin/build.gradle.kts (100%) rename fixtures/{ => projects}/s3/maven/kotlin/settings.gradle.kts (100%) rename fixtures/{ => projects}/settings/buildscript/groovy/settings.gradle (83%) rename fixtures/{ => projects}/settings/dependency-resolution-management/kotlin/build.gradle.kts (100%) create mode 100644 fixtures/projects/settings/dependency-resolution-management/kotlin/settings.gradle.kts rename fixtures/{ => projects}/subprojects/multi-module/groovy/build.gradle (100%) rename fixtures/{ => projects}/subprojects/multi-module/groovy/child-a/build.gradle (100%) rename fixtures/{ => projects}/subprojects/multi-module/groovy/child-b/build.gradle (100%) rename fixtures/{ => projects}/subprojects/multi-module/groovy/settings.gradle (100%) rename fixtures/{ => projects}/subprojects/multi-module/kotlin/build.gradle.kts (100%) rename fixtures/{ => projects}/subprojects/multi-module/kotlin/child-a/build.gradle.kts (100%) rename fixtures/{ => projects}/subprojects/multi-module/kotlin/child-b/build.gradle.kts (100%) rename fixtures/{ => projects}/subprojects/multi-module/kotlin/settings.gradle.kts (100%) create mode 100644 fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom create mode 100644 fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom.md5 create mode 100644 fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom.sha1 create mode 100644 fixtures/repositories/m2/org/sonatype/oss/oss-parent/maven-metadata.xml delete mode 100644 fixtures/s3/maven/groovy/settings.gradle delete mode 100644 fixtures/settings/dependency-resolution-management/kotlin/settings.gradle.kts create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySet.kt delete mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySource.kt delete mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt delete mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedMetadata.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencyCoordinates.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencySet.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultRepository.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedArtifact.kt create mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedDependency.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParser.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/LegacyDependencyExtractor.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/ResolvedConfigurationFilter.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/BuildOperationTracker.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/PluginParameters.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/AbstractResolveProjectDependenciesTask.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt create mode 100644 plugin/src/test/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParserTest.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2bb5458..d3a29e1 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,26 +4,28 @@ plugins { application } -configurations { - register("share") -} +configurations.register("share") dependencies { - implementation(kotlin("reflect")) implementation(project(":model")) implementation(libs.clikt) implementation(libs.gradle.toolingApi) + implementation(libs.kotlinx.coroutines.core) + implementation(libs.okio) implementation(libs.serialization.json) implementation(libs.slf4j.api) runtimeOnly(libs.slf4j.simple) - implementation(libs.okio) implementation(libs.xmlutil) - "share"(project(":plugin", configuration = "shadow")) + "share"(project(":plugin", configuration = "shadow")) { + isTransitive = false + } - testRuntimeOnly(kotlin("reflect")) + //testRuntimeOnly(kotlin("reflect")) testImplementation(libs.kotest.assertions) testImplementation(libs.kotest.runner) + testImplementation(libs.ktor.server.core) + testImplementation(libs.ktor.server.netty) } application { @@ -36,10 +38,6 @@ application { .rename("plugin.*\\.jar", "plugin.jar") } -kotlin { - jvmToolchain(11) -} - sourceSets { test { resources { @@ -80,7 +78,7 @@ tasks { } systemProperties( "org.nixos.gradle2nix.share" to installDist.get().destinationDir.resolve("share"), - "org.nixos.gradle2nix.m2" to rootDir.resolve("fixtures/repositories/m2").toURI().toString() + "org.nixos.gradle2nix.m2" to "http://0.0.0.0:8989/m2" ) } useJUnitPlatform() diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt index fa3844a..e1273f2 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt @@ -1,53 +1,93 @@ package org.nixos.gradle2nix +import java.io.File +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException +import kotlin.io.path.absolutePathString +import kotlinx.coroutines.suspendCancellableCoroutine +import org.gradle.tooling.GradleConnectionException import org.gradle.tooling.GradleConnector import org.gradle.tooling.ProjectConnection -import org.nixos.gradle2nix.model.PARAM_INCLUDE_CONFIGURATIONS -import org.nixos.gradle2nix.model.PARAM_INCLUDE_PROJECTS +import org.gradle.tooling.ResultHandler +import org.gradle.tooling.model.gradle.GradleBuild +import org.nixos.gradle2nix.model.DependencySet import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK -fun connect(config: Config): ProjectConnection = +fun connect(config: Config, projectDir: File = config.projectDir): ProjectConnection = GradleConnector.newConnector() .apply { if (config.gradleVersion != null) { useGradleVersion(config.gradleVersion) } } - .forProjectDirectory(config.projectDir) + .forProjectDirectory(projectDir) .connect() -fun ProjectConnection.build( - config: Config, -) { - newBuild() +suspend fun ProjectConnection.buildModel(): GradleBuild = suspendCancellableCoroutine { continuation -> + val cancellationTokenSource = GradleConnector.newCancellationTokenSource() + + continuation.invokeOnCancellation { cancellationTokenSource.cancel() } + + action { controller -> controller.buildModel } + .withCancellationToken(cancellationTokenSource.token()) + .run(object : ResultHandler { + override fun onComplete(result: GradleBuild) { + continuation.resume(result) + } + + override fun onFailure(failure: GradleConnectionException) { + continuation.resumeWithException(failure) + } + }) +} + +suspend fun ProjectConnection.build(config: Config): DependencySet = suspendCancellableCoroutine { continuation -> + val cancellationTokenSource = GradleConnector.newCancellationTokenSource() + + continuation.invokeOnCancellation { cancellationTokenSource.cancel() } + + action { controller -> controller.getModel(DependencySet::class.java) } + .withCancellationToken(cancellationTokenSource.token()) .apply { if (config.tasks.isNotEmpty()) { forTasks(*config.tasks.toTypedArray()) } else { forTasks(RESOLVE_ALL_TASK) } - if (config.gradleJdk != null) { - setJavaHome(config.gradleJdk) - } - addArguments(config.gradleArgs) - addArguments( - "--gradle-user-home=${config.gradleHome}", - "--init-script=${config.appHome}/init.gradle", - "--write-verification-metadata", "sha256" - ) - if (config.projectFilter != null) { - addArguments("-D$PARAM_INCLUDE_PROJECTS") - } - if (config.configurationFilter != null) { - addArguments("-D$PARAM_INCLUDE_CONFIGURATIONS") + } + .setJavaHome(config.gradleJdk) + .addArguments(config.gradleArgs) + .addArguments( + "--no-parallel", + "--refresh-dependencies", + "--gradle-user-home=${config.gradleHome}", + "--init-script=${config.appHome}/init.gradle", + "--write-verification-metadata", "sha256" + ) + .apply { + if (config.logger.stacktrace) { + addArguments("--stacktrace") } - if (config.logger.verbose) { + if (config.logger.logLevel <= LogLevel.debug) { setStandardOutput(System.err) setStandardError(System.err) } - if (config.logger.stacktrace) { - addArguments("--stacktrace") + if (config.dumpEvents) { + withSystemProperties( + mapOf( + "org.gradle.internal.operations.trace" to + config.outDir.toPath().resolve("debug").absolutePathString() + ) + ) } } - .run() + .run(object : ResultHandler { + override fun onComplete(result: DependencySet) { + continuation.resume(result) + } + + override fun onFailure(failure: GradleConnectionException) { + continuation.resumeWithException(failure) + } + }) } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt index 1303fcd..13d3eb1 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt @@ -5,43 +5,44 @@ import kotlin.system.exitProcess class Logger( val out: PrintStream = System.err, - val verbose: Boolean, - val stacktrace: Boolean = false + val logLevel: LogLevel = LogLevel.warn, + val stacktrace: Boolean = false, ) { fun debug(message: String, error: Throwable? = null) { - if (!stacktrace) return - out.println(message) - if (error == null) return - error.message?.let { println(" Cause: $it") } - error.printStackTrace(out) + if (logLevel <= LogLevel.debug) { + out.println("[DEBUG] $message") + printError(error) + } } - fun log(message: String, error: Throwable? = null) { - if (!verbose) return - out.println(message) - if (error == null) return - error.message?.let { println(" Cause: $it") } - if (stacktrace) error.printStackTrace(out) + fun info(message: String, error: Throwable? = null) { + if (logLevel <= LogLevel.info) { + out.println("[INFO] $message") + printError(error) + } } fun warn(message: String, error: Throwable? = null) { - out.println("Warning: $message") - if (error == null) return - error.message?.let { println(" Cause: $it") } - if (stacktrace) error.printStackTrace(out) + if (logLevel <= LogLevel.warn) { + out.println("[WARN] $message") + printError(error) + } } fun error(message: String, error: Throwable? = null): Nothing { - out.println("Error: $message") - if (error != null) { - error.message?.let { println(" Cause: $it") } - if (stacktrace) error.printStackTrace(out) - } + out.println("[ERROR] $message") + printError(error) exitProcess(1) } - operator fun component1() = ::log + private fun printError(error: Throwable?) { + if (error == null) return + error.message?.let { println(" Cause: $it") } + if (stacktrace) error.printStackTrace(out) + } + + operator fun component1() = ::info operator fun component2() = ::warn operator fun component3() = ::error } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index 2a38fe5..6e81f0a 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -10,11 +10,16 @@ import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.multiple import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.options.validate +import com.github.ajalt.clikt.parameters.types.choice +import com.github.ajalt.clikt.parameters.types.enum import com.github.ajalt.clikt.parameters.types.file import java.io.File +import kotlinx.coroutines.runBlocking import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.json.encodeToStream +import org.gradle.tooling.model.gradle.GradleBuild +import org.nixos.gradle2nix.model.DependencySet data class Config( val appHome: File, @@ -22,11 +27,11 @@ data class Config( val gradleVersion: String?, val gradleJdk: File?, val gradleArgs: List, - val projectFilter: String?, - val configurationFilter: String?, + val outDir: File, val projectDir: File, val tasks: List, val logger: Logger, + val dumpEvents: Boolean ) @OptIn(ExperimentalSerializationApi::class) @@ -36,6 +41,13 @@ val JsonFormat = Json { prettyPrintIndent = " " } +enum class LogLevel { + debug, + info, + warn, + error, +} + class Gradle2Nix : CliktCommand( name = "gradle2nix" ) { @@ -51,17 +63,6 @@ class Gradle2Nix : CliktCommand( help = "JDK home directory to use for launching Gradle (default: ${System.getProperty("java.home")})" ).file(canBeFile = false, canBeDir = true) - private val projectFilter: String? by option( - "--projects", "-p", - metavar = "REGEX", - help = "Regex to filter Gradle projects (default: include all projects)" - ) - - private val configurationFilter: String? by option( - "--configurations", "-c", - metavar = "REGEX", - help = "Regex to filter Gradle configurations (default: include all configurations)") - val outDir: File? by option( "--out-dir", "-o", metavar = "DIR", @@ -74,11 +75,12 @@ class Gradle2Nix : CliktCommand( help = "Prefix for environment files (.json and .nix)") .default("gradle-env") - private val debug: Boolean by option("--debug", help = "Enable debug logging") - .flag(default = false) - - private val quiet: Boolean by option("--quiet", "-q", help = "Disable logging") - .flag(default = false) + private val logLevel: LogLevel by option( + "--log", "-l", + metavar = "LEVEL", + help = "Print messages with priority of at least LEVEL") + .enum() + .default(LogLevel.error) private val projectDir: File by option( "--projectDir", "-d", @@ -99,6 +101,16 @@ class Gradle2Nix : CliktCommand( help = "Gradle tasks to run" ).multiple() + private val dumpEvents: Boolean by option( + "--dump-events", + help = "Dump Gradle event logs to the output directory", + ).flag() + + private val stacktrace: Boolean by option( + "--stacktrace", + help = "Print a stack trace on error" + ).flag() + private val gradleArgs: List by argument( name = "ARGS", help = "Extra arguments to pass to Gradle" @@ -118,7 +130,7 @@ class Gradle2Nix : CliktCommand( } val gradleHome = System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") - val logger = Logger(verbose = !quiet, stacktrace = debug) + val logger = Logger(logLevel = logLevel, stacktrace = stacktrace) val config = Config( File(appHome), @@ -126,11 +138,11 @@ class Gradle2Nix : CliktCommand( gradleVersion, gradleJdk, gradleArgs, - projectFilter, - configurationFilter, + outDir ?: projectDir, projectDir, tasks, - logger + logger, + dumpEvents ) val metadata = File("$projectDir/gradle/verification-metadata.xml") @@ -146,19 +158,37 @@ class Gradle2Nix : CliktCommand( } } + val buildSrcs = connect(config).use { connection -> + val root = runBlocking { connection.buildModel() } + val builds: List = buildList { + add(root) + addAll(root.editableBuilds) + } + builds.mapNotNull { build -> + build.rootProject.projectDirectory.resolve("buildSrc").takeIf { it.exists() } + } + } + + val dependencySets = mutableListOf() + connect(config).use { connection -> - connection.build(config) + dependencySets.add(runBlocking { connection.build(config) }) + } + + for (buildSrc in buildSrcs) { + connect(config, buildSrc).use { connection -> + dependencySets.add(runBlocking { connection.build(config) }) + } } val env = try { - processDependencies(config) + processDependencies(config, dependencySets) } catch (e: Throwable) { logger.error("dependency parsing failed", e) } - val outDir = outDir ?: projectDir - val json = outDir.resolve("$envFile.json") - logger.log("Writing environment to $json") + val json = config.outDir.resolve("$envFile.json") + logger.info("Writing environment to $json") json.outputStream().buffered().use { output -> JsonFormat.encodeToStream(env, output) } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt index 6050acf..7d8b8c0 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -4,23 +4,13 @@ import org.nixos.gradle2nix.metadata.Artifact as ArtifactMetadata import java.io.File import java.io.IOException import java.net.URI -import java.net.URL -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.SerializationException -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.decodeFromStream import okio.ByteString.Companion.decodeHex import okio.HashingSource import okio.blackholeSink import okio.buffer import okio.source -import org.nixos.gradle2nix.model.Repository -import org.nixos.gradle2nix.model.ResolvedConfiguration -import org.nixos.gradle2nix.env.ArtifactFile -import org.nixos.gradle2nix.env.ArtifactSet +import org.nixos.gradle2nix.env.Artifact import org.nixos.gradle2nix.env.Env -import org.nixos.gradle2nix.env.Module -import org.nixos.gradle2nix.env.ModuleId import org.nixos.gradle2nix.metadata.Checksum import org.nixos.gradle2nix.metadata.Component import org.nixos.gradle2nix.metadata.Md5 @@ -30,239 +20,100 @@ import org.nixos.gradle2nix.metadata.Sha512 import org.nixos.gradle2nix.metadata.VerificationMetadata import org.nixos.gradle2nix.metadata.parseVerificationMetadata import org.nixos.gradle2nix.model.DependencyCoordinates -import org.nixos.gradle2nix.model.Version -import org.nixos.gradle2nix.module.GradleModule -import org.nixos.gradle2nix.module.Variant +import org.nixos.gradle2nix.model.DependencySet -// Local Maven repository for testing -private val m2 = System.getProperty("org.nixos.gradle2nix.m2") - -private fun shouldSkipRepository(repository: Repository): Boolean { - return repository.artifactResources.all { it.startsWith("file:") && (m2 == null || !it.startsWith(m2)) } || - repository.metadataResources.all { it.startsWith("file:") && (m2 == null || !it.startsWith(m2)) } -} - -fun processDependencies(config: Config): Env { +fun processDependencies( + config: Config, + dependencySets: Iterable +): Env { val verificationMetadata = readVerificationMetadata(config) - val verificationComponents = verificationMetadata?.components?.associateBy { it.id } ?: emptyMap() - val moduleCache = mutableMapOf() - val pomCache = mutableMapOf?>() - val ivyCache = mutableMapOf?>() - val configurations = readDependencyGraph(config) - - val repositories = configurations - .flatMap { it.repositories } - .associateBy { it.id } - .filterNot { (id, repo) -> - if (shouldSkipRepository(repo)) { - config.logger.warn("$id: all URLs are files; skipping") - true - } else { - false - } - } - if (repositories.isEmpty()) { - config.logger.warn("no repositories found in any configuration") - return emptyMap() - } - config.logger.debug("Repositories:\n ${repositories.values.joinToString("\n ")}") - - return configurations.asSequence() - .flatMap { it.allDependencies.asSequence() } - .filterNot { it.repository == null || it.repository !in repositories } - .groupBy { ModuleId(it.id.group, it.id.module) } - .mapValues { (_, deps) -> - val byVersion = deps.groupBy { it.id } - .mapValues { (componentId, deps) -> - val dep = MergedDependency( - id = componentId, - repositories = deps.mapNotNull { repositories[it.repository] }.distinct() - ) - val component = verificationComponents[componentId] - ?: verifyComponentFilesInCache(config, componentId) - ?: verifyComponentFilesInTestRepository(config, componentId) - ?: config.logger.error("$componentId: no dependency metadata found") - - val gradleModule = moduleCache.getOrPut(componentId) { - maybeDownloadGradleModule(config.logger, component, dep.repositories)?.artifact?.second - } - val pomArtifact = pomCache.getOrPut(componentId) { - maybeDownloadMavenPom(config.logger, component, dep.repositories, gradleModule) - } - val ivyArtifact = ivyCache.getOrPut(componentId) { - maybeDownloadIvyDescriptor(config.logger, component, dep.repositories) - } - - val files = buildMap { - if (pomArtifact != null) put(pomArtifact.first, pomArtifact.second) - if (ivyArtifact != null) put(ivyArtifact.first, ivyArtifact.second) - for (artifact in component.artifacts) { - put( - artifact.name, - ArtifactFile( - urls = dep.repositories.flatMap { repo -> - artifactUrls(config.logger, componentId, artifact.name, repo, gradleModule) - }.distinct(), - hash = artifact.checksums.first().toSri() + val verificationComponents = verificationMetadata?.components?.associateBy { it.id.id } ?: emptyMap() + + return buildMap> { + for (dependencySet in dependencySets) { + val env = dependencySet.toEnv(config, verificationComponents) + + for ((id, artifacts) in env) { + merge(id, artifacts) { a, b -> + buildMap { + putAll(a) + for ((name, artifact) in b) { + merge(name, artifact) { aa, ba -> + check(aa.hash == ba.hash) { + config.logger.error(""" + Conflicting hashes found for $id:$name: + 1: ${aa.hash} + 2: ${ba.hash} + """.trimIndent()) + } + + Artifact( + (aa.urls + ba.urls).distinct().sorted(), + aa.hash ) - ) + } } - }.toSortedMap() - - ArtifactSet(files) + } } - .mapKeys { Version(it.key.version) } - .toSortedMap(Version.Comparator.reversed()) - Module(byVersion) + } } - .toSortedMap(compareBy(ModuleId::toString)) + }.mapValues { (_, artifacts) -> + artifacts.toSortedMap() + }.toSortedMap(coordinatesComparator) + .mapKeys { (coordinates, _) -> coordinates.id } +} + +private fun DependencySet.toEnv(config: Config, verificationComponents: Map): Map> { + return dependencies.associate { dep -> + val component = verificationComponents[dep.coordinates.id] + ?: verifyComponentFilesInCache(config, dep.coordinates) + ?: config.logger.error("${dep.coordinates}: no dependency metadata found") + + dep.coordinates to dep.artifacts.mapNotNull { resolvedArtifact -> + val artifact = component.artifacts.find { it.name == resolvedArtifact.name } + ?.let { Artifact(resolvedArtifact.urls.sorted(), it.checksums.first().toSri()) } + ?: downloadArtifact(resolvedArtifact.urls.sorted()) + artifact?.let { resolvedArtifact.filename to it } + }.sortedBy { it.first }.toMap() + } } private fun readVerificationMetadata(config: Config): VerificationMetadata? { return parseVerificationMetadata(config.logger, config.projectDir.resolve("gradle/verification-metadata.xml")) } -@OptIn(ExperimentalSerializationApi::class) -private fun readDependencyGraph(config: Config): List { - return config.projectDir.resolve("build/reports/nix-dependency-graph/dependency-graph.json") - .inputStream() - .buffered() - .use { input -> Json.decodeFromStream(input) } -} - private fun verifyComponentFilesInCache( config: Config, id: DependencyCoordinates, ): Component? { - val cacheDir = with(id) { config.gradleHome.resolve("caches/modules-2/files-2.1/$group/$module/$version") } + val cacheDir = with(id) { config.gradleHome.resolve("caches/modules-2/files-2.1/$group/$artifact/$version") } if (!cacheDir.exists()) { return null } val verifications = cacheDir.walk().filter { it.isFile }.map { f -> - ArtifactMetadata(f.name, sha256 = Sha256(f.sha256())) - } - config.logger.log("$id: obtained artifact hashes from Gradle cache.") - return Component(id, verifications.toList()) -} - -private fun verifyComponentFilesInTestRepository( - config: Config, - id: DependencyCoordinates -): Component? { - if (m2 == null) return null - val dir = with(id) { - File(URI.create(m2)).resolve("${group.replace(".", "/")}/$module/$version") - } - if (!dir.exists()) { - config.logger.log("$id: not found in m2 repository; tried $dir") - return null + ArtifactMetadata(f.name.replaceFirst(id.version, id.timestampedVersion), sha256 = Sha256(f.sha256())) } - val verifications = dir.walk().filter { it.isFile && it.name.startsWith(id.module) }.map { f -> - ArtifactMetadata( - f.name, - sha256 = Sha256(f.sha256()) - ) - } - config.logger.log("$id: obtained artifact hashes from test Maven repository.") + config.logger.info("${id.id}: obtained artifact hashes from Gradle cache.") return Component(id, verifications.toList()) } -private fun maybeDownloadGradleModule( - logger: Logger, - component: Component, - repos: List -): ArtifactDownload>? { - if (component.artifacts.none { it.name.endsWith(".module") }) return null - val filename = with(component.id) { "$module-$version.module" } - return maybeDownloadArtifact(logger, component.id, filename, repos)?.let { artifact -> - try { - ArtifactDownload( - filename to JsonFormat.decodeFromString(artifact.artifact), - artifact.url, - artifact.hash - ) - } catch (e: SerializationException) { - logger.warn("${component.id}: failed to parse Gradle module metadata from ${artifact.url}") - null - } - } -} - -private fun maybeDownloadMavenPom( - logger: Logger, - component: Component, - repos: List, - gradleModule: GradleModule? -): Pair? { - if (component.artifacts.any { it.name.endsWith(".pom") }) return null - val pomRepos = repos.filter { "mavenPom" in it.metadataSources } - if (pomRepos.isEmpty()) return null - val filename = with(component.id) { "$module-$version.pom" } - - return maybeDownloadArtifact(logger, component.id, filename, pomRepos)?.let { artifact -> - filename to ArtifactFile( - urls = pomRepos.flatMap { repo -> - artifactUrls(logger, component.id, filename, repo, gradleModule) - }.distinct(), - hash = artifact.hash.toSri() +private fun downloadArtifact( + urls: List +): Artifact? { + return maybeDownloadText(urls)?.let { + Artifact( + urls, + it.hash.toSri() ) } } -private fun maybeDownloadIvyDescriptor( - logger: Logger, - component: Component, - repos: List, -): Pair? { - val ivyRepos = repos.filter { "ivyDescriptor" in it.metadataSources } - if (ivyRepos.isEmpty()) return null - - val urls = ivyRepos - .flatMap { repo -> - val attributes = attributes(component.id, repo) - repo.metadataResources.mapNotNull { fill(it, attributes).takeIf(::isUrlComplete) } - } - .filter { url -> - component.artifacts.none { url.substringAfterLast('/') == it.name } - } - - var artifact: ArtifactDownload? = null - - for (url in urls) { - try { - val source = HashingSource.sha256(URL(url).openStream().source()) - val text = source.buffer().readUtf8() - val hash = source.hash - artifact = ArtifactDownload(text, url, Sha256(hash.hex())) - break - } catch (e: IOException) { - // Pass - } - } - - if (artifact == null) { - logger.debug("ivy descriptor not found in urls: $urls") - return null - } - return artifact.artifact to ArtifactFile( - urls = urls, - hash = artifact.hash.toSri() - ) -} - -private fun maybeDownloadArtifact( - logger: Logger, - id: DependencyCoordinates, - filename: String, - repos: List +private fun maybeDownloadText( + urls: List, ): ArtifactDownload? { - val urls = repos.flatMap { artifactUrls(logger, id, filename, it, null)} - - logger.debug("artifact $filename: $urls") - for (url in urls) { try { - val source = HashingSource.sha256(URL(url).openStream().source()) + val source = HashingSource.sha256(URI(url).toURL().openStream().source()) val text = source.buffer().readUtf8() val hash = source.hash return ArtifactDownload(text, url, Sha256(hash.hex())) @@ -270,8 +121,6 @@ private fun maybeDownloadArtifact( // Pass } } - - logger.debug("artifact $filename not found in any repository") return null } @@ -281,7 +130,7 @@ private fun File.sha256(): String { return source.hash.hex() } -private fun Checksum.toSri(): String { +internal fun Checksum.toSri(): String { val hash = value.decodeHex().base64() return when (this) { is Md5 -> "md5-$hash" @@ -291,96 +140,13 @@ private fun Checksum.toSri(): String { } } -private fun artifactUrls( - logger: Logger, - id: DependencyCoordinates, - filename: String, - repository: Repository, - module: GradleModule?, -): List { - val groupAsPath = id.group.replace(".", "/") - - val repoFilename = module?.let { m -> - m.variants - .asSequence() - .flatMap(Variant::files) - .find { it.name == filename } - }?.url ?: filename - - val attributes = mutableMapOf( - "organisation" to if (repository.m2Compatible) groupAsPath else id.group, - "module" to id.module, - "revision" to id.version, - ) + fileAttributes(repoFilename, id.version) - - val resources = when (attributes["ext"]) { - "pom" -> if ("mavenPom" in repository.metadataSources) repository.metadataResources else repository.artifactResources - "xml" -> if ("ivyDescriptor" in repository.metadataSources) repository.metadataResources else repository.artifactResources - "module" -> if ("gradleMetadata" in repository.metadataSources || "ignoreGradleMetadataRedirection" !in repository.metadataSources) { - repository.metadataResources - } else { - repository.artifactResources - } - else -> repository.artifactResources - }.map { it.replaceFirst("-[revision]", "-${id.artifactVersion}") } - - val urls = mutableListOf() - - for (resource in resources) { - val location = attributes.entries.fold(fill(resource, attributes)) { acc, (key, value) -> - acc.replace("[$key]", value) - } - if (location.none { it == '[' || it == ']' }) { - urls.add(location) - } else { - logger.warn("failed to construct artifact URL: $location") - } - } - - return urls.distinct() -} - -private val optionalRegex = Regex("\\(([^)]+)\\)") -private val attrRegex = Regex("\\[([^]]+)]") - -private fun fill(template: String, attributes: Map): String { - return optionalRegex.replace(template) { match -> - attrRegex.find(match.value)?.groupValues?.get(1)?.let { attr -> - attributes[attr]?.takeIf { it.isNotBlank() }?.let { value -> - match.groupValues[1].replace("[$attr]", value) - } - } ?: "" - } -} - -private fun isUrlComplete(url: String): Boolean = !url.contains("[") - -private fun attributes(id: DependencyCoordinates, repository: Repository): Map = buildMap { - put("organisation", if (repository.m2Compatible) id.group.replace(".", "/") else id.group) - put("module", id.module) - put("revision", id.version) -} - -// Gradle persists artifacts with the Maven artifact pattern, which may not match the repository's pattern. -private fun fileAttributes(file: String, version: String): Map { - val parts = Regex("(.+)-$version(-([^.]+))?(\\.(.+))?").matchEntire(file) ?: return emptyMap() - - val (artifact, _, classifier, _, ext) = parts.destructured - - return buildMap { - put("artifact", artifact) - put("classifier", classifier) - put("ext", ext) - } -} - -private data class MergedDependency( - val id: DependencyCoordinates, - val repositories: List -) - private data class ArtifactDownload( val artifact: T, val url: String, val hash: Checksum ) + +private val coordinatesComparator: Comparator = compareBy { it.group } + .thenBy { it.artifact } + .thenByDescending { Version(it.version) } + .thenByDescending { it.timestamp } diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/Version.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Version.kt similarity index 82% rename from model/src/main/kotlin/org/nixos/gradle2nix/model/Version.kt rename to app/src/main/kotlin/org/nixos/gradle2nix/Version.kt index 8219268..c583621 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/Version.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Version.kt @@ -1,16 +1,7 @@ -package org.nixos.gradle2nix.model +package org.nixos.gradle2nix import java.util.concurrent.ConcurrentHashMap -import kotlinx.serialization.KSerializer -import kotlinx.serialization.Serializable -import kotlinx.serialization.descriptors.PrimitiveKind -import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder - -@Serializable(Version.Serializer::class) class Version(val source: String, val parts: List, base: Version?) : Comparable { private val base: Version @@ -35,26 +26,6 @@ class Version(val source: String, val parts: List, base: Version?) : Com override fun hashCode(): Int = source.hashCode() - object Comparator : kotlin.Comparator { - override fun compare(o1: Version, o2: Version): Int = - Version.compare(o1, o2) - } - - internal object Serializer : KSerializer { - override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor( - Version::class.qualifiedName!!, - PrimitiveKind.STRING - ) - - override fun serialize(encoder: Encoder, value: Version) { - encoder.encodeString(value.source) - } - - override fun deserialize(decoder: Decoder): Version { - return Version(decoder.decodeString()) - } - } - companion object { private val SPECIAL_MEANINGS: Map = mapOf( "dev" to -1, diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt b/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt index 2176a31..c74d9db 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt @@ -1,68 +1,22 @@ package org.nixos.gradle2nix.env -import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable -import kotlinx.serialization.SerializationException -import kotlinx.serialization.descriptors.PrimitiveKind -import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder -import org.nixos.gradle2nix.model.Version -typealias Env = Map +typealias Env = Map> @Serializable -@JvmInline -value class Module( - val versions: Map, -) - -@Serializable -@JvmInline -value class ArtifactSet( - val files: Map -) - -@Serializable -data class ArtifactFile internal constructor( +data class Artifact internal constructor( val urls: List, val hash: String, ) { companion object { - operator fun invoke(urls: List, hash: String) = ArtifactFile(urls.sorted(), hash) - } -} - -@Serializable(ModuleId.Serializer::class) -data class ModuleId( - val group: String, - val name: String, -) : Comparable { - - override fun compareTo(other: ModuleId): Int = - compareValuesBy(this, other, ModuleId::group, ModuleId::name) - - override fun toString(): String = "$group:$name" - - companion object Serializer : KSerializer { - override val descriptor: SerialDescriptor get() = PrimitiveSerialDescriptor( - ModuleId::class.qualifiedName!!, - PrimitiveKind.STRING + operator fun invoke( + urls: List, + hash: String + ) = Artifact( + urls.sorted(), + hash ) - - override fun serialize(encoder: Encoder, value: ModuleId) { - encoder.encodeString(value.toString()) - } - - override fun deserialize(decoder: Decoder): ModuleId { - val encoded = decoder.decodeString() - val parts = encoded.split(":") - if (parts.size != 2 || parts.any(String::isBlank)) { - throw SerializationException("invalid module id: $encoded") - } - return ModuleId(parts[0], parts[1]) - } } } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/module/GradleModule.kt b/app/src/main/kotlin/org/nixos/gradle2nix/gradle/GradleModule.kt similarity index 98% rename from app/src/main/kotlin/org/nixos/gradle2nix/module/GradleModule.kt rename to app/src/main/kotlin/org/nixos/gradle2nix/gradle/GradleModule.kt index bc08c63..daf6766 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/module/GradleModule.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/gradle/GradleModule.kt @@ -1,4 +1,4 @@ -package org.nixos.gradle2nix.module +package org.nixos.gradle2nix.gradle import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt index 3bd95d9..83d456b 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt @@ -10,6 +10,7 @@ import nl.adaptivity.xmlutil.serialization.XmlSerialName import nl.adaptivity.xmlutil.xmlStreaming import org.nixos.gradle2nix.Logger import org.nixos.gradle2nix.model.DependencyCoordinates +import org.nixos.gradle2nix.model.impl.DefaultDependencyCoordinates sealed interface Coordinates { val group: String? @@ -40,10 +41,10 @@ data class Configuration( @Serializable sealed interface Checksum { - abstract val value: String - abstract val origin: String? - abstract val reason: String? - abstract val alternatives: List + val value: String + val origin: String? + val reason: String? + val alternatives: List } @Serializable @@ -107,11 +108,11 @@ data class Component( val timestamp: String? = null, val artifacts: List = emptyList(), ) { - val id: DependencyCoordinates get() = DependencyCoordinates(group, name, version, timestamp) + val id: DependencyCoordinates get() = DefaultDependencyCoordinates(group, name, version, timestamp) constructor(id: DependencyCoordinates, artifacts: List) : this( id.group, - id.module, + id.artifact, id.version, id.timestamp, artifacts diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt b/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt index 0f521ee..e07c275 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt @@ -1,8 +1,11 @@ package org.nixos.gradle2nix +import io.kotest.core.extensions.install import io.kotest.core.spec.style.FunSpec class GoldenTest : FunSpec({ + install(MavenRepo) + context("basic") { golden("basic/basic-java-project") golden("basic/basic-kotlin-project") diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt index 8e1d2a7..3e5936d 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt @@ -1,20 +1,37 @@ package org.nixos.gradle2nix import io.kotest.assertions.fail +import io.kotest.assertions.withClue import io.kotest.common.ExperimentalKotest import io.kotest.common.KotestInternal +import io.kotest.core.extensions.MountableExtension +import io.kotest.core.listeners.AfterSpecListener import io.kotest.core.names.TestName import io.kotest.core.source.sourceRef +import io.kotest.core.spec.Spec import io.kotest.core.test.NestedTest import io.kotest.core.test.TestScope import io.kotest.core.test.TestType import io.kotest.matchers.equals.beEqual import io.kotest.matchers.file.shouldBeAFile +import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.should +import io.kotest.matchers.shouldBe +import io.ktor.http.ContentType +import io.ktor.http.Url +import io.ktor.server.engine.embeddedServer +import io.ktor.server.http.content.staticFiles +import io.ktor.server.netty.Netty +import io.ktor.server.netty.NettyApplicationEngine +import io.ktor.server.routing.routing import java.io.File import java.io.FileFilter import java.nio.file.Files import java.nio.file.Paths +import kotlin.random.Random +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerializationException import kotlinx.serialization.encodeToString @@ -23,6 +40,7 @@ import kotlinx.serialization.json.decodeFromStream import kotlinx.serialization.json.encodeToStream import okio.use import org.nixos.gradle2nix.env.Env +import org.nixos.gradle2nix.metadata.parseVerificationMetadata private val app = Gradle2Nix() @@ -32,7 +50,7 @@ private val json = Json { prettyPrintIndent = " " } -val testLogger = Logger(verbose = true, stacktrace = true) +val testLogger = Logger(logLevel = LogLevel.debug, stacktrace = true) fun fixture(path: String): File { return Paths.get("../fixtures", path).toFile() @@ -42,10 +60,10 @@ fun fixture(path: String): File { suspend fun TestScope.fixture( project: String, vararg args: String, - test: suspend TestScope.(Env) -> Unit + test: suspend TestScope.(File, Env) -> Unit ) { val tmp = Paths.get("build/tmp/gradle2nix").apply { toFile().mkdirs() } - val baseDir = Paths.get("../fixtures", project).toFile() + val baseDir = Paths.get("../fixtures/projects", project).toFile() val children = baseDir.listFiles(FileFilter { it.isDirectory && (it.name == "groovy" || it.name == "kotlin") }) ?.toList() val cases = if (children.isNullOrEmpty()) { @@ -73,13 +91,22 @@ suspend fun TestScope.fixture( if (!tempDir.resolve("settings.gradle").exists() && !tempDir.resolve("settings.gradle.kts").exists()) { Files.createFile(tempDir.resolve("settings.gradle").toPath()) } - app.main(listOf("-d", tempDir.toString()) + listOf("--debug") + args.withM2() + "-Dorg.gradle.internal.operations.trace=${tempDir.resolve("build").absolutePath}") + app.main( + listOf( + "-d", tempDir.toString(), + "--log", "debug", + "--stacktrace", + "--dump-events", + "--", + "-Dorg.nixos.gradle2nix.m2=$m2" + ) + args + ) val file = tempDir.resolve("${app.envFile}.json") file.shouldBeAFile() val env: Env = file.inputStream().buffered().use { input -> Json.decodeFromStream(input) } - test(env) + test(tempDir, env) } ) } @@ -92,7 +119,7 @@ suspend fun TestScope.golden( project: String, vararg args: String, ) { - fixture(project, *args) { env -> + fixture(project, *args) { dir, env -> val filename = "${testCase.name.testName}.json" val goldenFile = File("../fixtures/golden/$filename") if (updateGolden) { @@ -111,14 +138,83 @@ suspend fun TestScope.golden( } json.encodeToString(env) should beEqual(goldenData) } + + val metadata = parseVerificationMetadata( + testLogger, + dir.resolve("gradle/verification-metadata.xml") + )!! + + for (component in metadata.components) { + val componentId = component.id.id + + withClue("env should contain component $componentId") { + env[componentId].shouldNotBeNull() + } + } } } -val m2 = System.getProperty("org.nixos.gradle2nix.m2") +val m2: String = requireNotNull(System.getProperty("org.nixos.gradle2nix.m2")) + +object MavenRepo : MountableExtension, AfterSpecListener { + class Config { + var repository: File = File("../fixtures/repositories/m2") + var path: String = "" + var port: Int? = null + var host: String = DEFAULT_HOST + } + + const val DEFAULT_HOST = "0.0.0.0" + + private val coroutineScope = CoroutineScope(Dispatchers.Default) + private var server: NettyApplicationEngine? = null + private val config = Config() + + init { + require(config.repository.exists()) { + "test repository doesn't exist: ${config.repository}" + } + val m2Url = Url(m2) + config.path = m2Url.encodedPath + config.host = m2Url.host + config.port = m2Url.port + } + + override fun mount(configure: Config.() -> Unit): NettyApplicationEngine { + config.configure() + // try 3 times to find a port if random + return tryStart(3).also { this.server = it } + } + + private fun tryStart(attempts: Int): NettyApplicationEngine { + return try { + val p = config.port ?: Random.nextInt(10000, 65000) + val s = embeddedServer(Netty, port = p, host = config.host) { + routing { + staticFiles( + remotePath = config.path, + dir = config.repository, + index = null, + ) { + enableAutoHeadResponse() + contentType { path -> + when (path.extension) { + "pom", "xml" -> ContentType.Text.Xml + "jar" -> ContentType("application", "java-archive") + else -> ContentType.Text.Plain + } + } + } + } + } + coroutineScope.launch { s.start(wait = true) } + s + } catch (e: Throwable) { + if (config.port == null && attempts > 0) tryStart(attempts - 1) else throw e + } + } -private fun Array.withM2(): List { - val args = toMutableList() - if (args.indexOf("--") < 0) args.add("--") - args.add("-Dorg.nixos.gradle2nix.m2=$m2") - return args + override suspend fun afterSpec(spec: Spec) { + server?.stop() + } } diff --git a/fixtures/dependency/maven-bom/kotlin/build.gradle.kts b/fixtures/dependency/maven-bom/kotlin/build.gradle.kts deleted file mode 100644 index 2734242..0000000 --- a/fixtures/dependency/maven-bom/kotlin/build.gradle.kts +++ /dev/null @@ -1,12 +0,0 @@ -plugins { - java -} - -repositories { - maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } -} - -dependencies { - implementation(platform("io.micrometer:micrometer-bom:1.5.1")) - implementation("io.micrometer:micrometer-core") -} diff --git a/fixtures/golden/basic/basic-java-project.groovy.json b/fixtures/golden/basic/basic-java-project.groovy.json index 6bdf5d6..e7f7e32 100644 --- a/fixtures/golden/basic/basic-java-project.groovy.json +++ b/fixtures/golden/basic/basic-java-project.groovy.json @@ -1,82 +1,88 @@ { - "com.squareup.moshi:moshi": { - "1.8.0": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" - } + "com.squareup.moshi:moshi:1.8.0": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" } }, - "com.squareup.okio:okio": { - "2.2.2": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" - } + "com.squareup.moshi:moshi-parent:1.8.0": { + "moshi-parent-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom" + ], + "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c=" } }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "1.2.60": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" - } + "com.squareup.okio:okio:2.2.2": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "1.2.60": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" - } + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, - "org.jetbrains:annotations": { - "13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + } + }, + "org.sonatype.oss:oss-parent:7": { + "oss-parent-7.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" + ], + "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } } } \ No newline at end of file diff --git a/fixtures/golden/basic/basic-java-project.kotlin.json b/fixtures/golden/basic/basic-java-project.kotlin.json index 6bdf5d6..e7f7e32 100644 --- a/fixtures/golden/basic/basic-java-project.kotlin.json +++ b/fixtures/golden/basic/basic-java-project.kotlin.json @@ -1,82 +1,88 @@ { - "com.squareup.moshi:moshi": { - "1.8.0": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" - } + "com.squareup.moshi:moshi:1.8.0": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" } }, - "com.squareup.okio:okio": { - "2.2.2": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" - } + "com.squareup.moshi:moshi-parent:1.8.0": { + "moshi-parent-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom" + ], + "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c=" } }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "1.2.60": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" - } + "com.squareup.okio:okio:2.2.2": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" + }, + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "1.2.60": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" - } + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, - "org.jetbrains:annotations": { - "13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" + } + }, + "org.sonatype.oss:oss-parent:7": { + "oss-parent-7.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" + ], + "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } } } \ No newline at end of file diff --git a/fixtures/golden/basic/basic-kotlin-project.kotlin.json b/fixtures/golden/basic/basic-kotlin-project.kotlin.json index 2aca94e..d76a46d 100644 --- a/fixtures/golden/basic/basic-kotlin-project.kotlin.json +++ b/fixtures/golden/basic/basic-kotlin-project.kotlin.json @@ -1,1428 +1,1676 @@ { - "com.fasterxml.jackson.core:jackson-annotations": { - "2.10.1": { - "jackson-annotations-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar" - ], - "hash": "sha256-Zz+K4Wvs6k+pN0BLOoUUF/r0LfO7xZICi74r/gzJ2Ms=" - }, - "jackson-annotations-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.pom" - ], - "hash": "sha256-7OURA2Z+iBHw/3RYmGryFxhi5UuYE8FwjPk3kESH+Vw=" - } - } - }, - "com.fasterxml.jackson.core:jackson-core": { - "2.10.1": { - "jackson-core-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar" - ], - "hash": "sha256-eb/73NNJ9ppawlLitAlhMXBDhq9PoU2VOV6poOQjzzM=" - }, - "jackson-core-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.pom" - ], - "hash": "sha256-EXkJC3ILJankJmQwLwM0oiQLMMcoC0IkJeT0UZ5bLP4=" - } - } - }, - "com.fasterxml.jackson.core:jackson-databind": { - "2.10.1": { - "jackson-databind-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar" - ], - "hash": "sha256-LSP0cAFJIjNWWt9aNPIl8q6JVkzuCAJIc+w2t4Qu3kY=" - }, - "jackson-databind-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.pom" - ], - "hash": "sha256-OGlQZeP1ILBbvY6lmC5ba1vZ+FYpZ7g9rLfQerCMauc=" - } - } - }, - "com.github.gundy:semver4j": { - "0.16.4": { - "semver4j-0.16.4-nodeps.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4-nodeps.jar" - ], - "hash": "sha256-P1nspRY3TM1P01UWJb9Q+KSxkfcAUI985IZkYKYSivA=" - }, - "semver4j-0.16.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom" - ], - "hash": "sha256-MgAdskQ7M53SH1t5/ynRreci0boIDCFL3oGfD3LRYE0=" - } - } - }, - "com.github.pengrad:java-telegram-bot-api": { - "4.6.0": { - "java-telegram-bot-api-4.6.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.jar" - ], - "hash": "sha256-w4H/cErewM/mZbrnUYtwiT5Czf83Smb0qYxGfeG/TdU=" - }, - "java-telegram-bot-api-4.6.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.pom" - ], - "hash": "sha256-nZxF//5qwbIbZffUK0k2T/gnnX5pLU9wF0BLLhC+YsE=" - } - } - }, - "com.google.code.findbugs:jsr305": { - "3.0.2": { - "jsr305-3.0.2.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" - ], - "hash": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=" - }, - "jsr305-3.0.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom" - ], - "hash": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4=" - } - } - }, - "com.google.code.gson:gson": { - "2.8.9": { - "gson-2.8.9.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar" - ], - "hash": "sha256-05mSkYVd5JXJTHQ3YbirUXbP6r4oGlqw2OjUUyb9cD4=" - }, - "gson-2.8.9.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom" - ], - "hash": "sha256-r97W5qaQ+/OtSuZa2jl/CpCl9jCzA9G3QbnJeSb91N4=" - } - }, - "2.8.5": { - "gson-2.8.5.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar" - ], - "hash": "sha256-IzoBSfw2XJ9u29aDz+JmsZvcdzvpjqva9rPJJLSOfYE=" - }, - "gson-2.8.5.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom" - ], - "hash": "sha256-uDCFV6f8zJLZ/nyM0FmSWLNhKF0uzedontqYhDJVoJI=" - } - } - }, - "com.google.errorprone:error_prone_annotations": { - "2.3.4": { - "error_prone_annotations-2.3.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar" - ], - "hash": "sha256-uvfW6pfOYGxT4RtoVLpfLOfvXCTd3wr6GNEmC9JbACw=" - }, - "error_prone_annotations-2.3.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.pom" - ], - "hash": "sha256-EyZziktPfMrPYHuGahH7hRk+9g9qWUYRh85yZfm+W+0=" - } - } - }, - "com.google.guava:failureaccess": { - "1.0.1": { - "failureaccess-1.0.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" - ], - "hash": "sha256-oXHuTHNN0tqDfksWvp30Zhr6typBra8x64Tf2vk2yiY=" - }, - "failureaccess-1.0.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom" - ], - "hash": "sha256-6WBCznj+y6DaK+lkUilHyHtAopG1/TzWcqQ0kkEDxLk=" - } - } - }, - "com.google.guava:guava": { - "29.0-jre": { - "guava-29.0-jre.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.jar" - ], - "hash": "sha256-sixftm1h57lSJTHQSy+RW1FY6AqgtA7nKCyL+wew2iU=" - }, - "guava-29.0-jre.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.pom" - ], - "hash": "sha256-kCfpNAmJA9KH8bphyLZfAdHR4dp6b7zAS/PeBUQBRCY=" - } - } - }, - "com.google.guava:listenablefuture": { - "9999.0-empty-to-avoid-conflict-with-guava": { - "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" - ], - "hash": "sha256-s3KgN9QjCqV/vv/e8w/WEj+cDC24XQrO0AyRuXTzP5k=" - }, - "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom" - ], - "hash": "sha256-GNSx2yYVPU5VB5zh92ux/gXNuGLvmVSojLzE/zi4Z5s=" - } - } - }, - "com.google.j2objc:j2objc-annotations": { - "1.3": { - "j2objc-annotations-1.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" - ], - "hash": "sha256-Ia8wySJnvWEiwOC00gzMtmQaN+r5VsZUDsRx1YTmSns=" - }, - "j2objc-annotations-1.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom" - ], - "hash": "sha256-X6yoJLoRW+5FhzAzff2y/OpGui/XdNQwTtvzD6aj8FU=" - } - } - }, - "com.natpryce:konfig": { - "1.6.10.0": { - "konfig-1.6.10.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.jar" - ], - "hash": "sha256-1Va6vANYRVP1/TzEaJTF6jMxCSv7qufqYm1bjUznk7s=" - }, - "konfig-1.6.10.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.pom" - ], - "hash": "sha256-1NTlAHxEbyBlnbIqc2WXwLCFOLy6FL1HEND4VNxxFYg=" - } - } - }, - "com.squareup.okhttp3:logging-interceptor": { - "3.12.3": { - "logging-interceptor-3.12.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.jar" - ], - "hash": "sha256-NNEihOBDYkI+VFe03a74xNhLyNgN1K0ZQ+Y8hQf4FXY=" - }, - "logging-interceptor-3.12.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.pom" - ], - "hash": "sha256-H/YmwXE+Itb1bpLtvctOnBRMszSoT6gAsHAfmW+xp/I=" - } - } - }, - "com.squareup.okhttp3:okhttp": { - "3.12.3": { - "okhttp-3.12.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.jar" - ], - "hash": "sha256-gUWW1U7f2Ut9nYcSvzeYZ9ObCQQo3TjFEG0N7V2jVv8=" - }, - "okhttp-3.12.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.pom" - ], - "hash": "sha256-xXZHCTgwkLDEfEiizwh2OTvt1Ihmv83hk0NJf/oXuEQ=" - } - } - }, - "com.squareup.okio:okio": { - "1.15.0": { - "okio-1.15.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.jar" - ], - "hash": "sha256-aT+jGafohDMAYCsgQCO3Z08Qbry1d/LdWAchK2YRi9I=" - }, - "okio-1.15.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom" - ], - "hash": "sha256-8cELFIDRq3X7BRoHsnPjfNolJel+Fgfug+aDO3Dhv84=" - } - } - }, - "com.winterbe:expekt": { - "0.5.0": { - "expekt-0.5.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.jar" - ], - "hash": "sha256-mKJnQqgnRs1u5m7/u8PK/TInA+onhhf734u5tU3O8Xw=" - }, - "expekt-0.5.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.pom" - ], - "hash": "sha256-We03cwfzVZIPORBAQ6YBDDrnbKWfKULGxk3Ttg0pEsc=" - } - } - }, - "de.undercouch:gradle-download-task": { - "4.1.1": { - "gradle-download-task-4.1.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.jar" - ], - "hash": "sha256-6wi1cOQI1GRnBecKlJYU1DnqKxFFXxZSqwMw3olU2rk=" - }, - "gradle-download-task-4.1.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.pom" - ], - "hash": "sha256-EQnx9xpUJU1ZAzfYudRD+d/AhyjJwdgzVlXMHcyIwLk=" - } - } - }, - "io.github.classgraph:classgraph": { - "4.8.37": { - "classgraph-4.8.37.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar" - ], - "hash": "sha256-fR0+iCjB7vVJ1B7x7Oc9LFxYz7lRs/Igzwzx3SVVgXM=" - }, - "classgraph-4.8.37.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom" - ], - "hash": "sha256-pJBV0GEleGZQvjPu13rphQCROLhNOWA7wesu08gIWzQ=" - } - } - }, - "io.javalin:javalin": { - "3.7.0": { - "javalin-3.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.jar" - ], - "hash": "sha256-YGYQPPI2In7IacUllknrErvlwFyH8MHp9y86RGYOZ3I=" - }, - "javalin-3.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.pom" - ], - "hash": "sha256-11U3Www5qZiAEH3sDAzdMgDx7qi2npxtFkYdyuR050M=" - } - } - }, - "javax.servlet:javax.servlet-api": { - "3.1.0": { - "javax.servlet-api-3.1.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" - ], - "hash": "sha256-r0VrLdQcToLPVPPnQ7xniXPZ/jW9TTBx+gXH5TM7hII=" - }, - "javax.servlet-api-3.1.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom" - ], - "hash": "sha256-sxEJ4i6j8t8a15VUMucYo13vUK5sGWmANK+ooM+ekGk=" - } - } - }, - "net.java.dev.jna:jna": { - "5.6.0": { - "jna-5.6.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], - "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" - }, - "jna-5.6.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], - "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" - } - } - }, - "org.apiguardian:apiguardian-api": { - "1.1.0": { - "apiguardian-api-1.1.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar" - ], - "hash": "sha256-qarp/4rj4XoqGPeRdegrFiZ8JG+708qd+7spCwjc/dQ=" - }, - "apiguardian-api-1.1.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom" - ], - "hash": "sha256-qUW5y1zZt3sscRhE5lnEPsBw71nZ9Qn6n0wYYbSGJxE=" - } - } - }, - "org.checkerframework:checker-qual": { - "2.11.1": { - "checker-qual-2.11.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar" - ], - "hash": "sha256-AVIkpLHcbebaBTJz1Np9Oc/qIOYwOBafxFrA0dycWTg=" - }, - "checker-qual-2.11.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom" - ], - "hash": "sha256-zy4MkNj3V0VfSiWOpglzkFNmO9XaannZvVP5NaR955w=" - } - } - }, - "org.eclipse.jetty.websocket:websocket-api": { - "9.4.25.v20191220": { - "websocket-api-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.jar" - ], - "hash": "sha256-sRCCel9HyDUQMj7hm+h+N7FUDhVTfNAhqTVJ4El0f68=" - }, - "websocket-api-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.pom" - ], - "hash": "sha256-xn/BVBQDGiWCGJri17IMVhDTUvWkf4fSi8+1lJQTWcs=" - } - } - }, - "org.eclipse.jetty.websocket:websocket-client": { - "9.4.25.v20191220": { - "websocket-client-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.jar" - ], - "hash": "sha256-dIMBH4pyWNlP62P+SjZSCYG8HYXsPdGxSJlX1AcRFOw=" - }, - "websocket-client-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.pom" - ], - "hash": "sha256-AzAQdDEZ7xKiB2CXLdHAu6BwLuiVU5LtP/QdF2RMOs4=" - } - } - }, - "org.eclipse.jetty.websocket:websocket-common": { - "9.4.25.v20191220": { - "websocket-common-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.jar" - ], - "hash": "sha256-1bvWkUvEIbKOB6MXkc2ZKgBnQX1rX9Bapkq1hDrydzw=" - }, - "websocket-common-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.pom" - ], - "hash": "sha256-ukxD7w1zKeye8StLaAa+D3rHPCQRm8vkvj1m7ebbmlQ=" - } - } - }, - "org.eclipse.jetty.websocket:websocket-server": { - "9.4.25.v20191220": { - "websocket-server-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.jar" - ], - "hash": "sha256-PjO/DwuuXX+/Rx16JWroB4UCkGoxIaCgANkU39F21bo=" - }, - "websocket-server-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.pom" - ], - "hash": "sha256-o9WaXSoxrXskMRuXh2Eog5sNeO+oH4blG6yqelb5MKQ=" - } - } - }, - "org.eclipse.jetty.websocket:websocket-servlet": { - "9.4.25.v20191220": { - "websocket-servlet-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.jar" - ], - "hash": "sha256-nYoe6bmGzp/JJM3ai9fvzxwLZ0X3qWa1B8x3WU/vIms=" - }, - "websocket-servlet-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.pom" - ], - "hash": "sha256-WgVNHE2/17gfAqoOIR+pm7ZHZEn6T48swQGjvPtT7wY=" - } - } - }, - "org.eclipse.jetty:jetty-client": { - "9.4.25.v20191220": { - "jetty-client-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.jar" - ], - "hash": "sha256-qwUsaY1GjdLLjZ1bcH5VqUQDDZFfT59BrDzc+Cs9xuA=" - }, - "jetty-client-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.pom" - ], - "hash": "sha256-ixNwOlizo3BtJIiemlXDSRu+XY+DZdOoKkvvqcbp+eM=" - } - } - }, - "org.eclipse.jetty:jetty-http": { - "9.4.25.v20191220": { - "jetty-http-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.jar" - ], - "hash": "sha256-3JxGbw/kvzf9X02iPQFoSwZ63poWAsTzxbaUvMIIR7o=" - }, - "jetty-http-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.pom" - ], - "hash": "sha256-upIlnnZtESJEah+zuPZAXnroxcQS8i6XbLCEyoxhm4c=" - } - } - }, - "org.eclipse.jetty:jetty-io": { - "9.4.25.v20191220": { - "jetty-io-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.jar" - ], - "hash": "sha256-6cMdtQO2B1/UPxVTGQMAfB6Cn8JF2jQEtuQyfyTvlWk=" - }, - "jetty-io-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.pom" - ], - "hash": "sha256-q1nyQDwSIWhSvBzyhOVhETo9LgsZUmMwmLBfOQW9kYE=" - } - } - }, - "org.eclipse.jetty:jetty-security": { - "9.4.25.v20191220": { - "jetty-security-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.jar" - ], - "hash": "sha256-Y3HBY7kqyNb6sIyx2rkdDmkOclZoc9j3g706d5Oj2iY=" - }, - "jetty-security-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.pom" - ], - "hash": "sha256-2j1qeYtoSPOXIPxweDTha+S8pC31qiXCWSK5Mvz+rus=" - } - } - }, - "org.eclipse.jetty:jetty-server": { - "9.4.25.v20191220": { - "jetty-server-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.jar" - ], - "hash": "sha256-z89tvOS+zuXwZw2bx6do0bc87wyEZj6CrMC5EN8lZfQ=" - }, - "jetty-server-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.pom" - ], - "hash": "sha256-uWOogVUMUf5hOTgJbqfwWZLoGzBBy8faXgb6+8/YZWk=" - } - } - }, - "org.eclipse.jetty:jetty-servlet": { - "9.4.25.v20191220": { - "jetty-servlet-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.jar" - ], - "hash": "sha256-LU0t1OZdCWL0/xHTycytMKYmN3fgVpwbVzE4aLNHchw=" - }, - "jetty-servlet-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.pom" - ], - "hash": "sha256-tw95bbbqAGKLv7ph5aLgMRLjJ10OaIHJN/ARwn/wXos=" - } - } - }, - "org.eclipse.jetty:jetty-util": { - "9.4.25.v20191220": { - "jetty-util-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.jar" - ], - "hash": "sha256-IjeA1yTBx0Y8MjOoLAdobz/XigIvVg0BAlfb5AKODRQ=" - }, - "jetty-util-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.pom" - ], - "hash": "sha256-iEWSOTxmB1pqb6Z9iY532crIf1lIy10xDPyN5Z7wE8Y=" - } - } - }, - "org.eclipse.jetty:jetty-webapp": { - "9.4.25.v20191220": { - "jetty-webapp-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.jar" - ], - "hash": "sha256-qnWB2sNcrVdLA82aFEuibc9DeZ0k7P9enzoGiKJzLvE=" - }, - "jetty-webapp-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.pom" - ], - "hash": "sha256-HRXbctxeN+O+7iEjd1PsYkXn/sXj/ehUK5Yf/ZB9Ufw=" - } - } - }, - "org.eclipse.jetty:jetty-xml": { - "9.4.25.v20191220": { - "jetty-xml-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.jar" - ], - "hash": "sha256-+xNsUWNTj8WHQuqlbfRIdlu4FvJd43Hasf6u5612tN8=" - }, - "jetty-xml-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.pom" - ], - "hash": "sha256-05fGZk1fr9j7VX7NJU4EZP16bakwG60B4C248SAFvrM=" - } - } - }, - "org.jetbrains.intellij.deps:trove4j": { - "1.0.20200330": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } - } - }, - "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { - "1.6.21": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.6.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom" - ], - "hash": "sha256-hKJnm90W1DkKJmp58Gzaix+iq38XlowYk0l84ZWOHEQ=" - } - } - }, - "org.jetbrains.kotlin:kotlin-android-extensions": { - "1.6.21": { - "kotlin-android-extensions-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.jar" - ], - "hash": "sha256-QY25MO/hevs27AnooGI1615PYAsrXKFIeEIsn5lEbPs=" - }, - "kotlin-android-extensions-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.pom" - ], - "hash": "sha256-oWU+E091vwu2aNklZdd/Qy3lGijcUcNK9eOBS53tCsQ=" - } - } - }, - "org.jetbrains.kotlin:kotlin-annotation-processing-gradle": { - "1.6.21": { - "kotlin-annotation-processing-gradle-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.jar" - ], - "hash": "sha256-tA86gSFVnlAjnFXvh2Z6IYBRG7GTQfzIYZh+T4TOYog=" - }, - "kotlin-annotation-processing-gradle-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.pom" - ], - "hash": "sha256-MImLOrD3X6VZjABz0qoqV9yctWnJ6Mb/O6UXUopMEHE=" - } - } - }, - "org.jetbrains.kotlin:kotlin-build-common": { - "1.6.21": { - "kotlin-build-common-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.jar" - ], - "hash": "sha256-Y+6kBdNeNOggJcL0FW49R1fLjyWUmWIzVspma9IQAZ0=" - }, - "kotlin-build-common-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.pom" - ], - "hash": "sha256-LRDfBINfB7h6qBoOf+xAbSwawRxU5+CPCOtRGv5btI8=" - } - } - }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable": { - "1.6.21": { - "kotlin-compiler-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar" - ], - "hash": "sha256-X5ZQPNgiqmwg7abHFqVTxBTYAO0Mbn1lX6Gx+/1P7Cs=" - }, - "kotlin-compiler-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom" - ], - "hash": "sha256-wpULrWEPTie9iidbgcDoPIUfGD1gTuH7iRJV9DRa9EE=" - } - } - }, - "org.jetbrains.kotlin:kotlin-compiler-runner": { - "1.6.21": { - "kotlin-compiler-runner-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.jar" - ], - "hash": "sha256-IGGw47e3Uwv2cg2LBBC+Eyb7Fs1NrcN+d8Aqz+/loLM=" - }, - "kotlin-compiler-runner-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.pom" - ], - "hash": "sha256-b0Ofb0jeG+QltfdQlLbqpICL6hG8LjzmtUTG4zOQtSU=" - } - } - }, - "org.jetbrains.kotlin:kotlin-daemon-client": { - "1.6.21": { - "kotlin-daemon-client-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.jar" - ], - "hash": "sha256-ZHawBzZPVFzmd6ObkzG8IbVqvXtWbwOfUfIVCKOQL6c=" - }, - "kotlin-daemon-client-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.pom" - ], - "hash": "sha256-Q8EnIKTydrNdwEOWEo6bf7Goq9B6FstAnGwNZwaiMWs=" - } - } - }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable": { - "1.6.21": { - "kotlin-daemon-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar" - ], - "hash": "sha256-UcPsHDLDbWVw2DFC6v4qJCk08WXwt4w4YTdpBfkPLhI=" - }, - "kotlin-daemon-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom" - ], - "hash": "sha256-tFZZFoP6YHGHAFr0sx0x1DYE4CHWBFUf8PIubdpWK5o=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin": { - "1.6.21": { - "kotlin-gradle-plugin-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.jar" - ], - "hash": "sha256-Z1Oi4RJtP5k6lRryrcBrHsTKJxdulsj2Mnd5kBBNFa0=" - }, - "kotlin-gradle-plugin-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.pom" - ], - "hash": "sha256-7RX0N/j1aW6NU7mszIYS6cas9Wfbau0E/ymq3F4DpC4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { - "1.6.21": { - "kotlin-gradle-plugin-api-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.jar" - ], - "hash": "sha256-x0wfF5FsrG1ygGJkmI0V4yGa8kYJB5E3Tq6cua8ufLM=" - }, - "kotlin-gradle-plugin-api-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.pom" - ], - "hash": "sha256-JL0R1cjnNGMHSBUXnPuyYCAJIxyEE5aTr3ydVtzU3z8=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { - "1.6.21": { - "kotlin-gradle-plugin-model-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.jar" - ], - "hash": "sha256-YFmxxhMI+4WaAedYsrj9Ctr/dBs9+AI1+t6VrWq4loc=" - }, - "kotlin-gradle-plugin-model-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.pom" - ], - "hash": "sha256-QkLJzsOQLX21n4OMupPDDnMeC10yzDnQ5Ft1gKZUBOo=" - } - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { - "1.6.21": { - "kotlin-klib-commonizer-api-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.jar" - ], - "hash": "sha256-0s9pUu7ziUqs+KnYzx6MZ78hW075AmioyQMYNFMKOHQ=" - }, - "kotlin-klib-commonizer-api-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.pom" - ], - "hash": "sha256-FICJ7qPCUPClDqxomfFFq5D1mJM8GrT5qsldYXKHJfQ=" - } - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { - "1.6.21": { - "kotlin-klib-commonizer-embeddable-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.jar" - ], - "hash": "sha256-1jgafq67fkj8p2v1u55fQ/pW3eb9UQXK6N4TXmMoD3A=" - }, - "kotlin-klib-commonizer-embeddable-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.pom" - ], - "hash": "sha256-bz7nSBQNsbaG5nqJehadbeQv1nQkHVVA3FK7o2Re/i4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-native-utils": { - "1.6.21": { - "kotlin-native-utils-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.jar" - ], - "hash": "sha256-a9hyJOVq4V/+IQTTx2M9cq9sezWCRa08SnbG1f0NNr8=" - }, - "kotlin-native-utils-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.pom" - ], - "hash": "sha256-92q9t+TzvxouyTxiqybO/lKg7UlBAY53w/74BrCXvq8=" - } - } - }, - "org.jetbrains.kotlin:kotlin-project-model": { - "1.6.21": { - "kotlin-project-model-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.jar" - ], - "hash": "sha256-FLaE+Kc+IpZ4ASS/OB3eAT9YLqIzZ6zgGEWAo4Sa6Ng=" - }, - "kotlin-project-model-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.pom" - ], - "hash": "sha256-dgKHUWgMZJAf76wyN5AmtNC9I3rdfw873ujtXH51LG4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-reflect": { - "1.6.21": { - "kotlin-reflect-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.jar" - ], - "hash": "sha256-Hh9XIJ9yOMP9FzWhuTOaVlZVB9yiSfg3G/WdkfYBrqo=" - }, - "kotlin-reflect-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.pom" - ], - "hash": "sha256-2nHh493COI1nVkFnLi8DFtucnSEvlG8CbUoOahM2p/M=" - } - }, - "1.3.50": { - "kotlin-reflect-1.3.50.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar" - ], - "hash": "sha256-ZFgxmepaVK79G9FZUoiSX3hCJu5WLR3SeQEcYHWz16Q=" - }, - "kotlin-reflect-1.3.50.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom" - ], - "hash": "sha256-h0UYHlo+C6/v1GMJxrgQ33JT83n+uYUTHq+NTZwwJjU=" - } - } - }, - "org.jetbrains.kotlin:kotlin-runtime": { - "1.0.3": { - "kotlin-runtime-1.0.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.jar" - ], - "hash": "sha256-jBkPOBLPoR0I6wFBuMh36jJC8N3Q6r/llSV0Pq5ifo4=" - }, - "kotlin-runtime-1.0.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.pom" - ], - "hash": "sha256-LaX+tSEGymCnZiDUaRgktUkbyi7ojMJVcwALCX3lRRc=" - } - } - }, - "org.jetbrains.kotlin:kotlin-script-runtime": { - "1.6.21": { - "kotlin-script-runtime-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.jar" - ], - "hash": "sha256-YGw0p+bo5DnpIIdl59dbHbz4Dzg1Pz4puydFbXs3EXE=" - }, - "kotlin-script-runtime-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.pom" - ], - "hash": "sha256-jVeQOOsdLK0DMFKOKdyMy4rozQ1WClRMXBswqT7O/t4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-common": { - "1.6.21": { - "kotlin-scripting-common-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar" - ], - "hash": "sha256-v79fA2I3zTPCX7oz1IlI2ZXbgYbOPwnDGvnCnIDOnK4=" - }, - "kotlin-scripting-common-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom" - ], - "hash": "sha256-qgWvDyJWUokIeXiduzo6UY4XdWqFsT1UCo3P3wPL+5w=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { - "1.6.21": { - "kotlin-scripting-compiler-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar" - ], - "hash": "sha256-XJNzrzrkC3PW12JLJOjOEXIUSV2GLebSz7YYpxGRBrE=" - }, - "kotlin-scripting-compiler-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom" - ], - "hash": "sha256-C32qtju7PFTd0+NF6wzLI3aAv9TDh7Zfzllt/0uEe9s=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { - "1.6.21": { - "kotlin-scripting-compiler-impl-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar" - ], - "hash": "sha256-5ARLjeAehGM5I3BvQ82oDTfYu++M6ahm+dlZYt3SBIA=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom" - ], - "hash": "sha256-gIxqOEi7Xk9sYWmKxYkxIVc8Q9s4FCNW6D3q0EyzhjQ=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm": { - "1.6.21": { - "kotlin-scripting-jvm-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar" - ], - "hash": "sha256-ksA/6r9L3ZLVoixRp0i9NAJ0Z8PY9MZftbV0uGsH0QQ=" - }, - "kotlin-scripting-jvm-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom" - ], - "hash": "sha256-i5q1hXoYheSL2uAPqosix0sNPkCmNPyeCadG+op1fTI=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "1.6.21": { - "kotlin-stdlib-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.jar" - ], - "hash": "sha256-c5xSZnK7M3Vzso9jr6gwbrCIsMOgln9W1sifSjASpJI=" - }, - "kotlin-stdlib-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.pom" - ], - "hash": "sha256-zkJyW6Ab2DbNqmZ9l032hL9vjxXng5JjMgraf/quHzQ=" - } - }, - "1.3.61": { - "kotlin-stdlib-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.jar" - ], - "hash": "sha256-5R5RJhmn52UKMOtOs+nAPmkJx7XjwCZATgdiVMCYuTI=" - }, - "kotlin-stdlib-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom" - ], - "hash": "sha256-2+W6vNjUPpsIwoRWgLU/wbs+BRxIBYAt3Q7T6OLFCoQ=" - } - }, - "1.0.3": { - "kotlin-stdlib-1.0.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.jar" - ], - "hash": "sha256-ZyHVKFgAZF7WgZP35t0H0srOCd6fO3XN8fMFD0Y1l4E=" - }, - "kotlin-stdlib-1.0.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.pom" - ], - "hash": "sha256-QK5yi+5hvXgSHcWjdko/vH1jRYaHuRmI2qXKMhFQNx0=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "1.6.21": { - "kotlin-stdlib-common-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.jar" - ], - "hash": "sha256-GDvsWc2fOhSVexkOjIec8RlL0fEGsKe24cu4eQ0kI2M=" - }, - "kotlin-stdlib-common-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom" - ], - "hash": "sha256-W8FW7nP9PC2sil7FSNWBtjMzNUfC/r7Zz2VH//FSa6I=" - } - }, - "1.3.61": { - "kotlin-stdlib-common-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.jar" - ], - "hash": "sha256-oufzQc8wR7XwChkX73d9MjzasqVzd0aLjtYqoxRpz38=" - }, - "kotlin-stdlib-common-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom" - ], - "hash": "sha256-4i2wCbsaYWNtlCVjWYlzbbXj/KSUgJq/JERo3EdM/AQ=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { - "1.6.21": { - "kotlin-stdlib-jdk7-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.jar" - ], - "hash": "sha256-8bBjTbuUFyA4RjAguy3UXKJoSfjOKdYlrLDxVp0R2+4=" - }, - "kotlin-stdlib-jdk7-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.pom" - ], - "hash": "sha256-ARzSjruf3oFrA1nVrhCjZ07A/yxTEMBBLCDv6Oo9oG4=" - } - }, - "1.3.61": { - "kotlin-stdlib-jdk7-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar" - ], - "hash": "sha256-EfSlfj59gfPxUtXc7+Ob13YUtalBJf87EVJrChmsOYk=" - }, - "kotlin-stdlib-jdk7-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom" - ], - "hash": "sha256-xBYICuq9uRGKCO54wo4oVgOM2FhYQipx98Rr8nb2Z6c=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { - "1.6.21": { - "kotlin-stdlib-jdk8-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.jar" - ], - "hash": "sha256-2rRUibR3NtWfzkS4BnbxlHqba8qxD9YOh4qDvYKmlUw=" - }, - "kotlin-stdlib-jdk8-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.pom" - ], - "hash": "sha256-g2oReaCNJJFGl9JhLgO4SKCHyAy0sMoj+c+rJH86dcQ=" - } - }, - "1.3.61": { - "kotlin-stdlib-jdk8-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar" - ], - "hash": "sha256-ODm6fet5g3XaGAe8Rp0c8xXbemJ1WZ9zMYQ3R3LsOyE=" - }, - "kotlin-stdlib-jdk8-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom" - ], - "hash": "sha256-4wGH5XIMpkC45oaG8g3QJQ3O8Bk9VuVWnDxKYSdzErY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-tooling-metadata": { - "1.6.21": { - "kotlin-tooling-metadata-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.jar" - ], - "hash": "sha256-Tsk9BRYGawtki6mHxtPWX2+wZ9wLu6lcHs5h4EKEiOU=" - }, - "kotlin-tooling-metadata-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.pom" - ], - "hash": "sha256-uwYH34aI9gLBwvTQmWMz/YsDtpMoaGpud15S9/sNFxg=" - } - } - }, - "org.jetbrains.kotlin:kotlin-util-io": { - "1.6.21": { - "kotlin-util-io-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.jar" - ], - "hash": "sha256-wCxUcFYyGLcDvh5xbi0M6leH01y+tryUbfAMAM1CrNI=" - }, - "kotlin-util-io-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.pom" - ], - "hash": "sha256-52nyybmRQIYlhKLAoRLIQ3P0fkryrxbQHOSThRMZMhk=" - } - } - }, - "org.jetbrains.kotlin:kotlin-util-klib": { - "1.6.21": { - "kotlin-util-klib-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.jar" - ], - "hash": "sha256-7iGKnoGAwbNIwawc+K1xj2qseLp+JrUIEyNIT2Q8YbI=" - }, - "kotlin-util-klib-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.pom" - ], - "hash": "sha256-EsegqvZnLbHXgxxHGWV/+b9rEXGbD8h9iNcnXzl/lKs=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core": { - "1.3.3": { - "kotlinx-coroutines-core-1.3.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.jar" - ], - "hash": "sha256-91+LDzJgcX1FNZ+elv9mYT+gY+QGUSCwZ8yQcleghmo=" - }, - "kotlinx-coroutines-core-1.3.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom" - ], - "hash": "sha256-KZmeUobJiKm3K3xt/rmE2fohxRcY9bb5P1Yh5wClN/4=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-common": { - "1.3.0": { - "kotlinx-coroutines-core-common-1.3.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.jar" - ], - "hash": "sha256-Evof8J9dtFxlGJKP9HmjZPOqEXSRW6JgWkIF7GCwGMM=" - }, - "kotlinx-coroutines-core-common-1.3.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.pom" - ], - "hash": "sha256-V2kqeg3vYTmMQz4s87C0p0l4ZpQuBLFFshG1t57CoYM=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { - "1.5.0": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], - "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" - } - } - }, - "org.jetbrains:annotations": { - "13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } - } - }, - "org.junit.platform:junit-platform-commons": { - "1.5.2": { - "junit-platform-commons-1.5.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.jar" - ], - "hash": "sha256-/ESv38DyDIXnGmbnlDKBrvO8Hg/WLS1po2y2kB5oLBA=" - }, - "junit-platform-commons-1.5.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.pom" - ], - "hash": "sha256-O9DU3tYyqK+MpYf7Z2QBnedxsda8uJrNViQ1oQCfqto=" - } - } - }, - "org.junit.platform:junit-platform-engine": { - "1.5.2": { - "junit-platform-engine-1.5.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.jar" - ], - "hash": "sha256-/yC6StjADvF7rvnFVRL5wC2aaHQPfxrAGppqoCOZMfg=" - }, - "junit-platform-engine-1.5.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.pom" - ], - "hash": "sha256-LUuVVVwh4IXrwd299C156x1VZA3Bk7G35hACQP0vGJ8=" - } - } - }, - "org.opentest4j:opentest4j": { - "1.2.0": { - "opentest4j-1.2.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" - ], - "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" - }, - "opentest4j-1.2.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" - ], - "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" - } - } - }, - "org.postgresql:postgresql": { - "42.2.2": { - "postgresql-42.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.jar" - ], - "hash": "sha256-GZZSQCajAnhT85MuhjnvgTgH0bY/4Ugy9BD/+kJ0+nA=" - }, - "postgresql-42.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.pom" - ], - "hash": "sha256-NbNCwrBu1Cf6VP/xw3GNQ2HvrcNC7DJM7DnBeKm481Y=" - } - } - }, - "org.slf4j:slf4j-api": { - "1.8.0-beta4": { - "slf4j-api-1.8.0-beta4.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar" - ], - "hash": "sha256-YCtxIynIS0qDxARk9P39D+QjjFPvOXE5qGcGRznb9OA=" - }, - "slf4j-api-1.8.0-beta4.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.pom" - ], - "hash": "sha256-+DFtKKzyUrIbHp6O7ZqEwq+9yOBA9p06ELq4E9PYWoU=" - } - } - }, - "org.slf4j:slf4j-simple": { - "1.8.0-beta4": { - "slf4j-simple-1.8.0-beta4.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.jar" - ], - "hash": "sha256-usZqvFtEYt/2Lh4ZqzsKZcFg681WTPJZENsAOo5WnP0=" - }, - "slf4j-simple-1.8.0-beta4.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.pom" - ], - "hash": "sha256-oXrS6OU00OgZ6o0UIT3nSNRlD/8qJX0+kqE9oxAoe/c=" - } - } - }, - "org.spekframework.spek2:spek-dsl-jvm": { - "2.0.9": { - "spek-dsl-jvm-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.jar" - ], - "hash": "sha256-gohf+MCcJfvntBQS/IoIyCAn8kuE6gH3ZL5jm8CYGeg=" - }, - "spek-dsl-jvm-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.pom" - ], - "hash": "sha256-q3b2C4rYViJC615qA1SLpiL6xHDFpE6pzckZ34VzgQQ=" - } - } - }, - "org.spekframework.spek2:spek-runner-junit5": { - "2.0.9": { - "spek-runner-junit5-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.jar" - ], - "hash": "sha256-K0ZmWbdh12OKtc2CX8yC3CrA1FPJ6yAKGUAHG4KkpYY=" - }, - "spek-runner-junit5-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.pom" - ], - "hash": "sha256-7GcxgitATmAvUWoOpzJFBWgHoMWg2Kb4SkTjqnfrSjg=" - } - } - }, - "org.spekframework.spek2:spek-runtime-jvm": { - "2.0.9": { - "spek-runtime-jvm-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.jar" - ], - "hash": "sha256-dZ18fuF78XJYwySioaGwhusrz2QnnBfh+av1Xsph+nQ=" - }, - "spek-runtime-jvm-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.pom" - ], - "hash": "sha256-9o3lUgIMgh6TRueEI5uGtT5rR1+2DQRoWsdGILeiKeU=" - } - } - }, - "org.xerial:sqlite-jdbc": { - "3.30.1": { - "sqlite-jdbc-3.30.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.jar" - ], - "hash": "sha256-KAA0qJkwABBMWza8XhE5sOgt8d6c/ZUfUpva3q9vRW0=" - }, - "sqlite-jdbc-3.30.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.pom" - ], - "hash": "sha256-eGpZKh7AtwPJJVOlE37gAxGb5UmlGTM05t44WrKGb3I=" - } + "com.fasterxml:oss-parent:38": { + "oss-parent-38.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/38/oss-parent-38.pom" + ], + "hash": "sha256-yD+PRd/cqNC2s2YcYLP4R4D2cbEuBvka1dHBodH5Zug=" + } + }, + "com.fasterxml.jackson:jackson-base:2.10.1": { + "jackson-base-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.10.1/jackson-base-2.10.1.pom" + ], + "hash": "sha256-dUnyCbxITO6tG0ME+XtPfi5bXOmARSfQ2XFw3FF3ri8=" + } + }, + "com.fasterxml.jackson:jackson-bom:2.10.1": { + "jackson-bom-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.10.1/jackson-bom-2.10.1.pom" + ], + "hash": "sha256-H92hwb5qLkrG8MML3/C7ydAtYkcKgIIwJcF6u2ly1eQ=" + } + }, + "com.fasterxml.jackson:jackson-parent:2.10": { + "jackson-parent-2.10.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.10/jackson-parent-2.10.pom" + ], + "hash": "sha256-pQ24CCnE+JfG0OfpVHLLtDsOvs4TWmjjnCe4pv4z5IE=" + } + }, + "com.fasterxml.jackson.core:jackson-annotations:2.10.1": { + "jackson-annotations-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar" + ], + "hash": "sha256-Zz+K4Wvs6k+pN0BLOoUUF/r0LfO7xZICi74r/gzJ2Ms=" + }, + "jackson-annotations-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.pom" + ], + "hash": "sha256-7OURA2Z+iBHw/3RYmGryFxhi5UuYE8FwjPk3kESH+Vw=" + } + }, + "com.fasterxml.jackson.core:jackson-core:2.10.1": { + "jackson-core-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar" + ], + "hash": "sha256-eb/73NNJ9ppawlLitAlhMXBDhq9PoU2VOV6poOQjzzM=" + }, + "jackson-core-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.pom" + ], + "hash": "sha256-EXkJC3ILJankJmQwLwM0oiQLMMcoC0IkJeT0UZ5bLP4=" + } + }, + "com.fasterxml.jackson.core:jackson-databind:2.10.1": { + "jackson-databind-2.10.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar" + ], + "hash": "sha256-LSP0cAFJIjNWWt9aNPIl8q6JVkzuCAJIc+w2t4Qu3kY=" + }, + "jackson-databind-2.10.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.pom" + ], + "hash": "sha256-OGlQZeP1ILBbvY6lmC5ba1vZ+FYpZ7g9rLfQerCMauc=" + } + }, + "com.github.gundy:semver4j:0.16.4": { + "semver4j-0.16.4-nodeps.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4-nodeps.jar" + ], + "hash": "sha256-P1nspRY3TM1P01UWJb9Q+KSxkfcAUI985IZkYKYSivA=" + }, + "semver4j-0.16.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom" + ], + "hash": "sha256-MgAdskQ7M53SH1t5/ynRreci0boIDCFL3oGfD3LRYE0=" + } + }, + "com.github.pengrad:java-telegram-bot-api:4.6.0": { + "java-telegram-bot-api-4.6.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.jar" + ], + "hash": "sha256-w4H/cErewM/mZbrnUYtwiT5Czf83Smb0qYxGfeG/TdU=" + }, + "java-telegram-bot-api-4.6.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.pom" + ], + "hash": "sha256-nZxF//5qwbIbZffUK0k2T/gnnX5pLU9wF0BLLhC+YsE=" + } + }, + "com.google.code.findbugs:jsr305:3.0.2": { + "jsr305-3.0.2.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" + ], + "hash": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=" + }, + "jsr305-3.0.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom" + ], + "hash": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4=" + } + }, + "com.google.code.gson:gson:2.8.9": { + "gson-2.8.9.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar" + ], + "hash": "sha256-05mSkYVd5JXJTHQ3YbirUXbP6r4oGlqw2OjUUyb9cD4=" + }, + "gson-2.8.9.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom" + ], + "hash": "sha256-r97W5qaQ+/OtSuZa2jl/CpCl9jCzA9G3QbnJeSb91N4=" + } + }, + "com.google.code.gson:gson:2.8.5": { + "gson-2.8.5.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar" + ], + "hash": "sha256-IzoBSfw2XJ9u29aDz+JmsZvcdzvpjqva9rPJJLSOfYE=" + }, + "gson-2.8.5.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom" + ], + "hash": "sha256-uDCFV6f8zJLZ/nyM0FmSWLNhKF0uzedontqYhDJVoJI=" + } + }, + "com.google.code.gson:gson-parent:2.8.9": { + "gson-parent-2.8.9.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.9/gson-parent-2.8.9.pom" + ], + "hash": "sha256-sW4CbmNCfBlyrQ/GhwPsN5sVduQRuknDL6mjGrC7z/s=" + } + }, + "com.google.code.gson:gson-parent:2.8.5": { + "gson-parent-2.8.5.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.8.5/gson-parent-2.8.5.pom" + ], + "hash": "sha256-jx/scrkaceo57Dn193jE0RJLawl8bVWzpQtVSlIjeyc=" + } + }, + "com.google.errorprone:error_prone_annotations:2.3.4": { + "error_prone_annotations-2.3.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar" + ], + "hash": "sha256-uvfW6pfOYGxT4RtoVLpfLOfvXCTd3wr6GNEmC9JbACw=" + }, + "error_prone_annotations-2.3.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.pom" + ], + "hash": "sha256-EyZziktPfMrPYHuGahH7hRk+9g9qWUYRh85yZfm+W+0=" + } + }, + "com.google.errorprone:error_prone_parent:2.3.4": { + "error_prone_parent-2.3.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_parent/2.3.4/error_prone_parent-2.3.4.pom" + ], + "hash": "sha256-QElbQ3pg0jmPD9/AVLidnDlKgjR6J0oHIcLpUKQwIYY=" + } + }, + "com.google.guava:failureaccess:1.0.1": { + "failureaccess-1.0.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" + ], + "hash": "sha256-oXHuTHNN0tqDfksWvp30Zhr6typBra8x64Tf2vk2yiY=" + }, + "failureaccess-1.0.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom" + ], + "hash": "sha256-6WBCznj+y6DaK+lkUilHyHtAopG1/TzWcqQ0kkEDxLk=" + } + }, + "com.google.guava:guava:29.0-jre": { + "guava-29.0-jre.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.jar" + ], + "hash": "sha256-sixftm1h57lSJTHQSy+RW1FY6AqgtA7nKCyL+wew2iU=" + }, + "guava-29.0-jre.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.pom" + ], + "hash": "sha256-kCfpNAmJA9KH8bphyLZfAdHR4dp6b7zAS/PeBUQBRCY=" + } + }, + "com.google.guava:guava-parent:29.0-jre": { + "guava-parent-29.0-jre.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/guava-parent/29.0-jre/guava-parent-29.0-jre.pom" + ], + "hash": "sha256-alf54C9436L0vaNBYGWmRCauG2beIoz24Zbi4ZElU78=" + } + }, + "com.google.guava:guava-parent:26.0-android": { + "guava-parent-26.0-android.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/guava-parent/26.0-android/guava-parent-26.0-android.pom" + ], + "hash": "sha256-+GmKtGypls6InBr8jKTyXrisawNNyJjUWDdCNgAWzAQ=" + } + }, + "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava": { + "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" + ], + "hash": "sha256-s3KgN9QjCqV/vv/e8w/WEj+cDC24XQrO0AyRuXTzP5k=" + }, + "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom" + ], + "hash": "sha256-GNSx2yYVPU5VB5zh92ux/gXNuGLvmVSojLzE/zi4Z5s=" + } + }, + "com.google.j2objc:j2objc-annotations:1.3": { + "j2objc-annotations-1.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" + ], + "hash": "sha256-Ia8wySJnvWEiwOC00gzMtmQaN+r5VsZUDsRx1YTmSns=" + }, + "j2objc-annotations-1.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom" + ], + "hash": "sha256-X6yoJLoRW+5FhzAzff2y/OpGui/XdNQwTtvzD6aj8FU=" + } + }, + "com.natpryce:konfig:1.6.10.0": { + "konfig-1.6.10.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.jar" + ], + "hash": "sha256-1Va6vANYRVP1/TzEaJTF6jMxCSv7qufqYm1bjUznk7s=" + }, + "konfig-1.6.10.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.pom" + ], + "hash": "sha256-1NTlAHxEbyBlnbIqc2WXwLCFOLy6FL1HEND4VNxxFYg=" + } + }, + "com.squareup.okhttp3:logging-interceptor:3.12.3": { + "logging-interceptor-3.12.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.jar" + ], + "hash": "sha256-NNEihOBDYkI+VFe03a74xNhLyNgN1K0ZQ+Y8hQf4FXY=" + }, + "logging-interceptor-3.12.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.pom" + ], + "hash": "sha256-H/YmwXE+Itb1bpLtvctOnBRMszSoT6gAsHAfmW+xp/I=" + } + }, + "com.squareup.okhttp3:okhttp:3.12.3": { + "okhttp-3.12.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.jar" + ], + "hash": "sha256-gUWW1U7f2Ut9nYcSvzeYZ9ObCQQo3TjFEG0N7V2jVv8=" + }, + "okhttp-3.12.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.pom" + ], + "hash": "sha256-xXZHCTgwkLDEfEiizwh2OTvt1Ihmv83hk0NJf/oXuEQ=" + } + }, + "com.squareup.okhttp3:parent:3.12.3": { + "parent-3.12.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.3/parent-3.12.3.pom" + ], + "hash": "sha256-wKYntmtFpWhCEyGoGoLl/Fnit2zV9+X2Em8oKUR4MR4=" + } + }, + "com.squareup.okio:okio:1.15.0": { + "okio-1.15.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.jar" + ], + "hash": "sha256-aT+jGafohDMAYCsgQCO3Z08Qbry1d/LdWAchK2YRi9I=" + }, + "okio-1.15.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom" + ], + "hash": "sha256-8cELFIDRq3X7BRoHsnPjfNolJel+Fgfug+aDO3Dhv84=" + } + }, + "com.squareup.okio:okio-parent:1.15.0": { + "okio-parent-1.15.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.15.0/okio-parent-1.15.0.pom" + ], + "hash": "sha256-NOCaPqKqzXId85lHDQWkeuza2AEmmiEhlf+/nSEFbbI=" + } + }, + "com.winterbe:expekt:0.5.0": { + "expekt-0.5.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.jar" + ], + "hash": "sha256-mKJnQqgnRs1u5m7/u8PK/TInA+onhhf734u5tU3O8Xw=" + }, + "expekt-0.5.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.pom" + ], + "hash": "sha256-We03cwfzVZIPORBAQ6YBDDrnbKWfKULGxk3Ttg0pEsc=" + } + }, + "de.undercouch:gradle-download-task:4.1.1": { + "gradle-download-task-4.1.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.jar" + ], + "hash": "sha256-6wi1cOQI1GRnBecKlJYU1DnqKxFFXxZSqwMw3olU2rk=" + }, + "gradle-download-task-4.1.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.pom" + ], + "hash": "sha256-EQnx9xpUJU1ZAzfYudRD+d/AhyjJwdgzVlXMHcyIwLk=" + } + }, + "io.github.classgraph:classgraph:4.8.37": { + "classgraph-4.8.37.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar" + ], + "hash": "sha256-fR0+iCjB7vVJ1B7x7Oc9LFxYz7lRs/Igzwzx3SVVgXM=" + }, + "classgraph-4.8.37.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom" + ], + "hash": "sha256-pJBV0GEleGZQvjPu13rphQCROLhNOWA7wesu08gIWzQ=" + } + }, + "io.javalin:javalin:3.7.0": { + "javalin-3.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.jar" + ], + "hash": "sha256-YGYQPPI2In7IacUllknrErvlwFyH8MHp9y86RGYOZ3I=" + }, + "javalin-3.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.pom" + ], + "hash": "sha256-11U3Www5qZiAEH3sDAzdMgDx7qi2npxtFkYdyuR050M=" + } + }, + "javax.servlet:javax.servlet-api:3.1.0": { + "javax.servlet-api-3.1.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" + ], + "hash": "sha256-r0VrLdQcToLPVPPnQ7xniXPZ/jW9TTBx+gXH5TM7hII=" + }, + "javax.servlet-api-3.1.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom" + ], + "hash": "sha256-sxEJ4i6j8t8a15VUMucYo13vUK5sGWmANK+ooM+ekGk=" + } + }, + "joda-time:joda-time:2.12.7": { + "joda-time-2.12.7.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/joda-time/joda-time/2.12.7/joda-time-2.12.7.jar" + ], + "hash": "sha256-OFKCsAWBjPrM2+i9JCmBHn5kF4LyuIkyprj/UdZo9hY=" + }, + "joda-time-2.12.7.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/joda-time/joda-time/2.12.7/joda-time-2.12.7.pom" + ], + "hash": "sha256-hf3b+kfCmf2OzhyT//1H2cLTyQNaM7XbAXswTGd+hCg=" + } + }, + "net.java:jvnet-parent:3": { + "jvnet-parent-3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/jvnet-parent/3/jvnet-parent-3.pom" + ], + "hash": "sha256-MPV4nvo53b+WCVqto/wSYMRWH68vcUaGcXyy3FBJR1o=" + } + }, + "net.java.dev.jna:jna:5.6.0": { + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" + } + }, + "org.apiguardian:apiguardian-api:1.1.0": { + "apiguardian-api-1.1.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar" + ], + "hash": "sha256-qarp/4rj4XoqGPeRdegrFiZ8JG+708qd+7spCwjc/dQ=" + }, + "apiguardian-api-1.1.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom" + ], + "hash": "sha256-qUW5y1zZt3sscRhE5lnEPsBw71nZ9Qn6n0wYYbSGJxE=" + } + }, + "org.checkerframework:checker-qual:2.11.1": { + "checker-qual-2.11.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar" + ], + "hash": "sha256-AVIkpLHcbebaBTJz1Np9Oc/qIOYwOBafxFrA0dycWTg=" + }, + "checker-qual-2.11.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom" + ], + "hash": "sha256-zy4MkNj3V0VfSiWOpglzkFNmO9XaannZvVP5NaR955w=" + } + }, + "org.eclipse.jetty:jetty-client:9.4.25.v20191220": { + "jetty-client-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.jar" + ], + "hash": "sha256-qwUsaY1GjdLLjZ1bcH5VqUQDDZFfT59BrDzc+Cs9xuA=" + }, + "jetty-client-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.pom" + ], + "hash": "sha256-ixNwOlizo3BtJIiemlXDSRu+XY+DZdOoKkvvqcbp+eM=" + } + }, + "org.eclipse.jetty:jetty-http:9.4.25.v20191220": { + "jetty-http-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.jar" + ], + "hash": "sha256-3JxGbw/kvzf9X02iPQFoSwZ63poWAsTzxbaUvMIIR7o=" + }, + "jetty-http-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.pom" + ], + "hash": "sha256-upIlnnZtESJEah+zuPZAXnroxcQS8i6XbLCEyoxhm4c=" + } + }, + "org.eclipse.jetty:jetty-io:9.4.25.v20191220": { + "jetty-io-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.jar" + ], + "hash": "sha256-6cMdtQO2B1/UPxVTGQMAfB6Cn8JF2jQEtuQyfyTvlWk=" + }, + "jetty-io-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.pom" + ], + "hash": "sha256-q1nyQDwSIWhSvBzyhOVhETo9LgsZUmMwmLBfOQW9kYE=" + } + }, + "org.eclipse.jetty:jetty-project:9.4.25.v20191220": { + "jetty-project-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-project/9.4.25.v20191220/jetty-project-9.4.25.v20191220.pom" + ], + "hash": "sha256-sXc6pTwOhm898Oi9iSBTqbSRaiglyCqH073vbdTG0vk=" + } + }, + "org.eclipse.jetty:jetty-security:9.4.25.v20191220": { + "jetty-security-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.jar" + ], + "hash": "sha256-Y3HBY7kqyNb6sIyx2rkdDmkOclZoc9j3g706d5Oj2iY=" + }, + "jetty-security-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.pom" + ], + "hash": "sha256-2j1qeYtoSPOXIPxweDTha+S8pC31qiXCWSK5Mvz+rus=" + } + }, + "org.eclipse.jetty:jetty-server:9.4.25.v20191220": { + "jetty-server-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.jar" + ], + "hash": "sha256-z89tvOS+zuXwZw2bx6do0bc87wyEZj6CrMC5EN8lZfQ=" + }, + "jetty-server-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.pom" + ], + "hash": "sha256-uWOogVUMUf5hOTgJbqfwWZLoGzBBy8faXgb6+8/YZWk=" + } + }, + "org.eclipse.jetty:jetty-servlet:9.4.25.v20191220": { + "jetty-servlet-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.jar" + ], + "hash": "sha256-LU0t1OZdCWL0/xHTycytMKYmN3fgVpwbVzE4aLNHchw=" + }, + "jetty-servlet-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.pom" + ], + "hash": "sha256-tw95bbbqAGKLv7ph5aLgMRLjJ10OaIHJN/ARwn/wXos=" + } + }, + "org.eclipse.jetty:jetty-util:9.4.25.v20191220": { + "jetty-util-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.jar" + ], + "hash": "sha256-IjeA1yTBx0Y8MjOoLAdobz/XigIvVg0BAlfb5AKODRQ=" + }, + "jetty-util-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.pom" + ], + "hash": "sha256-iEWSOTxmB1pqb6Z9iY532crIf1lIy10xDPyN5Z7wE8Y=" + } + }, + "org.eclipse.jetty:jetty-webapp:9.4.25.v20191220": { + "jetty-webapp-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.jar" + ], + "hash": "sha256-qnWB2sNcrVdLA82aFEuibc9DeZ0k7P9enzoGiKJzLvE=" + }, + "jetty-webapp-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.pom" + ], + "hash": "sha256-HRXbctxeN+O+7iEjd1PsYkXn/sXj/ehUK5Yf/ZB9Ufw=" + } + }, + "org.eclipse.jetty:jetty-xml:9.4.25.v20191220": { + "jetty-xml-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.jar" + ], + "hash": "sha256-+xNsUWNTj8WHQuqlbfRIdlu4FvJd43Hasf6u5612tN8=" + }, + "jetty-xml-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.pom" + ], + "hash": "sha256-05fGZk1fr9j7VX7NJU4EZP16bakwG60B4C248SAFvrM=" + } + }, + "org.eclipse.jetty.websocket:websocket-api:9.4.25.v20191220": { + "websocket-api-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.jar" + ], + "hash": "sha256-sRCCel9HyDUQMj7hm+h+N7FUDhVTfNAhqTVJ4El0f68=" + }, + "websocket-api-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.pom" + ], + "hash": "sha256-xn/BVBQDGiWCGJri17IMVhDTUvWkf4fSi8+1lJQTWcs=" + } + }, + "org.eclipse.jetty.websocket:websocket-client:9.4.25.v20191220": { + "websocket-client-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.jar" + ], + "hash": "sha256-dIMBH4pyWNlP62P+SjZSCYG8HYXsPdGxSJlX1AcRFOw=" + }, + "websocket-client-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.pom" + ], + "hash": "sha256-AzAQdDEZ7xKiB2CXLdHAu6BwLuiVU5LtP/QdF2RMOs4=" + } + }, + "org.eclipse.jetty.websocket:websocket-common:9.4.25.v20191220": { + "websocket-common-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.jar" + ], + "hash": "sha256-1bvWkUvEIbKOB6MXkc2ZKgBnQX1rX9Bapkq1hDrydzw=" + }, + "websocket-common-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.pom" + ], + "hash": "sha256-ukxD7w1zKeye8StLaAa+D3rHPCQRm8vkvj1m7ebbmlQ=" + } + }, + "org.eclipse.jetty.websocket:websocket-parent:9.4.25.v20191220": { + "websocket-parent-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-parent/9.4.25.v20191220/websocket-parent-9.4.25.v20191220.pom" + ], + "hash": "sha256-OJkMYyevE89u7BknNhRV3vr7uEvMR1bkBaPQVWD7Qzo=" + } + }, + "org.eclipse.jetty.websocket:websocket-server:9.4.25.v20191220": { + "websocket-server-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.jar" + ], + "hash": "sha256-PjO/DwuuXX+/Rx16JWroB4UCkGoxIaCgANkU39F21bo=" + }, + "websocket-server-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.pom" + ], + "hash": "sha256-o9WaXSoxrXskMRuXh2Eog5sNeO+oH4blG6yqelb5MKQ=" + } + }, + "org.eclipse.jetty.websocket:websocket-servlet:9.4.25.v20191220": { + "websocket-servlet-9.4.25.v20191220.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.jar" + ], + "hash": "sha256-nYoe6bmGzp/JJM3ai9fvzxwLZ0X3qWa1B8x3WU/vIms=" + }, + "websocket-servlet-9.4.25.v20191220.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.pom" + ], + "hash": "sha256-WgVNHE2/17gfAqoOIR+pm7ZHZEn6T48swQGjvPtT7wY=" + } + }, + "org.jetbrains:annotations:23.0.0": { + "annotations-23.0.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.jar" + ], + "hash": "sha256-ew8ZckCCy/y8ZuWr6iubySzwih6hHhkZM+1DgB6zzQU=" + }, + "annotations-23.0.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom" + ], + "hash": "sha256-yUkPZVEyMo3yz7z990P1P8ORbWwdEENxdabKbjpndxw=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains.exposed:exposed-core:0.50.1": { + "exposed-core-0.50.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-core/0.50.1/exposed-core-0.50.1.jar" + ], + "hash": "sha256-7GxEwj+Da3NEFyI+Ky2jp/sdEypoEaTJM1AngEUXq8A=" + }, + "exposed-core-0.50.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-core/0.50.1/exposed-core-0.50.1.module" + ], + "hash": "sha256-9JeEbcyuFSWn/NRS2Ed//BxImFnJV6UwRISqjsFAumY=" + }, + "exposed-core-0.50.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-core/0.50.1/exposed-core-0.50.1.pom" + ], + "hash": "sha256-HW3Uxt2pYCn4HW+aYgGDO5Prl/kJXHN9iIQ0Tp4sfDE=" + } + }, + "org.jetbrains.exposed:exposed-dao:0.50.1": { + "exposed-dao-0.50.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-dao/0.50.1/exposed-dao-0.50.1.jar" + ], + "hash": "sha256-fpnRwIETZkjHT6QPdvilfqLPiFVogWDLOJU91WUxCXM=" + }, + "exposed-dao-0.50.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-dao/0.50.1/exposed-dao-0.50.1.module" + ], + "hash": "sha256-mOsYPcGblfmbuh9Zia1He8CSoxpFVzm9rUAHfIwoCjs=" + }, + "exposed-dao-0.50.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-dao/0.50.1/exposed-dao-0.50.1.pom" + ], + "hash": "sha256-w7hJrpLaTMlxL4N/3JzFtjOoJr4JCvDpdgFXPukuDy0=" + } + }, + "org.jetbrains.exposed:exposed-jdbc:0.50.1": { + "exposed-jdbc-0.50.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jdbc/0.50.1/exposed-jdbc-0.50.1.jar" + ], + "hash": "sha256-P1awsJfx/rkzovIGo/Q4IiiibbWIa133ZU7Ww5pmDGI=" + }, + "exposed-jdbc-0.50.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jdbc/0.50.1/exposed-jdbc-0.50.1.module" + ], + "hash": "sha256-68KP7F8KnI9XuuhbT4mQp9w4x5M1115sBMcUTSkvPns=" + }, + "exposed-jdbc-0.50.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jdbc/0.50.1/exposed-jdbc-0.50.1.pom" + ], + "hash": "sha256-Y1Uw/BYvS7kRyknmrsteebD5gQ2iFhtcNGd+Aur8MUg=" + } + }, + "org.jetbrains.exposed:exposed-jodatime:0.50.1": { + "exposed-jodatime-0.50.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jodatime/0.50.1/exposed-jodatime-0.50.1.jar" + ], + "hash": "sha256-5nun4F887ZbziMXBK+8JdfsOzPpaD8YLoFc3cdDyhOk=" + }, + "exposed-jodatime-0.50.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jodatime/0.50.1/exposed-jodatime-0.50.1.module" + ], + "hash": "sha256-xSJ+g/T+u6Fu0JftbMrHWXN8sj1mPsUmgc0b7gh5dLk=" + }, + "exposed-jodatime-0.50.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jodatime/0.50.1/exposed-jodatime-0.50.1.pom" + ], + "hash": "sha256-+8jyAjnBFMoa9UG5semZ9yF6///YUxFzA1mA70lPpBg=" + } + }, + "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions:1.6.21": { + "kotlin-android-extensions-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.jar" + ], + "hash": "sha256-QY25MO/hevs27AnooGI1615PYAsrXKFIeEIsn5lEbPs=" + }, + "kotlin-android-extensions-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.pom" + ], + "hash": "sha256-oWU+E091vwu2aNklZdd/Qy3lGijcUcNK9eOBS53tCsQ=" + } + }, + "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.6.21": { + "kotlin-annotation-processing-gradle-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.jar" + ], + "hash": "sha256-tA86gSFVnlAjnFXvh2Z6IYBRG7GTQfzIYZh+T4TOYog=" + }, + "kotlin-annotation-processing-gradle-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.pom" + ], + "hash": "sha256-MImLOrD3X6VZjABz0qoqV9yctWnJ6Mb/O6UXUopMEHE=" + } + }, + "org.jetbrains.kotlin:kotlin-build-common:1.6.21": { + "kotlin-build-common-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.jar" + ], + "hash": "sha256-Y+6kBdNeNOggJcL0FW49R1fLjyWUmWIzVspma9IQAZ0=" + }, + "kotlin-build-common-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.pom" + ], + "hash": "sha256-LRDfBINfB7h6qBoOf+xAbSwawRxU5+CPCOtRGv5btI8=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.21": { + "kotlin-compiler-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar" + ], + "hash": "sha256-X5ZQPNgiqmwg7abHFqVTxBTYAO0Mbn1lX6Gx+/1P7Cs=" + }, + "kotlin-compiler-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom" + ], + "hash": "sha256-wpULrWEPTie9iidbgcDoPIUfGD1gTuH7iRJV9DRa9EE=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner:1.6.21": { + "kotlin-compiler-runner-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.jar" + ], + "hash": "sha256-IGGw47e3Uwv2cg2LBBC+Eyb7Fs1NrcN+d8Aqz+/loLM=" + }, + "kotlin-compiler-runner-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.pom" + ], + "hash": "sha256-b0Ofb0jeG+QltfdQlLbqpICL6hG8LjzmtUTG4zOQtSU=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client:1.6.21": { + "kotlin-daemon-client-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.jar" + ], + "hash": "sha256-ZHawBzZPVFzmd6ObkzG8IbVqvXtWbwOfUfIVCKOQL6c=" + }, + "kotlin-daemon-client-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.pom" + ], + "hash": "sha256-Q8EnIKTydrNdwEOWEo6bf7Goq9B6FstAnGwNZwaiMWs=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.6.21": { + "kotlin-daemon-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar" + ], + "hash": "sha256-UcPsHDLDbWVw2DFC6v4qJCk08WXwt4w4YTdpBfkPLhI=" + }, + "kotlin-daemon-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom" + ], + "hash": "sha256-tFZZFoP6YHGHAFr0sx0x1DYE4CHWBFUf8PIubdpWK5o=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21": { + "kotlin-gradle-plugin-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.jar" + ], + "hash": "sha256-Z1Oi4RJtP5k6lRryrcBrHsTKJxdulsj2Mnd5kBBNFa0=" + }, + "kotlin-gradle-plugin-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.pom" + ], + "hash": "sha256-7RX0N/j1aW6NU7mszIYS6cas9Wfbau0E/ymq3F4DpC4=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.6.21": { + "kotlin-gradle-plugin-api-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.jar" + ], + "hash": "sha256-x0wfF5FsrG1ygGJkmI0V4yGa8kYJB5E3Tq6cua8ufLM=" + }, + "kotlin-gradle-plugin-api-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.pom" + ], + "hash": "sha256-JL0R1cjnNGMHSBUXnPuyYCAJIxyEE5aTr3ydVtzU3z8=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.6.21": { + "kotlin-gradle-plugin-model-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.jar" + ], + "hash": "sha256-YFmxxhMI+4WaAedYsrj9Ctr/dBs9+AI1+t6VrWq4loc=" + }, + "kotlin-gradle-plugin-model-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.pom" + ], + "hash": "sha256-QkLJzsOQLX21n4OMupPDDnMeC10yzDnQ5Ft1gKZUBOo=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.6.21": { + "kotlin-klib-commonizer-api-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.jar" + ], + "hash": "sha256-0s9pUu7ziUqs+KnYzx6MZ78hW075AmioyQMYNFMKOHQ=" + }, + "kotlin-klib-commonizer-api-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.pom" + ], + "hash": "sha256-FICJ7qPCUPClDqxomfFFq5D1mJM8GrT5qsldYXKHJfQ=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.21": { + "kotlin-klib-commonizer-embeddable-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.jar" + ], + "hash": "sha256-1jgafq67fkj8p2v1u55fQ/pW3eb9UQXK6N4TXmMoD3A=" + }, + "kotlin-klib-commonizer-embeddable-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.pom" + ], + "hash": "sha256-bz7nSBQNsbaG5nqJehadbeQv1nQkHVVA3FK7o2Re/i4=" + } + }, + "org.jetbrains.kotlin:kotlin-native-utils:1.6.21": { + "kotlin-native-utils-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.jar" + ], + "hash": "sha256-a9hyJOVq4V/+IQTTx2M9cq9sezWCRa08SnbG1f0NNr8=" + }, + "kotlin-native-utils-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.pom" + ], + "hash": "sha256-92q9t+TzvxouyTxiqybO/lKg7UlBAY53w/74BrCXvq8=" + } + }, + "org.jetbrains.kotlin:kotlin-project:1.0.3": { + "kotlin-project-1.0.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-project/1.0.3/kotlin-project-1.0.3.pom" + ], + "hash": "sha256-8lmQMqeX56sX1ozZOy4m0BOUxsYmeoow4v104d/lX7Q=" + } + }, + "org.jetbrains.kotlin:kotlin-project-model:1.6.21": { + "kotlin-project-model-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.jar" + ], + "hash": "sha256-FLaE+Kc+IpZ4ASS/OB3eAT9YLqIzZ6zgGEWAo4Sa6Ng=" + }, + "kotlin-project-model-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.pom" + ], + "hash": "sha256-dgKHUWgMZJAf76wyN5AmtNC9I3rdfw873ujtXH51LG4=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.9.21": { + "kotlin-reflect-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.21/kotlin-reflect-1.9.21.jar" + ], + "hash": "sha256-oTPgSfCk4kllFYJCjhZt5N+slUat9Da2FyEZJV7eUQ8=" + }, + "kotlin-reflect-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.21/kotlin-reflect-1.9.21.pom" + ], + "hash": "sha256-wu93WbdrxNn29SnS8/vBwxpFl8wVhuc6fXqxbRvbtKk=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.6.21": { + "kotlin-reflect-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.jar" + ], + "hash": "sha256-Hh9XIJ9yOMP9FzWhuTOaVlZVB9yiSfg3G/WdkfYBrqo=" + }, + "kotlin-reflect-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.pom" + ], + "hash": "sha256-2nHh493COI1nVkFnLi8DFtucnSEvlG8CbUoOahM2p/M=" + } + }, + "org.jetbrains.kotlin:kotlin-runtime:1.0.3": { + "kotlin-runtime-1.0.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.jar" + ], + "hash": "sha256-jBkPOBLPoR0I6wFBuMh36jJC8N3Q6r/llSV0Pq5ifo4=" + }, + "kotlin-runtime-1.0.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.pom" + ], + "hash": "sha256-LaX+tSEGymCnZiDUaRgktUkbyi7ojMJVcwALCX3lRRc=" + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime:1.6.21": { + "kotlin-script-runtime-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.jar" + ], + "hash": "sha256-YGw0p+bo5DnpIIdl59dbHbz4Dzg1Pz4puydFbXs3EXE=" + }, + "kotlin-script-runtime-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.pom" + ], + "hash": "sha256-jVeQOOsdLK0DMFKOKdyMy4rozQ1WClRMXBswqT7O/t4=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common:1.6.21": { + "kotlin-scripting-common-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar" + ], + "hash": "sha256-v79fA2I3zTPCX7oz1IlI2ZXbgYbOPwnDGvnCnIDOnK4=" + }, + "kotlin-scripting-common-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom" + ], + "hash": "sha256-qgWvDyJWUokIeXiduzo6UY4XdWqFsT1UCo3P3wPL+5w=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.21": { + "kotlin-scripting-compiler-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar" + ], + "hash": "sha256-XJNzrzrkC3PW12JLJOjOEXIUSV2GLebSz7YYpxGRBrE=" + }, + "kotlin-scripting-compiler-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom" + ], + "hash": "sha256-C32qtju7PFTd0+NF6wzLI3aAv9TDh7Zfzllt/0uEe9s=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.6.21": { + "kotlin-scripting-compiler-impl-embeddable-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar" + ], + "hash": "sha256-5ARLjeAehGM5I3BvQ82oDTfYu++M6ahm+dlZYt3SBIA=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom" + ], + "hash": "sha256-gIxqOEi7Xk9sYWmKxYkxIVc8Q9s4FCNW6D3q0EyzhjQ=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.6.21": { + "kotlin-scripting-jvm-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar" + ], + "hash": "sha256-ksA/6r9L3ZLVoixRp0i9NAJ0Z8PY9MZftbV0uGsH0QQ=" + }, + "kotlin-scripting-jvm-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom" + ], + "hash": "sha256-i5q1hXoYheSL2uAPqosix0sNPkCmNPyeCadG+op1fTI=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.9.21": { + "kotlin-stdlib-1.9.21-all.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21-all.jar" + ], + "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" + }, + "kotlin-stdlib-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.jar" + ], + "hash": "sha256-O0eTE6tsrqTl4l097oyoDDAsibpz4a9Nr6oQD275KWo=" + }, + "kotlin-stdlib-1.9.21.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.module" + ], + "hash": "sha256-0wGffw1xkkzkcpjJzEavAkX3UhlxmzXFkV+8x+emk5U=" + }, + "kotlin-stdlib-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.pom" + ], + "hash": "sha256-yAfZL3xqobZcBs+HIyNjUE5pD8o/PB4nIGYwoTIv1+A=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.6.21": { + "kotlin-stdlib-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.jar" + ], + "hash": "sha256-c5xSZnK7M3Vzso9jr6gwbrCIsMOgln9W1sifSjASpJI=" + }, + "kotlin-stdlib-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.pom" + ], + "hash": "sha256-zkJyW6Ab2DbNqmZ9l032hL9vjxXng5JjMgraf/quHzQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.3.61": { + "kotlin-stdlib-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom" + ], + "hash": "sha256-2+W6vNjUPpsIwoRWgLU/wbs+BRxIBYAt3Q7T6OLFCoQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.0.3": { + "kotlin-stdlib-1.0.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.jar" + ], + "hash": "sha256-ZyHVKFgAZF7WgZP35t0H0srOCd6fO3XN8fMFD0Y1l4E=" + }, + "kotlin-stdlib-1.0.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.pom" + ], + "hash": "sha256-QK5yi+5hvXgSHcWjdko/vH1jRYaHuRmI2qXKMhFQNx0=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.21": { + "kotlin-stdlib-common-1.9.21.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.21/kotlin-stdlib-common-1.9.21.module" + ], + "hash": "sha256-aNyOhKoF9SeMFlBSR9cTRtNRK57a3UH2E9ZXyUxZmTs=" + }, + "kotlin-stdlib-common-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.21/kotlin-stdlib-common-1.9.21.pom" + ], + "hash": "sha256-d4C4Z7/lc/y7D9H5Jx3aVAEhfG1or5OTV0zYYglX+K4=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21": { + "kotlin-stdlib-common-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.jar" + ], + "hash": "sha256-GDvsWc2fOhSVexkOjIec8RlL0fEGsKe24cu4eQ0kI2M=" + }, + "kotlin-stdlib-common-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom" + ], + "hash": "sha256-W8FW7nP9PC2sil7FSNWBtjMzNUfC/r7Zz2VH//FSa6I=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61": { + "kotlin-stdlib-common-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom" + ], + "hash": "sha256-4i2wCbsaYWNtlCVjWYlzbbXj/KSUgJq/JERo3EdM/AQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50": { + "kotlin-stdlib-common-1.3.50.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom" + ], + "hash": "sha256-tjlv6ALXvHajgUheJmy5dfOy8tPdm/chOqtsonpWH8E=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0": { + "kotlin-stdlib-jdk7-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.0/kotlin-stdlib-jdk7-1.8.0.jar" + ], + "hash": "sha256-TIidHZgD9fLrbBWSprfmI2msdmDJ7uFauhb+wFkWNmY=" + }, + "kotlin-stdlib-jdk7-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.0/kotlin-stdlib-jdk7-1.8.0.pom" + ], + "hash": "sha256-36lkSmrluJjuR1ux9X6DC6H3cK7mycFfgRKqOBGAGEo=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21": { + "kotlin-stdlib-jdk7-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.jar" + ], + "hash": "sha256-8bBjTbuUFyA4RjAguy3UXKJoSfjOKdYlrLDxVp0R2+4=" + }, + "kotlin-stdlib-jdk7-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.pom" + ], + "hash": "sha256-ARzSjruf3oFrA1nVrhCjZ07A/yxTEMBBLCDv6Oo9oG4=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61": { + "kotlin-stdlib-jdk7-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar" + ], + "hash": "sha256-EfSlfj59gfPxUtXc7+Ob13YUtalBJf87EVJrChmsOYk=" + }, + "kotlin-stdlib-jdk7-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom" + ], + "hash": "sha256-xBYICuq9uRGKCO54wo4oVgOM2FhYQipx98Rr8nb2Z6c=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0": { + "kotlin-stdlib-jdk8-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.0/kotlin-stdlib-jdk8-1.8.0.jar" + ], + "hash": "sha256-BbYoBEQbDJoZILa31c9zKaTiS2JYR44ysfBGygGQCUY=" + }, + "kotlin-stdlib-jdk8-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.0/kotlin-stdlib-jdk8-1.8.0.pom" + ], + "hash": "sha256-K7bHVRuXx7oCn5hmWC56oZ1jq/1M1T2j/AxGLzq1/CY=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21": { + "kotlin-stdlib-jdk8-1.6.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.jar" + ], + "hash": "sha256-2rRUibR3NtWfzkS4BnbxlHqba8qxD9YOh4qDvYKmlUw=" + }, + "kotlin-stdlib-jdk8-1.6.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.pom" + ], + "hash": "sha256-g2oReaCNJJFGl9JhLgO4SKCHyAy0sMoj+c+rJH86dcQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61": { + "kotlin-stdlib-jdk8-1.3.61.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar" + ], + "hash": "sha256-ODm6fet5g3XaGAe8Rp0c8xXbemJ1WZ9zMYQ3R3LsOyE=" + }, + "kotlin-stdlib-jdk8-1.3.61.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom" + ], + "hash": "sha256-4wGH5XIMpkC45oaG8g3QJQ3O8Bk9VuVWnDxKYSdzErY=" + } + }, + "org.jetbrains.kotlin:kotlin-tooling-metadata:1.6.21": { + "kotlin-tooling-metadata-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.jar" + ], + "hash": "sha256-Tsk9BRYGawtki6mHxtPWX2+wZ9wLu6lcHs5h4EKEiOU=" + }, + "kotlin-tooling-metadata-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.pom" + ], + "hash": "sha256-uwYH34aI9gLBwvTQmWMz/YsDtpMoaGpud15S9/sNFxg=" + } + }, + "org.jetbrains.kotlin:kotlin-util-io:1.6.21": { + "kotlin-util-io-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.jar" + ], + "hash": "sha256-wCxUcFYyGLcDvh5xbi0M6leH01y+tryUbfAMAM1CrNI=" + }, + "kotlin-util-io-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.pom" + ], + "hash": "sha256-52nyybmRQIYlhKLAoRLIQ3P0fkryrxbQHOSThRMZMhk=" + } + }, + "org.jetbrains.kotlin:kotlin-util-klib:1.6.21": { + "kotlin-util-klib-1.6.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.jar" + ], + "hash": "sha256-7iGKnoGAwbNIwawc+K1xj2qseLp+JrUIEyNIT2Q8YbI=" + }, + "kotlin-util-klib-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.pom" + ], + "hash": "sha256-EsegqvZnLbHXgxxHGWV/+b9rEXGbD8h9iNcnXzl/lKs=" + } + }, + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.6.21": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.6.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom" + ], + "hash": "sha256-hKJnm90W1DkKJmp58Gzaix+iq38XlowYk0l84ZWOHEQ=" + } + }, + "org.jetbrains.kotlinx:atomicfu:0.23.1": { + "atomicfu-0.23.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.jar" + ], + "hash": "sha256-fbhmDr5LkbtHjts2FsTjpQulnAfcpRfR4ShMA/6GrFc=" + }, + "atomicfu-0.23.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.module" + ], + "hash": "sha256-Pokf5ja1UQgZIQD884saObzRwlM+I8Ri/AdkTur8sg8=" + }, + "atomicfu-0.23.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.pom" + ], + "hash": "sha256-aIt5ABn0F87APmldZWexc7o7skGJVBZi8U/2ZEG1Pas=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0": { + "kotlinx-coroutines-bom-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.0/kotlinx-coroutines-bom-1.8.0.pom" + ], + "hash": "sha256-Ejnp2+E5fNWXE0KVayURvDrOe2QYQuQ3KgiNz6i5rVU=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0": { + "kotlinx-coroutines-core-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.jar" + ], + "hash": "sha256-IKpDS2qTDqZtLmGwDe764J/qPTL5ZA0uDCcTEogOCt0=" + }, + "kotlinx-coroutines-core-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.module" + ], + "hash": "sha256-FE7s1TZd4+MNe0YibAWAUeOZVbXBieMfpMfP+5nWILo=" + }, + "kotlinx-coroutines-core-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.pom" + ], + "hash": "sha256-yglaS/iLR0+trOgzLBCXC3nLgBu/XfBHo5Ov4Ql28yE=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3": { + "kotlinx-coroutines-core-1.3.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom" + ], + "hash": "sha256-KZmeUobJiKm3K3xt/rmE2fohxRcY9bb5P1Yh5wClN/4=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.0": { + "kotlinx-coroutines-core-common-1.3.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.jar" + ], + "hash": "sha256-Evof8J9dtFxlGJKP9HmjZPOqEXSRW6JgWkIF7GCwGMM=" + }, + "kotlinx-coroutines-core-common-1.3.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.pom" + ], + "hash": "sha256-V2kqeg3vYTmMQz4s87C0p0l4ZpQuBLFFshG1t57CoYM=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0": { + "kotlinx-coroutines-core-jvm-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.jar" + ], + "hash": "sha256-mGCQahk3SQv187BtLw4Q70UeZblbJp8i2vaKPR9QZcU=" + }, + "kotlinx-coroutines-core-jvm-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.module" + ], + "hash": "sha256-/2oi2kAECTh1HbCuIRd+dlF9vxJqdnlvVCZye/dsEig=" + }, + "kotlinx-coroutines-core-jvm-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.pom" + ], + "hash": "sha256-pWM6vVNGfOuRYi2B8umCCAh3FF4LduG3V4hxVDSIXQs=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" + } + }, + "org.junit.platform:junit-platform-commons:1.5.2": { + "junit-platform-commons-1.5.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.jar" + ], + "hash": "sha256-/ESv38DyDIXnGmbnlDKBrvO8Hg/WLS1po2y2kB5oLBA=" + }, + "junit-platform-commons-1.5.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.pom" + ], + "hash": "sha256-O9DU3tYyqK+MpYf7Z2QBnedxsda8uJrNViQ1oQCfqto=" + } + }, + "org.junit.platform:junit-platform-engine:1.5.2": { + "junit-platform-engine-1.5.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.jar" + ], + "hash": "sha256-/yC6StjADvF7rvnFVRL5wC2aaHQPfxrAGppqoCOZMfg=" + }, + "junit-platform-engine-1.5.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.pom" + ], + "hash": "sha256-LUuVVVwh4IXrwd299C156x1VZA3Bk7G35hACQP0vGJ8=" + } + }, + "org.opentest4j:opentest4j:1.2.0": { + "opentest4j-1.2.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" + ], + "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" + }, + "opentest4j-1.2.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" + ], + "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" + } + }, + "org.postgresql:pgjdbc-core-parent:1.1.3": { + "pgjdbc-core-parent-1.1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/postgresql/pgjdbc-core-parent/1.1.3/pgjdbc-core-parent-1.1.3.pom" + ], + "hash": "sha256-n7TAlyDu+QAZ0Oqs7KQ3bF8P7XTmOTGxx+RGA/r6orQ=" + } + }, + "org.postgresql:pgjdbc-versions:1.1.3": { + "pgjdbc-versions-1.1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/postgresql/pgjdbc-versions/1.1.3/pgjdbc-versions-1.1.3.pom" + ], + "hash": "sha256-6MhIqzxkHBSbTVUp5zVMta7Tn6YFASA03n2uUXQqSQg=" + } + }, + "org.postgresql:postgresql:42.2.2": { + "postgresql-42.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.jar" + ], + "hash": "sha256-GZZSQCajAnhT85MuhjnvgTgH0bY/4Ugy9BD/+kJ0+nA=" + }, + "postgresql-42.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.pom" + ], + "hash": "sha256-NbNCwrBu1Cf6VP/xw3GNQ2HvrcNC7DJM7DnBeKm481Y=" + } + }, + "org.slf4j:slf4j-api:2.0.9": { + "slf4j-api-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar" + ], + "hash": "sha256-CBiTDcjX3rtAMgRhFpHaWOSdQsULb/z9zgLa23w8K2w=" + }, + "slf4j-api-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.pom" + ], + "hash": "sha256-nDplT50KoaNLMXjr5TqJx2eS4dgfwelznL6bFhBSM4U=" + } + }, + "org.slf4j:slf4j-bom:2.0.9": { + "slf4j-bom-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-bom/2.0.9/slf4j-bom-2.0.9.pom" + ], + "hash": "sha256-6u9FhIB9gSxqC2z4OdXkf1DHVDJ3GbnOCB4nHRXaYkM=" + } + }, + "org.slf4j:slf4j-parent:2.0.9": { + "slf4j-parent-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.9/slf4j-parent-2.0.9.pom" + ], + "hash": "sha256-wwfwQkFB8cUArlzw04aOSGbLIZ7V45m2bFoHxh6iH9U=" + } + }, + "org.slf4j:slf4j-parent:1.8.0-beta4": { + "slf4j-parent-1.8.0-beta4.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.8.0-beta4/slf4j-parent-1.8.0-beta4.pom" + ], + "hash": "sha256-uvujCoPVOpRVAZZEdWKqjNrRRWFcKJMsaku0QcNVMQE=" + } + }, + "org.slf4j:slf4j-simple:1.8.0-beta4": { + "slf4j-simple-1.8.0-beta4.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.jar" + ], + "hash": "sha256-usZqvFtEYt/2Lh4ZqzsKZcFg681WTPJZENsAOo5WnP0=" + }, + "slf4j-simple-1.8.0-beta4.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.pom" + ], + "hash": "sha256-oXrS6OU00OgZ6o0UIT3nSNRlD/8qJX0+kqE9oxAoe/c=" + } + }, + "org.sonatype.oss:oss-parent:9": { + "oss-parent-9.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom", + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom" + ], + "hash": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno=" + } + }, + "org.sonatype.oss:oss-parent:7": { + "oss-parent-7.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" + ], + "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" + } + }, + "org.spekframework.spek2:spek-dsl-jvm:2.0.9": { + "spek-dsl-jvm-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.jar" + ], + "hash": "sha256-gohf+MCcJfvntBQS/IoIyCAn8kuE6gH3ZL5jm8CYGeg=" + }, + "spek-dsl-jvm-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.pom" + ], + "hash": "sha256-q3b2C4rYViJC615qA1SLpiL6xHDFpE6pzckZ34VzgQQ=" + } + }, + "org.spekframework.spek2:spek-runner-junit5:2.0.9": { + "spek-runner-junit5-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.jar" + ], + "hash": "sha256-K0ZmWbdh12OKtc2CX8yC3CrA1FPJ6yAKGUAHG4KkpYY=" + }, + "spek-runner-junit5-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.pom" + ], + "hash": "sha256-7GcxgitATmAvUWoOpzJFBWgHoMWg2Kb4SkTjqnfrSjg=" + } + }, + "org.spekframework.spek2:spek-runtime-jvm:2.0.9": { + "spek-runtime-jvm-2.0.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.jar" + ], + "hash": "sha256-dZ18fuF78XJYwySioaGwhusrz2QnnBfh+av1Xsph+nQ=" + }, + "spek-runtime-jvm-2.0.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.pom" + ], + "hash": "sha256-9o3lUgIMgh6TRueEI5uGtT5rR1+2DQRoWsdGILeiKeU=" + } + }, + "org.xerial:sqlite-jdbc:3.30.1": { + "sqlite-jdbc-3.30.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.jar" + ], + "hash": "sha256-KAA0qJkwABBMWza8XhE5sOgt8d6c/ZUfUpva3q9vRW0=" + }, + "sqlite-jdbc-3.30.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.pom" + ], + "hash": "sha256-eGpZKh7AtwPJJVOlE37gAxGb5UmlGTM05t44WrKGb3I=" } } } \ No newline at end of file diff --git a/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json b/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json index 9b675a2..a62ed46 100644 --- a/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json +++ b/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json @@ -1,674 +1,666 @@ { - "com.gradle.publish:plugin-publish-plugin": { - "1.2.1": { - "plugin-publish-plugin-1.2.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" - ], - "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" - }, - "plugin-publish-plugin-1.2.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" - ], - "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" - }, - "plugin-publish-plugin-1.2.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom" - ], - "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" - } - } - }, - "org.apache.maven:maven-model": { - "3.6.3": { - "maven-model-3.6.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" - ], - "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" - }, - "maven-model-3.6.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" - ], - "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" - } - } - }, - "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin": { - "4.2.1": { - "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.2.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.2.1/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.2.1.pom" - ], - "hash": "sha256-MR/57KF7D2ycyBBOu4jHPTikmFoEiLAWcLwr4J5aIyA=" - } - } - }, - "org.gradle.kotlin:gradle-kotlin-dsl-plugins": { - "4.2.1": { - "gradle-kotlin-dsl-plugins-4.2.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.2.1/gradle-kotlin-dsl-plugins-4.2.1.jar" - ], - "hash": "sha256-UU8yyenA0IAji9/8ASH0PRYEnFeFqadeuGYMTrplj/o=" - }, - "gradle-kotlin-dsl-plugins-4.2.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.2.1/gradle-kotlin-dsl-plugins-4.2.1.module" - ], - "hash": "sha256-0w8XMxUzcV3LgIG4YvZjGUf4YPHLjgWjJcexiIz/KgA=" - }, - "gradle-kotlin-dsl-plugins-4.2.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.2.1/gradle-kotlin-dsl-plugins-4.2.1.pom" - ], - "hash": "sha256-lMOWsjFHh+ZXZg516zxtQKFdolRygvFMJLsiXKuzJaI=" - } - } - }, - "org.jetbrains.intellij.deps:trove4j": { - "1.0.20200330": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } - } - }, - "org.jetbrains.kotlin:kotlin-android-extensions": { - "1.9.20": { - "kotlin-android-extensions-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.20/kotlin-android-extensions-1.9.20.jar" - ], - "hash": "sha256-t3EjlGnwrwfhgPdGz95qeVbCtiYeGuIOWx1iCg3Sm/8=" - }, - "kotlin-android-extensions-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.20/kotlin-android-extensions-1.9.20.pom" - ], - "hash": "sha256-DXrbht5Z1d44B+3tGwlbyeFLAK3x3CUKX2LJw/VBg+Y=" - } - } - }, - "org.jetbrains.kotlin:kotlin-assignment": { - "1.9.20": { - "kotlin-assignment-1.9.20-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.20/kotlin-assignment-1.9.20-gradle81.jar" - ], - "hash": "sha256-ztlN7cdMOUOlaRsY6tTRZzLwvbQQeLAoJND8foLj/uI=" - }, - "kotlin-assignment-1.9.20.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.20/kotlin-assignment-1.9.20.module" - ], - "hash": "sha256-KfAzaty3JPax04XG7SfYv1FikHMXu8gvuaTjGJ8D5Gc=" - }, - "kotlin-assignment-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.20/kotlin-assignment-1.9.20.pom" - ], - "hash": "sha256-MjMxOtdq5rpN2Npal4hCduW0aik7RJWLw1LKAdRm9+0=" - } - } - }, - "org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable": { - "1.9.20": { - "kotlin-assignment-compiler-plugin-embeddable-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.20/kotlin-assignment-compiler-plugin-embeddable-1.9.20.jar" - ], - "hash": "sha256-xiG4V/X+ExIZ2FduGR0G8tt6bfgPoUnQRsMuuiaQat0=" - }, - "kotlin-assignment-compiler-plugin-embeddable-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.20/kotlin-assignment-compiler-plugin-embeddable-1.9.20.pom" - ], - "hash": "sha256-Df0Ud50u4/gHw+/3IBxl0jNX87jMEYK0sFbkdJX9UoE=" - } - } - }, - "org.jetbrains.kotlin:kotlin-build-tools-api": { - "1.9.20": { - "kotlin-build-tools-api-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.20/kotlin-build-tools-api-1.9.20.jar" - ], - "hash": "sha256-xyKUjFaDUs3BncioskXRSq5QfU3P/eansmxTXEcsGxc=" - }, - "kotlin-build-tools-api-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.20/kotlin-build-tools-api-1.9.20.pom" - ], - "hash": "sha256-P7w3D4WHo9joDGny3M1lxVFzu0S505QuFVNrzjzNwaY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable": { - "1.9.20": { - "kotlin-compiler-embeddable-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.20/kotlin-compiler-embeddable-1.9.20.jar" - ], - "hash": "sha256-olAk/l2oRA3gGvBFxPy5VKIvB4c47AJhYIXwz8V7JwI=" - }, - "kotlin-compiler-embeddable-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.20/kotlin-compiler-embeddable-1.9.20.pom" - ], - "hash": "sha256-x9jfyJ5iFEJQRQa5SS+3YxF0BhIM6RByvAZ/+W0mTCM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-compiler-runner": { - "1.9.20": { - "kotlin-compiler-runner-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.20/kotlin-compiler-runner-1.9.20.jar" - ], - "hash": "sha256-SXacBG+NOSZUpKtSr3lUVb1B6I2Dkq6rkCjw7dXo1Qs=" - }, - "kotlin-compiler-runner-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.20/kotlin-compiler-runner-1.9.20.pom" - ], - "hash": "sha256-XKJ9myEE4yMOf4Grqm62Eb85htdKAOVl4l7rGGENDYo=" - } - } - }, - "org.jetbrains.kotlin:kotlin-daemon-client": { - "1.9.20": { - "kotlin-daemon-client-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.20/kotlin-daemon-client-1.9.20.jar" - ], - "hash": "sha256-WCIwy8/WXTa5S8nRJ/kAJLjPF9+kpn72qSnxTGwnZhw=" - }, - "kotlin-daemon-client-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.20/kotlin-daemon-client-1.9.20.pom" - ], - "hash": "sha256-0qQYFjppSNcrBMvjUgOi4wXhw41WgJAXCshy+IH6k4E=" - } - } - }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable": { - "1.9.20": { - "kotlin-daemon-embeddable-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.20/kotlin-daemon-embeddable-1.9.20.jar" - ], - "hash": "sha256-qTnLXW7ip1jJKFvZ8yhoJL6r4S2aS19J94TQvKMp3qU=" - }, - "kotlin-daemon-embeddable-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.20/kotlin-daemon-embeddable-1.9.20.pom" - ], - "hash": "sha256-zYkt52nMILl5jiJTjZljB0sF8cRI8uAat3VH7rZZfUE=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin": { - "1.9.20": { - "kotlin-gradle-plugin-1.9.20-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.20/kotlin-gradle-plugin-1.9.20-gradle81.jar" - ], - "hash": "sha256-BJEPymUvjb6ASknI5ylxv2QdA82LRaBlukzhDGWE6qw=" - }, - "kotlin-gradle-plugin-1.9.20.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.20/kotlin-gradle-plugin-1.9.20.module" - ], - "hash": "sha256-VVJcPgNpJSnI8ZZgd4mtyO6xogfqEx+NnBwytJf35jY=" - }, - "kotlin-gradle-plugin-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.20/kotlin-gradle-plugin-1.9.20.pom" - ], - "hash": "sha256-HOzt6DD+6ar1QulF/AQWZ1FYqlVgzGKYlcsvd3FBiTY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations": { - "1.9.20": { - "kotlin-gradle-plugin-annotations-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.20/kotlin-gradle-plugin-annotations-1.9.20.jar" - ], - "hash": "sha256-Klw2IuJGhYTRq32rOs2P+2BAO2N90GA69nXibToFQyk=" - }, - "kotlin-gradle-plugin-annotations-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.20/kotlin-gradle-plugin-annotations-1.9.20.pom" - ], - "hash": "sha256-9L+gqiwjkuTyPia38aQZhlvrdqAW2BgIcrsIbMADWU4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { - "1.9.20": { - "kotlin-gradle-plugin-api-1.9.20-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.20/kotlin-gradle-plugin-api-1.9.20-gradle81.jar" - ], - "hash": "sha256-KHwmdl+GkuXrVQWFQSaBnPuwx9XUm75fRXcUJ+oZkT0=" - }, - "kotlin-gradle-plugin-api-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.20/kotlin-gradle-plugin-api-1.9.20.jar" - ], - "hash": "sha256-KHwmdl+GkuXrVQWFQSaBnPuwx9XUm75fRXcUJ+oZkT0=" - }, - "kotlin-gradle-plugin-api-1.9.20.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.20/kotlin-gradle-plugin-api-1.9.20.module" - ], - "hash": "sha256-SD51d/Tp4tPKF/aqZPRlXUYDwrHQ5t/VlRVS70DV10U=" - }, - "kotlin-gradle-plugin-api-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.20/kotlin-gradle-plugin-api-1.9.20.pom" - ], - "hash": "sha256-oZKj3Ob7gpwnvQgdggXYmJlp1R/D7J5tctzERt6H9ys=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { - "1.9.20": { - "kotlin-gradle-plugin-idea-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.20/kotlin-gradle-plugin-idea-1.9.20.jar" - ], - "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" - }, - "kotlin-gradle-plugin-idea-1.9.20.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.20/kotlin-gradle-plugin-idea-1.9.20.module" - ], - "hash": "sha256-Hms5OB86T5sUl0VOgl+JQuDJxuw9wbii/WNuI3GV+Ks=" - }, - "kotlin-gradle-plugin-idea-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.20/kotlin-gradle-plugin-idea-1.9.20.pom" - ], - "hash": "sha256-m6hUoroB+w9/7fl8b5P2W42otQ6jv1OQofuoDmQqMic=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { - "1.9.20": { - "kotlin-gradle-plugin-idea-proto-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.20/kotlin-gradle-plugin-idea-proto-1.9.20.jar" - ], - "hash": "sha256-xnsNiEn+vdmpZO2gvRZ8FnxNBWyo3TiSQdkuHXY8lJA=" - }, - "kotlin-gradle-plugin-idea-proto-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.20/kotlin-gradle-plugin-idea-proto-1.9.20.pom" - ], - "hash": "sha256-1AENSzu56SQPPeDnjo31pYEjbzPWLoBwyP3yUxdwNZQ=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { - "1.9.20": { - "kotlin-gradle-plugin-model-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.20/kotlin-gradle-plugin-model-1.9.20.jar" - ], - "hash": "sha256-f5MPDkVLdYGPX4l2ulFfOuyIdnGl/oU4Csl/BdqZhqc=" - }, - "kotlin-gradle-plugin-model-1.9.20.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.20/kotlin-gradle-plugin-model-1.9.20.module" - ], - "hash": "sha256-OZaqq5tUbM9FWxyvDDFuoy6c5kb+tU6XOvTWn7YF8kg=" - }, - "kotlin-gradle-plugin-model-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.20/kotlin-gradle-plugin-model-1.9.20.pom" - ], - "hash": "sha256-jXpoeFaRP5ydn96r2/hg6cEZ65WtmdXbXYisIya1FJs=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugins-bom": { - "1.9.20": { - "kotlin-gradle-plugins-bom-1.9.20.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.20/kotlin-gradle-plugins-bom-1.9.20.module" - ], - "hash": "sha256-dyD4Rc/jGaoablsjOH5pIKNema5CGMoPb24H/RcTCTw=" - }, - "kotlin-gradle-plugins-bom-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.20/kotlin-gradle-plugins-bom-1.9.20.pom" - ], - "hash": "sha256-bzukKj6YFwAoTJVhRu9NcWuJrb5dgDq5JVPewhY0QzA=" - } - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { - "1.9.20": { - "kotlin-klib-commonizer-api-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.20/kotlin-klib-commonizer-api-1.9.20.jar" - ], - "hash": "sha256-ibYmCCiVMELjEKUlkqpbWV9fibZBzGo9OoFV75LYj/4=" - }, - "kotlin-klib-commonizer-api-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.20/kotlin-klib-commonizer-api-1.9.20.pom" - ], - "hash": "sha256-l4D9xWeaTbGhcPpSEPVhzrKtRrb4Kchqwx/HjPkpbGU=" - } - } - }, - "org.jetbrains.kotlin:kotlin-native-utils": { - "1.9.20": { - "kotlin-native-utils-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.20/kotlin-native-utils-1.9.20.jar" - ], - "hash": "sha256-sPkrySU6kH8M4oUyhkP+ijbCftSUtcWRnuCcKSbY6NI=" - }, - "kotlin-native-utils-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.20/kotlin-native-utils-1.9.20.pom" - ], - "hash": "sha256-8+9ZeAaTG0DO7YHZG2nnzHp4Z+zO2S20S7/mEkd2xbw=" - } - } - }, - "org.jetbrains.kotlin:kotlin-project-model": { - "1.9.20": { - "kotlin-project-model-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.20/kotlin-project-model-1.9.20.jar" - ], - "hash": "sha256-JhqbQOJA4lmsNZwWk4AC7MbAhDSlxuXlv/7iQqPFAhg=" - }, - "kotlin-project-model-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.20/kotlin-project-model-1.9.20.pom" - ], - "hash": "sha256-4FhEBdW+70QKZrKQ1uTA3UPqll3DW3cMHqMmSofSczw=" - } - } - }, - "org.jetbrains.kotlin:kotlin-reflect": { - "1.9.20": { - "kotlin-reflect-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.20/kotlin-reflect-1.9.20.jar" - ], - "hash": "sha256-SbZvmonVD9KVTC6K6sgOT0iLCgkyKiXvrWJhV2cT3A8=" - }, - "kotlin-reflect-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.20/kotlin-reflect-1.9.20.pom" - ], - "hash": "sha256-lCtehgLTF+wTZS8cAiIFK7kIF/KM9v6dRxEvCbPo5n0=" - } - }, - "1.6.10": { - "kotlin-reflect-1.6.10.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" - ], - "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" - }, - "kotlin-reflect-1.6.10.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" - ], - "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" - } - } - }, - "org.jetbrains.kotlin:kotlin-sam-with-receiver": { - "1.9.20": { - "kotlin-sam-with-receiver-1.9.20-gradle81.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.20/kotlin-sam-with-receiver-1.9.20-gradle81.jar" - ], - "hash": "sha256-MDCZRpW7ZaAXvjPiQzLpKtDTwdkLyifA9KL3lStV74M=" - }, - "kotlin-sam-with-receiver-1.9.20.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.20/kotlin-sam-with-receiver-1.9.20.module" - ], - "hash": "sha256-goKuJEBF/oGCFBPZSL8mp+/ncYNCGxcOZVj+TC3ORMA=" - }, - "kotlin-sam-with-receiver-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.20/kotlin-sam-with-receiver-1.9.20.pom" - ], - "hash": "sha256-IV1w6BR2xN00PCyRSi9WEhODOXvM4Z8ITLsCqpK2kGM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable": { - "1.9.20": { - "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.20/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.20.jar" - ], - "hash": "sha256-02IXChzBUxYPDLIDjIRBEDS1bAVamzFvMsC3txaMoPI=" - }, - "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.20/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.20.pom" - ], - "hash": "sha256-lo97qpSJb+esipLfy16Tfd22iSIJudwCJUNUugrXf2A=" - } - } - }, - "org.jetbrains.kotlin:kotlin-script-runtime": { - "1.9.20": { - "kotlin-script-runtime-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.20/kotlin-script-runtime-1.9.20.jar" - ], - "hash": "sha256-ompiVqdvdmq4us20CbP4yUDZmXEqjoiGQlK2eNZrq54=" - }, - "kotlin-script-runtime-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.20/kotlin-script-runtime-1.9.20.pom" - ], - "hash": "sha256-vNIn0pN0LFEaJLssVoItlfljivUTW5c+fNo+inZoZXk=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-common": { - "1.9.20": { - "kotlin-scripting-common-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.20/kotlin-scripting-common-1.9.20.jar" - ], - "hash": "sha256-WqCEd8tz95J0E67Gg6SqOz+Z6HvgYwJVzml0UqGkLWU=" - }, - "kotlin-scripting-common-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.20/kotlin-scripting-common-1.9.20.pom" - ], - "hash": "sha256-GH6fO3S9VqCDZJgYx7mkD4vCP2IBKwinvJnD+ohr/wM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { - "1.9.20": { - "kotlin-scripting-compiler-embeddable-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.20/kotlin-scripting-compiler-embeddable-1.9.20.jar" - ], - "hash": "sha256-IYHdDE1SxvaWrZ8Xk0IzeQ9NaCNLFBjWN2/aflw3TE4=" - }, - "kotlin-scripting-compiler-embeddable-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.20/kotlin-scripting-compiler-embeddable-1.9.20.pom" - ], - "hash": "sha256-JmEo2/Q1466/7mU1fd4QLJ7ZKd/rCQHla+eMoUjFc/c=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { - "1.9.20": { - "kotlin-scripting-compiler-impl-embeddable-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.20/kotlin-scripting-compiler-impl-embeddable-1.9.20.jar" - ], - "hash": "sha256-3Jq29pxZKtHx0uK5lLl1CdDuCUgL6mvHce7u8wceuBc=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.20/kotlin-scripting-compiler-impl-embeddable-1.9.20.pom" - ], - "hash": "sha256-bbowA+jK3LFJkt/xNOhmyrWQXquA4nAj3kHCY4WDgZg=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm": { - "1.9.20": { - "kotlin-scripting-jvm-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.20/kotlin-scripting-jvm-1.9.20.jar" - ], - "hash": "sha256-gJ9zvdTdd2auHvLO2WiJbOnAPWpf5t5vZ5l3iFH3W9M=" - }, - "kotlin-scripting-jvm-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.20/kotlin-scripting-jvm-1.9.20.pom" - ], - "hash": "sha256-v4gcbi/Go36p0J/+mMoHLfzajcgoj9ibJMrcYLFNt14=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "1.9.20": { - "kotlin-stdlib-1.9.20-all.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.20/kotlin-stdlib-1.9.20-all.jar" - ], - "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" - }, - "kotlin-stdlib-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.20/kotlin-stdlib-1.9.20.jar" - ], - "hash": "sha256-KKNbzf9G2GT4DzRqYX5IYoSyCNFzeMQZAN+x3pWpDmw=" - }, - "kotlin-stdlib-1.9.20.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.20/kotlin-stdlib-1.9.20.module" - ], - "hash": "sha256-3Mql0xVHD6s5IFAohru4Xy2myGECxl2cBEEFRO7bIBk=" - }, - "kotlin-stdlib-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.20/kotlin-stdlib-1.9.20.pom" - ], - "hash": "sha256-43IWpzLI6Bqf0FtN2JLDDKwMrXtOP9ovlmP0jogHQcA=" - } - } - }, - "org.jetbrains.kotlin:kotlin-tooling-core": { - "1.9.20": { - "kotlin-tooling-core-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.20/kotlin-tooling-core-1.9.20.jar" - ], - "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" - }, - "kotlin-tooling-core-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.20/kotlin-tooling-core-1.9.20.pom" - ], - "hash": "sha256-c9r0kUA5KLFcSTCVeuABrPBPazpLwo/kqld37wlwntY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-util-io": { - "1.9.20": { - "kotlin-util-io-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.20/kotlin-util-io-1.9.20.jar" - ], - "hash": "sha256-x0/aqunXn98DMn7oc4JR4CSySyTYtTd6GkKaw7f3LMo=" - }, - "kotlin-util-io-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.20/kotlin-util-io-1.9.20.pom" - ], - "hash": "sha256-rbH0NbMLIlY6oK5X0/Y5YkWYhIennq+uOOZnb9ggKok=" - } - } - }, - "org.jetbrains.kotlin:kotlin-util-klib": { - "1.9.20": { - "kotlin-util-klib-1.9.20.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.20/kotlin-util-klib-1.9.20.jar" - ], - "hash": "sha256-xFPv4noGMtFhUb/fAIShK4zAGf0ss0LiuIkqzM5OkbI=" - }, - "kotlin-util-klib-1.9.20.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.20/kotlin-util-klib-1.9.20.pom" - ], - "hash": "sha256-Vuv6PpLwCiXzwL/tyaYxCV4oYsj/m6WY+T5pGkCe7c0=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { - "1.5.0": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], - "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" - } - } - }, - "org.jetbrains:annotations": { - "13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "com.gradle.publish:plugin-publish-plugin:1.2.1": { + "plugin-publish-plugin-1.2.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" + ], + "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" + }, + "plugin-publish-plugin-1.2.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" + ], + "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" + }, + "plugin-publish-plugin-1.2.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom" + ], + "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" + } + }, + "org.apache:apache:21": { + "apache-21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom" + ], + "hash": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A=" + } + }, + "org.apache.maven:maven:3.6.3": { + "maven-3.6.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven/3.6.3/maven-3.6.3.pom" + ], + "hash": "sha256-0thiRepmFJvBTS3XK7uWH5ZN1li4CaBXMlLAZTHu7BY=" + } + }, + "org.apache.maven:maven-model:3.6.3": { + "maven-model-3.6.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" + ], + "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" + }, + "maven-model-3.6.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" + ], + "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" + } + }, + "org.apache.maven:maven-parent:33": { + "maven-parent-33.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-parent/33/maven-parent-33.pom" + ], + "hash": "sha256-OFbj/NFpUC1fEv4kUmBOv2x8Al8VZWv6VY6pntKdc+o=" + } + }, + "org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.3.0": { + "gradle-kotlin-dsl-plugins-4.3.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.jar" + ], + "hash": "sha256-+IsyeBRxXRfiD4to/wCbmrGo+8GjyRLDO4TfucEVn78=" + }, + "gradle-kotlin-dsl-plugins-4.3.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.module" + ], + "hash": "sha256-wDF/LfYjmTSfi1NHpsZme9yjHMt1meBsKG/IOPxM7c0=" + }, + "gradle-kotlin-dsl-plugins-4.3.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.pom" + ], + "hash": "sha256-d1G9LyTDRdGbRhGy5+1NZfT1YIA2iuNqpyT5X63VbDw=" + } + }, + "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.3.0": { + "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.3.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom" + ], + "hash": "sha256-hgR9KoSpaXsVkXDj1rLL9Cpv5UCQTYdZzJ8JUsmUnXw=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions:1.9.22": { + "kotlin-android-extensions-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar" + ], + "hash": "sha256-Hl6IFkKpnduPbRPmmVoIwZK8OEGHOWZj2ER8CB2H4k8=" + }, + "kotlin-android-extensions-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom" + ], + "hash": "sha256-lEt8+zPgpvtoRVkEjwKMuWMmyTKiRdXLAhQ7zSwDEVk=" + } + }, + "org.jetbrains.kotlin:kotlin-assignment:1.9.22": { + "kotlin-assignment-1.9.22-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22-gradle82.jar" + ], + "hash": "sha256-SbgHX6DiGLoRuhim9yUE38XwOZQovs8Ta9yHHceBgMU=" + }, + "kotlin-assignment-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22.module" + ], + "hash": "sha256-bxIe+E4ozzMG/eTDHVXC2D14RPJLDnslZfh7Apn7sx0=" + }, + "kotlin-assignment-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22.pom" + ], + "hash": "sha256-9kQYoM3bm9hQ96/CasjyPon7ptlgSNqnNZVWJ5AgbwA=" + } + }, + "org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22": { + "kotlin-assignment-compiler-plugin-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.22/kotlin-assignment-compiler-plugin-embeddable-1.9.22.jar" + ], + "hash": "sha256-KmHdIZ/tvlMYo7HiPA9zm0XtG1sksLZzdRm3hF6Alfg=" + }, + "kotlin-assignment-compiler-plugin-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.22/kotlin-assignment-compiler-plugin-embeddable-1.9.22.pom" + ], + "hash": "sha256-nbJr6D8/Y8Uf972pHjpqQNTDTaAj5ilsAQW7SqZvzJI=" + } + }, + "org.jetbrains.kotlin:kotlin-build-common:1.9.22": { + "kotlin-build-common-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar" + ], + "hash": "sha256-U8PcxTA/WQPmJgrqc+zMaTD5o276KhHNO9On5V32OWY=" + }, + "kotlin-build-common-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom" + ], + "hash": "sha256-KXxfSYoHdIPvic06cQzSt/LlrjgPOjrt+5xBvGI7E0A=" + } + }, + "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22": { + "kotlin-build-tools-api-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar" + ], + "hash": "sha256-3UnLfij08zgvUlDPsFyGT9XwqW0yZbspPHezCtzJP/Y=" + }, + "kotlin-build-tools-api-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom" + ], + "hash": "sha256-DFZLu4fcXs32Q005buob886Xar8IgYCN0Wb6SbBGSfs=" + } + }, + "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22": { + "kotlin-build-tools-impl-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar" + ], + "hash": "sha256-G0jW3gQqUl9jtVdROuEmbWmTSCJbAT+UDjLGPeJolCg=" + }, + "kotlin-build-tools-impl-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom" + ], + "hash": "sha256-tWM/E0m+lcdHRuHimiqm51LoneGrmmUjSS85j6aVWN0=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22": { + "kotlin-compiler-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar" + ], + "hash": "sha256-K/6t7lmrGYjDNtvW5l2ZH3Zq4d2Gg/Km3tX6oCefDKA=" + }, + "kotlin-compiler-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom" + ], + "hash": "sha256-s9o0u29ClqzzoPRDRm8FBsbJnaXNliTW4LdFsiKHhOs=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22": { + "kotlin-compiler-runner-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar" + ], + "hash": "sha256-c+x1u5nr/6iySiSjuFPz9mCWvEapNRrw2sk967acFes=" + }, + "kotlin-compiler-runner-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom" + ], + "hash": "sha256-pO6KZ8HW8lODjAAnKAvLgFCsDc3MrZdIlhOKaaAX6wE=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client:1.9.22": { + "kotlin-daemon-client-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar" + ], + "hash": "sha256-XXPhgVsRZ+Sv4gjwCyp1wIC8WoEHhsqtuOFHh1k6k7k=" + }, + "kotlin-daemon-client-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom" + ], + "hash": "sha256-YsRKZZ2lXbb7El4pKbmNUEow4fSvgU4I5JIUJqpST4o=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22": { + "kotlin-daemon-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar" + ], + "hash": "sha256-kqV4ExcUR9U0Rh+hP+N9yM07f4bYPpsfe7GwvjBUH4s=" + }, + "kotlin-daemon-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom" + ], + "hash": "sha256-9uo9z2v7Og0GmER8SKa88I2Oqs+D/JX+nUGBpeXjwrE=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22": { + "kotlin-gradle-plugin-1.9.22-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar" + ], + "hash": "sha256-1OcY3V8wxrqTLZPM/FswFendPkQUOgUrh3Ao8frlQtw=" + }, + "kotlin-gradle-plugin-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module" + ], + "hash": "sha256-pPRqwMq9jVzbaJ0tN9GdWFhPcIv59k/+TpgKL/dTS7U=" + }, + "kotlin-gradle-plugin-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom" + ], + "hash": "sha256-A3750tSupA9JKdglE1g+STwOBRVuDaix1/Ujurhobyc=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22": { + "kotlin-gradle-plugin-annotations-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar" + ], + "hash": "sha256-lnaDy5jZkQFFYH+/W0VilbQ/Cq+Tsbunv2mS5zHLJOw=" + }, + "kotlin-gradle-plugin-annotations-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom" + ], + "hash": "sha256-Y7por+B4/3D3CPnpecaTxFv+iQQfeWQbC4H2tKEm7rs=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22": { + "kotlin-gradle-plugin-api-1.9.22-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar" + ], + "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" + }, + "kotlin-gradle-plugin-api-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar" + ], + "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" + }, + "kotlin-gradle-plugin-api-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module" + ], + "hash": "sha256-H0SJxTBPmlEqVof/zAqvCTCvydcgUdOpBfrAcANi+3s=" + }, + "kotlin-gradle-plugin-api-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom" + ], + "hash": "sha256-ZAFewaGutVCqGCjCQuIoODDFD2g2TkCDH+FYj9wEEfU=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22": { + "kotlin-gradle-plugin-idea-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar" + ], + "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" + }, + "kotlin-gradle-plugin-idea-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module" + ], + "hash": "sha256-z+LCbjMPaAMsAD+lJMAx5aYPzo2Jn/8uQjFBKL60QCs=" + }, + "kotlin-gradle-plugin-idea-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom" + ], + "hash": "sha256-3BSjKHVDun5QRs1OCVAtJ4hMqYfshwb1+xid54luOsw=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22": { + "kotlin-gradle-plugin-idea-proto-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar" + ], + "hash": "sha256-9dgu5hlmotmK364Z8k1hcwIsFUBIls3yNjQANe5owPU=" + }, + "kotlin-gradle-plugin-idea-proto-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom" + ], + "hash": "sha256-huMsqCkn2ogKHPNDpA7MIJgHXm/XInOzTVDfpUTzRjs=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22": { + "kotlin-gradle-plugin-model-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar" + ], + "hash": "sha256-UQj61b4UmCXs46ABA8PCHPGv6VS7ZLhweJVyk511OMs=" + }, + "kotlin-gradle-plugin-model-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module" + ], + "hash": "sha256-L/MBPfK6epteiwBOhIF1DI0PqVOtAHoZbYXSY2cdvq4=" + }, + "kotlin-gradle-plugin-model-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom" + ], + "hash": "sha256-gfUmlHml2X7oeSpITIMr495DgggSZxlhUAHKyI5C9qg=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22": { + "kotlin-gradle-plugins-bom-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module" + ], + "hash": "sha256-Qj401h0iCxoN3BgUCGqM6rTa2ed5ArDOjLRyG789xu0=" + }, + "kotlin-gradle-plugins-bom-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom" + ], + "hash": "sha256-da2/XHjOJHwiuvNijQs/8c9+19N9YB66cwTXerdb3Z8=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22": { + "kotlin-klib-commonizer-api-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar" + ], + "hash": "sha256-jC9lQpwYLi5KLgnLkQ5iuW227tKFWUuPga+CO35ZROI=" + }, + "kotlin-klib-commonizer-api-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom" + ], + "hash": "sha256-EMrJcNMAo0icM/CzBBVv8DLZWVm+WqrDuIAoKtWGIv4=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22": { + "kotlin-klib-commonizer-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar" + ], + "hash": "sha256-c/50PnTSEoPTg9C6voX9CMRCr8GnvYgIL42gUQ0FPUs=" + }, + "kotlin-klib-commonizer-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom" + ], + "hash": "sha256-dxghItppe2YqSRPX3Z/mu68ATOhH/YZ9oj6v8MTIJEs=" + } + }, + "org.jetbrains.kotlin:kotlin-native-utils:1.9.22": { + "kotlin-native-utils-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar" + ], + "hash": "sha256-eGwSfdVTXbLDmuWXzQsMrZ6RS4PiNvHbAlEjXMnGUqw=" + }, + "kotlin-native-utils-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom" + ], + "hash": "sha256-EcUUwF7qOuno4Wq0l5bxEd9DxzSCMeNfr0xCjMT3Q+o=" + } + }, + "org.jetbrains.kotlin:kotlin-project-model:1.9.22": { + "kotlin-project-model-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar" + ], + "hash": "sha256-zBHVwLGQnFsKCP0l7w51T/0r9Wyu9mX7eFEiI15UKhg=" + }, + "kotlin-project-model-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom" + ], + "hash": "sha256-659KFngb/ADM7IAw++XuIo5vKydxxQwmezIY/rAGW0A=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.9.22": { + "kotlin-reflect-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar" + ], + "hash": "sha256-d/MRyhOEgR1Rn9o4n8sSaL2qBY1gUEbg7edsA7DfPpc=" + }, + "kotlin-reflect-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom" + ], + "hash": "sha256-xxLjWN97kxi2j1RjlxsIhnODf8DKQoXRw4LIEC7da18=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.6.10": { + "kotlin-reflect-1.6.10.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" + ], + "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" + }, + "kotlin-reflect-1.6.10.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" + ], + "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" + } + }, + "org.jetbrains.kotlin:kotlin-sam-with-receiver:1.9.22": { + "kotlin-sam-with-receiver-1.9.22-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22-gradle82.jar" + ], + "hash": "sha256-cvvN3L25ZaQ9uWfLKjGaXXp3NttQrCA8lrmatVc5wkE=" + }, + "kotlin-sam-with-receiver-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22.module" + ], + "hash": "sha256-7rpm+YBjiXkSCkm5/aW4YeEHLWCQIzi1NyYH8kljDC0=" + }, + "kotlin-sam-with-receiver-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22.pom" + ], + "hash": "sha256-AD+clOG/rX8ZDm70F+kTOhCjH3hRMBPlkHS2DzZZLCY=" + } + }, + "org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22": { + "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.22/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.jar" + ], + "hash": "sha256-jqUUoRQABsxXoHMVsVoTaI7W/qFwfzrJjpzoCVu2z38=" + }, + "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.22/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.pom" + ], + "hash": "sha256-MM9L0JPCbn/Ryt/F1Qop5q60WXUSeia84rEJUfJPgqo=" + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime:1.9.22": { + "kotlin-script-runtime-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar" + ], + "hash": "sha256-uAZwV59/ktRz2NWDTwsST3dVxFmP6UskQYOwKDSDRXQ=" + }, + "kotlin-script-runtime-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom" + ], + "hash": "sha256-/ra0ns9pEG1MEoXnH5ob2noSfO9oMC4+n9yCmKTjR5U=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common:1.9.22": { + "kotlin-scripting-common-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar" + ], + "hash": "sha256-+lAMvwNJQ++BJvPT3GWvCf+Z3//kTFCZtPwu1b8vXcc=" + }, + "kotlin-scripting-common-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom" + ], + "hash": "sha256-ROURI7DCfm/ZM/wma00Nrw8GhKYq7Z/mhC6Noz8qKz8=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22": { + "kotlin-scripting-compiler-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar" + ], + "hash": "sha256-Ij/shIMCNEmc1MeiPqHJLroSfEGzXZux1LYdJBVa6zU=" + }, + "kotlin-scripting-compiler-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom" + ], + "hash": "sha256-wWCPP7yyqfdSPq0zWZwurc5MgSFhqeBmufSwBa97Qxw=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22": { + "kotlin-scripting-compiler-impl-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar" + ], + "hash": "sha256-OJkYFqKH/3YkHxp35/ERZIHU6To9tjJZplfd4g5tD2U=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom" + ], + "hash": "sha256-gmccM6lXsuKoINZqaSwvzmPjvwR/HLJeb7A5HF3c8uc=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22": { + "kotlin-scripting-jvm-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar" + ], + "hash": "sha256-jRJ9dvz6BRfDbB6g4ijs4D1aRoJkKgH2R5prvccxKik=" + }, + "kotlin-scripting-jvm-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom" + ], + "hash": "sha256-cBJS6huo/4f8M0dqYePVxtnS3aQbqpiZTdaYDuE/vG0=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.9.22": { + "kotlin-stdlib-1.9.22-all.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar" + ], + "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" + }, + "kotlin-stdlib-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar" + ], + "hash": "sha256-ar4UbCeGQTi4dMzM/l9TTj65I8maG3tdRUlO5WlPPgo=" + }, + "kotlin-stdlib-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module" + ], + "hash": "sha256-9IIxS1B5wUVfb7DUJXp0XRAcYSTOlhUiuob53JCQHkc=" + }, + "kotlin-stdlib-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom" + ], + "hash": "sha256-zOLxUoXsgHijd0a1cwigVAQt1cwlQgxD9zt4V8JGjwM=" + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core:1.9.22": { + "kotlin-tooling-core-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar" + ], + "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" + }, + "kotlin-tooling-core-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom" + ], + "hash": "sha256-FPx/NcY15fzRvqU3q0+kQxLoQyUtUzNRnjaxJeoImyE=" + } + }, + "org.jetbrains.kotlin:kotlin-util-io:1.9.22": { + "kotlin-util-io-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar" + ], + "hash": "sha256-9telhJGjeLCDrRvq1IikheEdFgsx52wYwa1SDx0o9Gs=" + }, + "kotlin-util-io-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom" + ], + "hash": "sha256-ZP1qINbsBAE7ttdWJ/ZYC7c2QdlIkJ1cFmTi53MQbe4=" + } + }, + "org.jetbrains.kotlin:kotlin-util-klib:1.9.22": { + "kotlin-util-klib-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar" + ], + "hash": "sha256-pnnuL1EPOrkmkYGN5etbCQLobYjJdnTn20TcTyJSxfk=" + }, + "kotlin-util-klib-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom" + ], + "hash": "sha256-Dep9//Cit0CIrJlwQ8vCQINdK/9Zs5/MiwysbqPrNpc=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/classifier.groovy.json b/fixtures/golden/dependency/classifier.groovy.json index 4a89135..2b7caa5 100644 --- a/fixtures/golden/dependency/classifier.groovy.json +++ b/fixtures/golden/dependency/classifier.groovy.json @@ -1,18 +1,32 @@ { - "com.badlogicgames.gdx:gdx-platform": { - "1.9.9": { - "gdx-platform-1.9.9-natives-desktop.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" - ], - "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" - }, - "gdx-platform-1.9.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" - ], - "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" - } + "com.badlogicgames.gdx:gdx-parent:1.9.9": { + "gdx-parent-1.9.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-parent/1.9.9/gdx-parent-1.9.9.pom" + ], + "hash": "sha256-JSpktycxGU+lvD37inPSXOa3NXxQLQ+y9W5rTiqaeJM=" + } + }, + "com.badlogicgames.gdx:gdx-platform:1.9.9": { + "gdx-platform-1.9.9-natives-desktop.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" + ], + "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" + }, + "gdx-platform-1.9.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" + ], + "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" + } + }, + "org.sonatype.oss:oss-parent:5": { + "oss-parent-5.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom" + ], + "hash": "sha256-FnjUEgpYXYpjATGu7ExSTZKDmFg7fqthbufVqH9SDT0=" } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/classifier.kotlin.json b/fixtures/golden/dependency/classifier.kotlin.json index 4a89135..2b7caa5 100644 --- a/fixtures/golden/dependency/classifier.kotlin.json +++ b/fixtures/golden/dependency/classifier.kotlin.json @@ -1,18 +1,32 @@ { - "com.badlogicgames.gdx:gdx-platform": { - "1.9.9": { - "gdx-platform-1.9.9-natives-desktop.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" - ], - "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" - }, - "gdx-platform-1.9.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" - ], - "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" - } + "com.badlogicgames.gdx:gdx-parent:1.9.9": { + "gdx-parent-1.9.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-parent/1.9.9/gdx-parent-1.9.9.pom" + ], + "hash": "sha256-JSpktycxGU+lvD37inPSXOa3NXxQLQ+y9W5rTiqaeJM=" + } + }, + "com.badlogicgames.gdx:gdx-platform:1.9.9": { + "gdx-platform-1.9.9-natives-desktop.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" + ], + "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" + }, + "gdx-platform-1.9.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" + ], + "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" + } + }, + "org.sonatype.oss:oss-parent:5": { + "oss-parent-5.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom" + ], + "hash": "sha256-FnjUEgpYXYpjATGu7ExSTZKDmFg7fqthbufVqH9SDT0=" } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/maven-bom.kotlin.json b/fixtures/golden/dependency/maven-bom.kotlin.json index c43c01e..6ebd332 100644 --- a/fixtures/golden/dependency/maven-bom.kotlin.json +++ b/fixtures/golden/dependency/maven-bom.kotlin.json @@ -1,44 +1,60 @@ { - "io.micrometer:micrometer-bom": { - "1.5.1": { - "micrometer-bom-1.5.1.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom" - ], - "hash": "sha256-K/qF6ds8ck5sWvelJBYk+w+K04oQpT/4BtY57WVLRUI=" - } + "io.micrometer:micrometer-bom:1.5.1": { + "micrometer-bom-1.5.1.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom" + ], + "hash": "sha256-K/qF6ds8ck5sWvelJBYk+w+K04oQpT/4BtY57WVLRUI=" } }, - "io.micrometer:micrometer-core": { - "1.5.1": { - "micrometer-core-1.5.1.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar" - ], - "hash": "sha256-DtgVYBDVGDBWMwSfeKC6O+fwqd+N2q4eTizJgQ1wfI8=" - }, - "micrometer-core-1.5.1.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom" - ], - "hash": "sha256-Cb4KaUHaOvdOz7VpDax6kJKuT2KWY5Ci73foX2xl6xw=" - } + "io.micrometer:micrometer-core:1.5.1": { + "micrometer-core-1.5.1.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar" + ], + "hash": "sha256-DtgVYBDVGDBWMwSfeKC6O+fwqd+N2q4eTizJgQ1wfI8=" + }, + "micrometer-core-1.5.1.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom" + ], + "hash": "sha256-Cb4KaUHaOvdOz7VpDax6kJKuT2KWY5Ci73foX2xl6xw=" } }, - "org.hdrhistogram:HdrHistogram": { - "2.1.12": { - "HdrHistogram-2.1.12.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar" - ], - "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" - }, - "HdrHistogram-2.1.12.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom" - ], - "hash": "sha256-f7PnkMFU0bXiMXC7jL9/cO8ICa8XIp8dywENd5llEIA=" - } + "org.hdrhistogram:HdrHistogram:2.1.12": { + "HdrHistogram-2.1.12.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar" + ], + "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" + }, + "HdrHistogram-2.1.12.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom" + ], + "hash": "sha256-f7PnkMFU0bXiMXC7jL9/cO8ICa8XIp8dywENd5llEIA=" + } + }, + "org.latencyutils:LatencyUtils:2.0.3": { + "LatencyUtils-2.0.3.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.jar" + ], + "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" + }, + "LatencyUtils-2.0.3.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.pom" + ], + "hash": "sha256-jwwBU3kLhK9sCTFtVpvRBu4PAIuTk+gLpHj1v2Vziig=" + } + }, + "org.sonatype.oss:oss-parent:7": { + "oss-parent-7.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" + ], + "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot-dynamic.groovy.json b/fixtures/golden/dependency/snapshot-dynamic.groovy.json index 5463f25..eaaa8f7 100644 --- a/fixtures/golden/dependency/snapshot-dynamic.groovy.json +++ b/fixtures/golden/dependency/snapshot-dynamic.groovy.json @@ -1,16 +1,18 @@ { - "org.apache:test-SNAPSHOT1": { - "2.0.2-SNAPSHOT": { - "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { - "urls": [ - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { - "urls": [ - ], - "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" - } + "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": { + "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar" + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + } + }, + "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT": { + "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.pom" + ], + "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json index 5463f25..eaaa8f7 100644 --- a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json +++ b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json @@ -1,16 +1,18 @@ { - "org.apache:test-SNAPSHOT1": { - "2.0.2-SNAPSHOT": { - "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { - "urls": [ - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { - "urls": [ - ], - "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" - } + "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": { + "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar" + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + } + }, + "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT": { + "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.pom" + ], + "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot-redirect.groovy.json b/fixtures/golden/dependency/snapshot-redirect.groovy.json index d4f9c6c..48f5de8 100644 --- a/fixtures/golden/dependency/snapshot-redirect.groovy.json +++ b/fixtures/golden/dependency/snapshot-redirect.groovy.json @@ -1,18 +1,118 @@ { - "com.github.anuken:packr": { - "-SNAPSHOT": { - "packr--SNAPSHOT.jar": { - "urls": [ - "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.jar" - ], - "hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" - }, - "packr--SNAPSHOT.pom": { - "urls": [ - "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.pom" - ], - "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" - } + "com.eclipsesource.minimal-json:minimal-json:0.9.1": { + "minimal-json-0.9.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/eclipsesource/minimal-json/minimal-json/0.9.1/minimal-json-0.9.1.jar" + ], + "hash": "sha256-pvRb7vRcTbyODylD0CuzTZ2btyDUoX1NwfChHNHvWFg=" + }, + "minimal-json-0.9.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/eclipsesource/minimal-json/minimal-json/0.9.1/minimal-json-0.9.1.pom" + ], + "hash": "sha256-Xb0I7Og8f0XxOeis+0S+gUv4NugvuGAEdvwMuR2awUM=" + } + }, + "com.github.anuken:packr:-SNAPSHOT:packr-1.2-g034efe5-114": { + "packr--packr-1.2-g034efe5-114.jar": { + "urls": [ + "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.jar" + ], + "hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" + } + }, + "com.github.anuken:packr:-SNAPSHOT": { + "packr--SNAPSHOT.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.pom" + ], + "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" + }, + "packr--packr-1.2-g034efe5-114.pom": { + "urls": [ + "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.pom" + ], + "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" + } + }, + "com.lexicalscope.jewelcli:jewelcli:0.8.9": { + "jewelcli-0.8.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli/0.8.9/jewelcli-0.8.9.jar" + ], + "hash": "sha256-edo0/mgFGCboBtIUgBL7NIHJ5pc4ipG9RMwl1piBAvM=" + }, + "jewelcli-0.8.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli/0.8.9/jewelcli-0.8.9.pom" + ], + "hash": "sha256-eTF2d4p/6F9cw1QWZQhjpG1Es5CJKI1+DkiheuCZHMQ=" + } + }, + "com.lexicalscope.jewelcli:jewelcli-parent:0.8.9": { + "jewelcli-parent-0.8.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli-parent/0.8.9/jewelcli-parent-0.8.9.pom" + ], + "hash": "sha256-+K7AtECUZHhdpChr8qutNwSH30dSEVRwb+728brQ9Is=" + } + }, + "org.slf4j:slf4j-api:1.6.6": { + "slf4j-api-1.6.6.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.6.6/slf4j-api-1.6.6.jar" + ], + "hash": "sha256-Q0VrLuMVKanFEtWB5T4oXGX+3ewgSiwUaUXgMrB4ELo=" + }, + "slf4j-api-1.6.6.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.6.6/slf4j-api-1.6.6.pom" + ], + "hash": "sha256-cxmZMiteIokinNntRiTJQexXG3xh0qJ9alB+9zuXyho=" + } + }, + "org.slf4j:slf4j-parent:1.6.6": { + "slf4j-parent-1.6.6.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.6.6/slf4j-parent-1.6.6.pom" + ], + "hash": "sha256-QrjCR2CP2OENW2Zs98gKW1nSseEoRQ97bZ0sIM+2sxs=" + } + }, + "org.slf4j:slf4j-simple:1.6.6": { + "slf4j-simple-1.6.6.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.6.6/slf4j-simple-1.6.6.jar" + ], + "hash": "sha256-Xpfxe7h5v9RDOlHGnjyS/iIQfG/8e8oiRIHy5YmEbgg=" + }, + "slf4j-simple-1.6.6.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.6.6/slf4j-simple-1.6.6.pom" + ], + "hash": "sha256-6eV8yFljFwnFUrbskwj+m6FUncWK7ZA5p+UFzeKrUbM=" + } + }, + "org.sonatype.oss:oss-parent:7": { + "oss-parent-7.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" + ], + "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" + } + }, + "org.zeroturnaround:zt-zip:1.10": { + "zt-zip-1.10.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/zeroturnaround/zt-zip/1.10/zt-zip-1.10.jar" + ], + "hash": "sha256-Vw46sIh5Ok9QLaGJtyutlgzwiqWaFxyDzwj0du1ELBk=" + }, + "zt-zip-1.10.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/zeroturnaround/zt-zip/1.10/zt-zip-1.10.pom" + ], + "hash": "sha256-tsgm40wVcdupU51FIac34FxJmuQOi50BgbYLFdbVCns=" } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot.groovy.json b/fixtures/golden/dependency/snapshot.groovy.json index f111b17..1e4f545 100644 --- a/fixtures/golden/dependency/snapshot.groovy.json +++ b/fixtures/golden/dependency/snapshot.groovy.json @@ -1,18 +1,16 @@ { - "org.apache:test-SNAPSHOT2": { - "2.0.2-SNAPSHOT": { - "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" - ], - "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" - } + "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": { + "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" + ], + "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" } } } \ No newline at end of file diff --git a/fixtures/golden/dependency/snapshot.kotlin.json b/fixtures/golden/dependency/snapshot.kotlin.json index f111b17..1e4f545 100644 --- a/fixtures/golden/dependency/snapshot.kotlin.json +++ b/fixtures/golden/dependency/snapshot.kotlin.json @@ -1,18 +1,16 @@ { - "org.apache:test-SNAPSHOT2": { - "2.0.2-SNAPSHOT": { - "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - }, - "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" - ], - "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" - } + "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": { + "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" + ], + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" + ], + "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" } } } \ No newline at end of file diff --git a/fixtures/golden/included-build.groovy.json b/fixtures/golden/included-build.groovy.json index 7556b4e..fc96533 100644 --- a/fixtures/golden/included-build.groovy.json +++ b/fixtures/golden/included-build.groovy.json @@ -1,48 +1,44 @@ { - "org.apache:foo": { - "2.0.0": { - "foo-2.0.0.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.jar" - ], - "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" - }, - "foo-2.0.0.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.pom" - ], - "hash": "sha256-gcL/k4xoI5SK4qDNcyH1uHkgiGQv3WohPb45Gsb9gi8=" - } + "org.apache:foo:2.0.0": { + "foo-2.0.0.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/foo/2.0.0/foo-2.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" }, - "1.0.0": { - "foo-1.0.0.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.jar" - ], - "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" - }, - "foo-1.0.0.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.pom" - ], - "hash": "sha256-roNL3MgAJuUPxIdJJiSpjU3yEFlJFDQ99QvnaWlkVcE=" - } + "foo-2.0.0.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/foo/2.0.0/foo-2.0.0.pom" + ], + "hash": "sha256-gcL/k4xoI5SK4qDNcyH1uHkgiGQv3WohPb45Gsb9gi8=" } }, - "org.apache:test": { - "1.0.0": { - "test-1.0.0.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" - ], - "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" - }, - "test-1.0.0.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ], - "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" - } + "org.apache:foo:1.0.0": { + "foo-1.0.0.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/foo/1.0.0/foo-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "foo-1.0.0.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/foo/1.0.0/foo-1.0.0.pom" + ], + "hash": "sha256-roNL3MgAJuUPxIdJJiSpjU3yEFlJFDQ99QvnaWlkVcE=" + } + }, + "org.apache:test:1.0.0": { + "test-1.0.0.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "test-1.0.0.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom" + ], + "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" } } } \ No newline at end of file diff --git a/fixtures/golden/integration/settings-buildscript.groovy.json b/fixtures/golden/integration/settings-buildscript.groovy.json index b92c54f..ede1686 100644 --- a/fixtures/golden/integration/settings-buildscript.groovy.json +++ b/fixtures/golden/integration/settings-buildscript.groovy.json @@ -1,146 +1,216 @@ { - "com.googlecode.javaewah:JavaEWAH": { - "1.1.6": { - "JavaEWAH-1.1.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" - ], - "hash": "sha256-941EoeOHfxznSLSoXfUXHl6Omlw8b2O7kAPbb4TM6VI=" - }, - "JavaEWAH-1.1.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom" - ], - "hash": "sha256-f0/5GbHuF783duBYo/IOYXPbI6XkTPLRB+x1cMGGq/A=" - } - } - }, - "com.jcraft:jsch": { - "0.1.54": { - "jsch-0.1.54.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" - ], - "hash": "sha256-kusnOjMWdiR4/dT+A6DOGELFb0lsnBL+EjXbgEUOH9s=" - }, - "jsch-0.1.54.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom" - ], - "hash": "sha256-q49RIDm+f2riDhjnQ7Sp2KIJWElEMZF9pYrlqu+KNHg=" - } - } - }, - "commons-codec:commons-codec": { - "1.6": { - "commons-codec-1.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" - ], - "hash": "sha256-VLNOlBuOFBS9PkDXNu/TSBdy3CbbMpb2qkXOyfYgPYY=" - }, - "commons-codec-1.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom" - ], - "hash": "sha256-oG410//zprgT2UiU6/PkmPlUDIZMWzmueDkH46bHKIk=" - } - } - }, - "commons-logging:commons-logging": { - "1.1.3": { - "commons-logging-1.1.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" - ], - "hash": "sha256-cJA/b8gumQjI2p8gRD9h2Q8IcKMSZCmR/oRioLk5F4Q=" - }, - "commons-logging-1.1.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom" - ], - "hash": "sha256-MlCsOsa9YO0GMfXNAzUDKymT1j5AWmrgVV0np+SGWEk=" - } - } - }, - "gradle.plugin.net.vivin:gradle-semantic-build-versioning": { - "4.0.0": { - "gradle-semantic-build-versioning-4.0.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar" - ], - "hash": "sha256-UTjmfOjgGUN4ALk8n2+dD8vr763Jb7xOvAl1yZomHvg=" - }, - "gradle-semantic-build-versioning-4.0.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom" - ], - "hash": "sha256-TygodBYH7RAtletfGJ1JbHhA7UY6zqifHlGmBWdxTvc=" - } - } - }, - "org.apache.httpcomponents:httpclient": { - "4.3.6": { - "httpclient-4.3.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" - ], - "hash": "sha256-eYONnq73PU+FLGOkgIMMOi1LWQ8Ks66BWkiUY+RxQAQ=" - }, - "httpclient-4.3.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom" - ], - "hash": "sha256-0CY09hMekUlhwCqoNnEeuscnBLJ+JsW9Iju62JsbZMM=" - } - } - }, - "org.apache.httpcomponents:httpcore": { - "4.3.3": { - "httpcore-4.3.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" - ], - "hash": "sha256-UoXegK8WUcSJMTuRqfQMZaTNy2s73nFvzAKNFoaaWpM=" - }, - "httpcore-4.3.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom" - ], - "hash": "sha256-tCf3z2fHWk4/niEI01v0UwNXPBRex3j8rc/6zvF6EmQ=" - } - } - }, - "org.eclipse.jgit:org.eclipse.jgit": { - "4.8.0.201706111038-r": { - "org.eclipse.jgit-4.8.0.201706111038-r.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar" - ], - "hash": "sha256-SdkS6NXM4N0I3KPTkBiduGkqj34zY8274YJYFGIACro=" - }, - "org.eclipse.jgit-4.8.0.201706111038-r.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom" - ], - "hash": "sha256-pVap9a38avSbKhLnLcPNfkPbj9whbA81iFlyovWton0=" - } - } - }, - "org.slf4j:slf4j-api": { - "1.7.2": { - "slf4j-api-1.7.2.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" - ], - "hash": "sha256-O654m0ATM7Kh0WA7f6Vz4ZkIYoGRcHID9utwjN7iwFI=" - }, - "slf4j-api-1.7.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom" - ], - "hash": "sha256-LqynGv4KFRb0q9jp/5B4ONJo84yBw6VCzOjX87h8XUw=" - } + "com.googlecode.javaewah:JavaEWAH:1.1.6": { + "JavaEWAH-1.1.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" + ], + "hash": "sha256-941EoeOHfxznSLSoXfUXHl6Omlw8b2O7kAPbb4TM6VI=" + }, + "JavaEWAH-1.1.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom" + ], + "hash": "sha256-f0/5GbHuF783duBYo/IOYXPbI6XkTPLRB+x1cMGGq/A=" + } + }, + "com.jcraft:jsch:0.1.54": { + "jsch-0.1.54.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" + ], + "hash": "sha256-kusnOjMWdiR4/dT+A6DOGELFb0lsnBL+EjXbgEUOH9s=" + }, + "jsch-0.1.54.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom" + ], + "hash": "sha256-q49RIDm+f2riDhjnQ7Sp2KIJWElEMZF9pYrlqu+KNHg=" + } + }, + "commons-codec:commons-codec:1.6": { + "commons-codec-1.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" + ], + "hash": "sha256-VLNOlBuOFBS9PkDXNu/TSBdy3CbbMpb2qkXOyfYgPYY=" + }, + "commons-codec-1.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom" + ], + "hash": "sha256-oG410//zprgT2UiU6/PkmPlUDIZMWzmueDkH46bHKIk=" + } + }, + "commons-logging:commons-logging:1.1.3": { + "commons-logging-1.1.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" + ], + "hash": "sha256-cJA/b8gumQjI2p8gRD9h2Q8IcKMSZCmR/oRioLk5F4Q=" + }, + "commons-logging-1.1.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom" + ], + "hash": "sha256-MlCsOsa9YO0GMfXNAzUDKymT1j5AWmrgVV0np+SGWEk=" + } + }, + "gradle.plugin.net.vivin:gradle-semantic-build-versioning:4.0.0": { + "gradle-semantic-build-versioning-4.0.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar" + ], + "hash": "sha256-UTjmfOjgGUN4ALk8n2+dD8vr763Jb7xOvAl1yZomHvg=" + }, + "gradle-semantic-build-versioning-4.0.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom" + ], + "hash": "sha256-TygodBYH7RAtletfGJ1JbHhA7UY6zqifHlGmBWdxTvc=" + } + }, + "org.apache:apache:13": { + "apache-13.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/apache/13/apache-13.pom" + ], + "hash": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0=" + } + }, + "org.apache:apache:9": { + "apache-9.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/apache/9/apache-9.pom" + ], + "hash": "sha256-SUbmClR8jtpp87wjxbbw2tz4Rp6kmx0dp940rs/PGN0=" + } + }, + "org.apache.commons:commons-parent:28": { + "commons-parent-28.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/28/commons-parent-28.pom" + ], + "hash": "sha256-FHM6aOixILad5gzZbSIhRtzzLwPBxsxqdQsSabr+hsc=" + } + }, + "org.apache.commons:commons-parent:22": { + "commons-parent-22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/22/commons-parent-22.pom" + ], + "hash": "sha256-+4xeVeMKet20/yEIWKDo0klO1nV7vhkBLamdUVhsPLs=" + } + }, + "org.apache.httpcomponents:httpclient:4.3.6": { + "httpclient-4.3.6.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" + ], + "hash": "sha256-eYONnq73PU+FLGOkgIMMOi1LWQ8Ks66BWkiUY+RxQAQ=" + }, + "httpclient-4.3.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom" + ], + "hash": "sha256-0CY09hMekUlhwCqoNnEeuscnBLJ+JsW9Iju62JsbZMM=" + } + }, + "org.apache.httpcomponents:httpcomponents-client:4.3.6": { + "httpcomponents-client-4.3.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-client/4.3.6/httpcomponents-client-4.3.6.pom" + ], + "hash": "sha256-StooJ7SWM5gmiRx8gdzrpkcCneb8GIixazyrVlCrzGM=" + } + }, + "org.apache.httpcomponents:httpcomponents-core:4.3.3": { + "httpcomponents-core-4.3.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core/4.3.3/httpcomponents-core-4.3.3.pom" + ], + "hash": "sha256-wW4vwNSbp6As71teJgBYWp9nNVMyim+eWPJClt8d0DE=" + } + }, + "org.apache.httpcomponents:httpcore:4.3.3": { + "httpcore-4.3.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" + ], + "hash": "sha256-UoXegK8WUcSJMTuRqfQMZaTNy2s73nFvzAKNFoaaWpM=" + }, + "httpcore-4.3.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom" + ], + "hash": "sha256-tCf3z2fHWk4/niEI01v0UwNXPBRex3j8rc/6zvF6EmQ=" + } + }, + "org.apache.httpcomponents:project:7": { + "project-7.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/project/7/project-7.pom" + ], + "hash": "sha256-PW66QoVVpVjeBGtddurMH1pUtPXyC4TWNu16/xiqSMM=" + } + }, + "org.eclipse.jgit:org.eclipse.jgit:4.8.0.201706111038-r": { + "org.eclipse.jgit-4.8.0.201706111038-r.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar" + ], + "hash": "sha256-SdkS6NXM4N0I3KPTkBiduGkqj34zY8274YJYFGIACro=" + }, + "org.eclipse.jgit-4.8.0.201706111038-r.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom" + ], + "hash": "sha256-pVap9a38avSbKhLnLcPNfkPbj9whbA81iFlyovWton0=" + } + }, + "org.eclipse.jgit:org.eclipse.jgit-parent:4.8.0.201706111038-r": { + "org.eclipse.jgit-parent-4.8.0.201706111038-r.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit-parent/4.8.0.201706111038-r/org.eclipse.jgit-parent-4.8.0.201706111038-r.pom" + ], + "hash": "sha256-OWpMyJQgaHP/EH0GapliUrC0f1hbiM9X/Dsx6T1JKHg=" + } + }, + "org.slf4j:slf4j-api:1.7.2": { + "slf4j-api-1.7.2.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" + ], + "hash": "sha256-O654m0ATM7Kh0WA7f6Vz4ZkIYoGRcHID9utwjN7iwFI=" + }, + "slf4j-api-1.7.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom" + ], + "hash": "sha256-LqynGv4KFRb0q9jp/5B4ONJo84yBw6VCzOjX87h8XUw=" + } + }, + "org.slf4j:slf4j-parent:1.7.2": { + "slf4j-parent-1.7.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/slf4j/slf4j-parent/1.7.2/slf4j-parent-1.7.2.pom" + ], + "hash": "sha256-HY4ISm8jhK3kJoUzK1Kg7OCQR4ZB3BTA+oxS4eKYRCU=" + } + }, + "org.sonatype.oss:oss-parent:6": { + "oss-parent-6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/6/oss-parent-6.pom" + ], + "hash": "sha256-tDBtE+j1OSRYobMIZvHP8WGz0uaZmojQWe6jkyyKhJk=" + } + }, + "org.sonatype.oss:oss-parent:5": { + "oss-parent-5.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom" + ], + "hash": "sha256-FnjUEgpYXYpjATGu7ExSTZKDmFg7fqthbufVqH9SDT0=" } } } \ No newline at end of file diff --git a/fixtures/golden/ivy/basic.kotlin.json b/fixtures/golden/ivy/basic.kotlin.json index a1bc3fb..bceb43b 100644 --- a/fixtures/golden/ivy/basic.kotlin.json +++ b/fixtures/golden/ivy/basic.kotlin.json @@ -1,34 +1,30 @@ { - "org.opendof.core-java:dof-cipher-sms4": { - "1.0": { - "dof-cipher-sms4-1.0.jar": { - "urls": [ - "https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/dof-cipher-sms4-1.0.jar" - ], - "hash": "sha256-/Joo51NA6nBPEwFuFcnDc10JQZDE8P3jF3P4gl0vpMA=" - }, - "ivy-1.0.xml": { - "urls": [ - "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" - ], - "hash": "sha256-rh+pQpXqPP/cmBD8slvwMrKlWCUb3JNzW3l58hd7oJ8=" - } + "org.opendof.core-java:dof-cipher-sms4:1.0": { + "dof-cipher-sms4-1.0.jar": { + "urls": [ + "https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/jars/dof-cipher-sms4-1.0.jar" + ], + "hash": "sha256-/Joo51NA6nBPEwFuFcnDc10JQZDE8P3jF3P4gl0vpMA=" + }, + "ivy.xml": { + "urls": [ + "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" + ], + "hash": "sha256-rh+pQpXqPP/cmBD8slvwMrKlWCUb3JNzW3l58hd7oJ8=" } }, - "org.opendof.core-java:dof-oal": { - "7.0.2": { - "dof-oal-7.0.2.jar": { - "urls": [ - "https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/dof-oal-7.0.2.jar" - ], - "hash": "sha256-u+FUhQGBA8MRl28mXMTSnZ2HY2ysPHq7h9lANmHBK40=" - }, - "ivy-7.0.2.xml": { - "urls": [ - "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml" - ], - "hash": "sha256-KZoUVyoDcfH/B/9V1SVqNiA/XIb3zlwoJkjb/jD+xig=" - } + "org.opendof.core-java:dof-oal:7.0.2": { + "dof-oal-7.0.2.jar": { + "urls": [ + "https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/jars/dof-oal-7.0.2.jar" + ], + "hash": "sha256-u+FUhQGBA8MRl28mXMTSnZ2HY2ysPHq7h9lANmHBK40=" + }, + "ivy.xml": { + "urls": [ + "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml" + ], + "hash": "sha256-KZoUVyoDcfH/B/9V1SVqNiA/XIb3zlwoJkjb/jD+xig=" } } } \ No newline at end of file diff --git a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json index 039ae71..595b40e 100644 --- a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json +++ b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json @@ -1,592 +1,524 @@ { - "net.java.dev.jna:jna": { - "5.6.0": { - "jna-5.6.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], - "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" - }, - "jna-5.6.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], - "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" - } - } - }, - "org.jetbrains.intellij.deps:trove4j": { - "1.0.20200330": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } - } - }, - "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { - "1.7.21": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" - ], - "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" - } - } - }, - "org.jetbrains.kotlin:kotlin-android-extensions": { - "1.7.21": { - "kotlin-android-extensions-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" - ], - "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" - }, - "kotlin-android-extensions-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" - ], - "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" - } - } - }, - "org.jetbrains.kotlin:kotlin-annotation-processing-gradle": { - "1.7.21": { - "kotlin-annotation-processing-gradle-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" - ], - "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" - }, - "kotlin-annotation-processing-gradle-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" - ], - "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-build-common": { - "1.7.21": { - "kotlin-build-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" - ], - "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" - }, - "kotlin-build-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" - ], - "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" - } - } - }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable": { - "1.7.21": { - "kotlin-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" - }, - "kotlin-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" - } - } - }, - "org.jetbrains.kotlin:kotlin-compiler-runner": { - "1.7.21": { - "kotlin-compiler-runner-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" - ], - "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" - }, - "kotlin-compiler-runner-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" - ], - "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" - } - } - }, - "org.jetbrains.kotlin:kotlin-daemon-client": { - "1.7.21": { - "kotlin-daemon-client-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" - ], - "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" - }, - "kotlin-daemon-client-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" - ], - "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" - } - } - }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable": { - "1.7.21": { - "kotlin-daemon-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" - ], - "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" - }, - "kotlin-daemon-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" - ], - "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin": { - "1.7.21": { - "kotlin-gradle-plugin-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" - ], - "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" - }, - "kotlin-gradle-plugin-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" - ], - "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" - }, - "kotlin-gradle-plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom" - ], - "hash": "sha256-0gTXpKcf6Scv44M9x0IAkan/EJaky6JfcnihlUI1BGk=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { - "1.7.21": { - "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" - ], - "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" - }, - "kotlin-gradle-plugin-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom" - ], - "hash": "sha256-89unBFqYcdah5QnkF+tjQa3bmHFaL409ZnJlAdq0s0Y=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { - "1.7.21": { - "kotlin-gradle-plugin-idea-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" - ], - "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" - }, - "kotlin-gradle-plugin-idea-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" - ], - "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" - }, - "kotlin-gradle-plugin-idea-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom" - ], - "hash": "sha256-Flz/idoRsXIpiJPHg0sNQadm1/PdIPoIvfiJxlXD5zc=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { - "1.7.21": { - "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" - ], - "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" - }, - "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" - ], - "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { - "1.7.21": { - "kotlin-gradle-plugin-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" - ], - "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" - }, - "kotlin-gradle-plugin-model-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" - ], - "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" - }, - "kotlin-gradle-plugin-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom" - ], - "hash": "sha256-y2vKOdHhBWBXcMCj3ubUXw58XtPFNGiZ9ycQsf//HaY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { - "1.7.21": { - "kotlin-klib-commonizer-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" - ], - "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" - }, - "kotlin-klib-commonizer-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" - ], - "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" - } - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { - "1.7.21": { - "kotlin-klib-commonizer-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" - ], - "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" - }, - "kotlin-klib-commonizer-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" - ], - "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" - } - } - }, - "org.jetbrains.kotlin:kotlin-native-utils": { - "1.7.21": { - "kotlin-native-utils-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" - ], - "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" - }, - "kotlin-native-utils-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" - ], - "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-project-model": { - "1.7.21": { - "kotlin-project-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" - ], - "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" - }, - "kotlin-project-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" - ], - "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" - } - } - }, - "org.jetbrains.kotlin:kotlin-reflect": { - "1.7.21": { - "kotlin-reflect-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" - ], - "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" - }, - "kotlin-reflect-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" - ], - "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-script-runtime": { - "1.7.21": { - "kotlin-script-runtime-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" - ], - "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" - }, - "kotlin-script-runtime-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" - ], - "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-common": { - "1.7.21": { - "kotlin-scripting-common-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" - ], - "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" - }, - "kotlin-scripting-common-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" - ], - "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { - "1.7.21": { - "kotlin-scripting-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" - }, - "kotlin-scripting-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { - "1.7.21": { - "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" - ], - "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" - ], - "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm": { - "1.7.21": { - "kotlin-scripting-jvm-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" - ], - "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" - }, - "kotlin-scripting-jvm-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" - ], - "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "1.7.21": { - "kotlin-stdlib-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" - ], - "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" - }, - "kotlin-stdlib-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" - ], - "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "1.7.21": { - "kotlin-stdlib-common-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" - ], - "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" - }, - "kotlin-stdlib-common-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" - ], - "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { - "1.7.21": { - "kotlin-stdlib-jdk7-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" - ], - "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" - }, - "kotlin-stdlib-jdk7-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" - ], - "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { - "1.7.21": { - "kotlin-stdlib-jdk8-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" - ], - "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" - }, - "kotlin-stdlib-jdk8-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" - ], - "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" - } - } - }, - "org.jetbrains.kotlin:kotlin-tooling-core": { - "1.7.21": { - "kotlin-tooling-core-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" - ], - "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" - }, - "kotlin-tooling-core-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" - ], - "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-util-io": { - "1.7.21": { - "kotlin-util-io-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" - ], - "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" - }, - "kotlin-util-io-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" - ], - "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" - } - } - }, - "org.jetbrains.kotlin:kotlin-util-klib": { - "1.7.21": { - "kotlin-util-klib-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" - ], - "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" - }, - "kotlin-util-klib-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" - ], - "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { - "1.5.0": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], - "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" - } - } - }, - "org.jetbrains:annotations": { - "13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "net.java.dev.jna:jna:5.6.0": { + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions:1.7.21": { + "kotlin-android-extensions-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" + ], + "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" + }, + "kotlin-android-extensions-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" + ], + "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" + } + }, + "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.21": { + "kotlin-annotation-processing-gradle-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" + ], + "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" + }, + "kotlin-annotation-processing-gradle-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" + ], + "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" + } + }, + "org.jetbrains.kotlin:kotlin-build-common:1.7.21": { + "kotlin-build-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" + ], + "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" + }, + "kotlin-build-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" + ], + "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21": { + "kotlin-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" + }, + "kotlin-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner:1.7.21": { + "kotlin-compiler-runner-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" + ], + "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" + }, + "kotlin-compiler-runner-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" + ], + "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client:1.7.21": { + "kotlin-daemon-client-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" + ], + "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" + }, + "kotlin-daemon-client-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" + ], + "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.21": { + "kotlin-daemon-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" + ], + "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" + }, + "kotlin-daemon-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" + ], + "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21": { + "kotlin-gradle-plugin-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" + ], + "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" + }, + "kotlin-gradle-plugin-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" + ], + "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" + }, + "kotlin-gradle-plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom" + ], + "hash": "sha256-0gTXpKcf6Scv44M9x0IAkan/EJaky6JfcnihlUI1BGk=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.21": { + "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" + ], + "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" + }, + "kotlin-gradle-plugin-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom" + ], + "hash": "sha256-89unBFqYcdah5QnkF+tjQa3bmHFaL409ZnJlAdq0s0Y=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.7.21": { + "kotlin-gradle-plugin-idea-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" + ], + "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" + }, + "kotlin-gradle-plugin-idea-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" + ], + "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" + }, + "kotlin-gradle-plugin-idea-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom" + ], + "hash": "sha256-Flz/idoRsXIpiJPHg0sNQadm1/PdIPoIvfiJxlXD5zc=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.7.21": { + "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" + ], + "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" + }, + "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" + ], + "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.7.21": { + "kotlin-gradle-plugin-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" + ], + "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" + }, + "kotlin-gradle-plugin-model-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" + ], + "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" + }, + "kotlin-gradle-plugin-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom" + ], + "hash": "sha256-y2vKOdHhBWBXcMCj3ubUXw58XtPFNGiZ9ycQsf//HaY=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.7.21": { + "kotlin-klib-commonizer-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" + ], + "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" + }, + "kotlin-klib-commonizer-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" + ], + "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.21": { + "kotlin-klib-commonizer-embeddable-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" + ], + "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" + }, + "kotlin-klib-commonizer-embeddable-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" + ], + "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" + } + }, + "org.jetbrains.kotlin:kotlin-native-utils:1.7.21": { + "kotlin-native-utils-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" + ], + "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" + }, + "kotlin-native-utils-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" + ], + "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" + } + }, + "org.jetbrains.kotlin:kotlin-project-model:1.7.21": { + "kotlin-project-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" + ], + "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" + }, + "kotlin-project-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" + ], + "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.7.21": { + "kotlin-reflect-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" + ], + "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" + }, + "kotlin-reflect-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" + ], + "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime:1.7.21": { + "kotlin-script-runtime-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" + ], + "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" + }, + "kotlin-script-runtime-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" + ], + "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common:1.7.21": { + "kotlin-scripting-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" + ], + "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" + }, + "kotlin-scripting-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" + ], + "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.7.21": { + "kotlin-scripting-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" + }, + "kotlin-scripting-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.7.21": { + "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" + ], + "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" + ], + "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.21": { + "kotlin-scripting-jvm-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" + ], + "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" + }, + "kotlin-scripting-jvm-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" + ], + "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.7.21": { + "kotlin-stdlib-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" + ], + "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" + }, + "kotlin-stdlib-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" + ], + "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.7.21": { + "kotlin-stdlib-common-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" + ], + "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" + }, + "kotlin-stdlib-common-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" + ], + "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21": { + "kotlin-stdlib-jdk7-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" + ], + "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" + }, + "kotlin-stdlib-jdk7-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" + ], + "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21": { + "kotlin-stdlib-jdk8-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" + ], + "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" + }, + "kotlin-stdlib-jdk8-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" + ], + "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core:1.7.21": { + "kotlin-tooling-core-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" + ], + "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" + }, + "kotlin-tooling-core-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" + ], + "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" + } + }, + "org.jetbrains.kotlin:kotlin-util-io:1.7.21": { + "kotlin-util-io-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" + ], + "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" + }, + "kotlin-util-io-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" + ], + "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" + } + }, + "org.jetbrains.kotlin:kotlin-util-klib:1.7.21": { + "kotlin-util-klib-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" + ], + "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" + }, + "kotlin-util-klib-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" + ], + "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" + } + }, + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.21": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" + ], + "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } } } \ No newline at end of file diff --git a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json index 039ae71..595b40e 100644 --- a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json +++ b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json @@ -1,592 +1,524 @@ { - "net.java.dev.jna:jna": { - "5.6.0": { - "jna-5.6.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], - "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" - }, - "jna-5.6.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], - "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" - } - } - }, - "org.jetbrains.intellij.deps:trove4j": { - "1.0.20200330": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } - } - }, - "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { - "1.7.21": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" - ], - "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" - } - } - }, - "org.jetbrains.kotlin:kotlin-android-extensions": { - "1.7.21": { - "kotlin-android-extensions-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" - ], - "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" - }, - "kotlin-android-extensions-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" - ], - "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" - } - } - }, - "org.jetbrains.kotlin:kotlin-annotation-processing-gradle": { - "1.7.21": { - "kotlin-annotation-processing-gradle-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" - ], - "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" - }, - "kotlin-annotation-processing-gradle-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" - ], - "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-build-common": { - "1.7.21": { - "kotlin-build-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" - ], - "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" - }, - "kotlin-build-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" - ], - "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" - } - } - }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable": { - "1.7.21": { - "kotlin-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" - }, - "kotlin-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" - } - } - }, - "org.jetbrains.kotlin:kotlin-compiler-runner": { - "1.7.21": { - "kotlin-compiler-runner-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" - ], - "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" - }, - "kotlin-compiler-runner-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" - ], - "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" - } - } - }, - "org.jetbrains.kotlin:kotlin-daemon-client": { - "1.7.21": { - "kotlin-daemon-client-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" - ], - "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" - }, - "kotlin-daemon-client-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" - ], - "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" - } - } - }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable": { - "1.7.21": { - "kotlin-daemon-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" - ], - "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" - }, - "kotlin-daemon-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" - ], - "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin": { - "1.7.21": { - "kotlin-gradle-plugin-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" - ], - "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" - }, - "kotlin-gradle-plugin-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" - ], - "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" - }, - "kotlin-gradle-plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom" - ], - "hash": "sha256-0gTXpKcf6Scv44M9x0IAkan/EJaky6JfcnihlUI1BGk=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { - "1.7.21": { - "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" - ], - "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" - }, - "kotlin-gradle-plugin-api-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" - ], - "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" - }, - "kotlin-gradle-plugin-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom" - ], - "hash": "sha256-89unBFqYcdah5QnkF+tjQa3bmHFaL409ZnJlAdq0s0Y=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { - "1.7.21": { - "kotlin-gradle-plugin-idea-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" - ], - "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" - }, - "kotlin-gradle-plugin-idea-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" - ], - "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" - }, - "kotlin-gradle-plugin-idea-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom" - ], - "hash": "sha256-Flz/idoRsXIpiJPHg0sNQadm1/PdIPoIvfiJxlXD5zc=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { - "1.7.21": { - "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" - ], - "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" - }, - "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" - ], - "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { - "1.7.21": { - "kotlin-gradle-plugin-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" - ], - "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" - }, - "kotlin-gradle-plugin-model-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" - ], - "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" - }, - "kotlin-gradle-plugin-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom" - ], - "hash": "sha256-y2vKOdHhBWBXcMCj3ubUXw58XtPFNGiZ9ycQsf//HaY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { - "1.7.21": { - "kotlin-klib-commonizer-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" - ], - "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" - }, - "kotlin-klib-commonizer-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" - ], - "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" - } - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { - "1.7.21": { - "kotlin-klib-commonizer-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" - ], - "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" - }, - "kotlin-klib-commonizer-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" - ], - "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" - } - } - }, - "org.jetbrains.kotlin:kotlin-native-utils": { - "1.7.21": { - "kotlin-native-utils-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" - ], - "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" - }, - "kotlin-native-utils-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" - ], - "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-project-model": { - "1.7.21": { - "kotlin-project-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" - ], - "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" - }, - "kotlin-project-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" - ], - "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" - } - } - }, - "org.jetbrains.kotlin:kotlin-reflect": { - "1.7.21": { - "kotlin-reflect-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" - ], - "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" - }, - "kotlin-reflect-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" - ], - "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-script-runtime": { - "1.7.21": { - "kotlin-script-runtime-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" - ], - "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" - }, - "kotlin-script-runtime-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" - ], - "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-common": { - "1.7.21": { - "kotlin-scripting-common-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" - ], - "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" - }, - "kotlin-scripting-common-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" - ], - "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { - "1.7.21": { - "kotlin-scripting-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" - ], - "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" - }, - "kotlin-scripting-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" - ], - "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { - "1.7.21": { - "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" - ], - "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" - ], - "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm": { - "1.7.21": { - "kotlin-scripting-jvm-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" - ], - "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" - }, - "kotlin-scripting-jvm-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" - ], - "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "1.7.21": { - "kotlin-stdlib-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" - ], - "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" - }, - "kotlin-stdlib-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" - ], - "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "1.7.21": { - "kotlin-stdlib-common-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" - ], - "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" - }, - "kotlin-stdlib-common-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" - ], - "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { - "1.7.21": { - "kotlin-stdlib-jdk7-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" - ], - "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" - }, - "kotlin-stdlib-jdk7-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" - ], - "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { - "1.7.21": { - "kotlin-stdlib-jdk8-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" - ], - "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" - }, - "kotlin-stdlib-jdk8-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" - ], - "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" - } - } - }, - "org.jetbrains.kotlin:kotlin-tooling-core": { - "1.7.21": { - "kotlin-tooling-core-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" - ], - "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" - }, - "kotlin-tooling-core-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" - ], - "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-util-io": { - "1.7.21": { - "kotlin-util-io-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" - ], - "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" - }, - "kotlin-util-io-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" - ], - "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" - } - } - }, - "org.jetbrains.kotlin:kotlin-util-klib": { - "1.7.21": { - "kotlin-util-klib-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" - ], - "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" - }, - "kotlin-util-klib-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" - ], - "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { - "1.5.0": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], - "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" - } - } - }, - "org.jetbrains:annotations": { - "13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "net.java.dev.jna:jna:5.6.0": { + "jna-5.6.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" + ], + "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" + }, + "jna-5.6.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" + ], + "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions:1.7.21": { + "kotlin-android-extensions-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" + ], + "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" + }, + "kotlin-android-extensions-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" + ], + "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" + } + }, + "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.21": { + "kotlin-annotation-processing-gradle-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" + ], + "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" + }, + "kotlin-annotation-processing-gradle-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" + ], + "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" + } + }, + "org.jetbrains.kotlin:kotlin-build-common:1.7.21": { + "kotlin-build-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" + ], + "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" + }, + "kotlin-build-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" + ], + "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21": { + "kotlin-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" + }, + "kotlin-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner:1.7.21": { + "kotlin-compiler-runner-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" + ], + "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" + }, + "kotlin-compiler-runner-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" + ], + "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client:1.7.21": { + "kotlin-daemon-client-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" + ], + "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" + }, + "kotlin-daemon-client-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" + ], + "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.21": { + "kotlin-daemon-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" + ], + "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" + }, + "kotlin-daemon-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" + ], + "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21": { + "kotlin-gradle-plugin-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" + ], + "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" + }, + "kotlin-gradle-plugin-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" + ], + "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" + }, + "kotlin-gradle-plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom" + ], + "hash": "sha256-0gTXpKcf6Scv44M9x0IAkan/EJaky6JfcnihlUI1BGk=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.21": { + "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" + ], + "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" + }, + "kotlin-gradle-plugin-api-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" + ], + "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" + }, + "kotlin-gradle-plugin-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom" + ], + "hash": "sha256-89unBFqYcdah5QnkF+tjQa3bmHFaL409ZnJlAdq0s0Y=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.7.21": { + "kotlin-gradle-plugin-idea-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" + ], + "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" + }, + "kotlin-gradle-plugin-idea-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" + ], + "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" + }, + "kotlin-gradle-plugin-idea-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom" + ], + "hash": "sha256-Flz/idoRsXIpiJPHg0sNQadm1/PdIPoIvfiJxlXD5zc=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.7.21": { + "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" + ], + "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" + }, + "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" + ], + "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.7.21": { + "kotlin-gradle-plugin-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" + ], + "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" + }, + "kotlin-gradle-plugin-model-1.7.21.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" + ], + "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" + }, + "kotlin-gradle-plugin-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom" + ], + "hash": "sha256-y2vKOdHhBWBXcMCj3ubUXw58XtPFNGiZ9ycQsf//HaY=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.7.21": { + "kotlin-klib-commonizer-api-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" + ], + "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" + }, + "kotlin-klib-commonizer-api-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" + ], + "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.21": { + "kotlin-klib-commonizer-embeddable-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" + ], + "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" + }, + "kotlin-klib-commonizer-embeddable-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" + ], + "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" + } + }, + "org.jetbrains.kotlin:kotlin-native-utils:1.7.21": { + "kotlin-native-utils-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" + ], + "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" + }, + "kotlin-native-utils-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" + ], + "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" + } + }, + "org.jetbrains.kotlin:kotlin-project-model:1.7.21": { + "kotlin-project-model-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" + ], + "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" + }, + "kotlin-project-model-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" + ], + "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.7.21": { + "kotlin-reflect-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" + ], + "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" + }, + "kotlin-reflect-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" + ], + "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime:1.7.21": { + "kotlin-script-runtime-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" + ], + "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" + }, + "kotlin-script-runtime-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" + ], + "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common:1.7.21": { + "kotlin-scripting-common-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" + ], + "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" + }, + "kotlin-scripting-common-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" + ], + "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.7.21": { + "kotlin-scripting-compiler-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" + ], + "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" + }, + "kotlin-scripting-compiler-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" + ], + "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.7.21": { + "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" + ], + "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" + ], + "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.21": { + "kotlin-scripting-jvm-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" + ], + "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" + }, + "kotlin-scripting-jvm-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" + ], + "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.7.21": { + "kotlin-stdlib-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" + ], + "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" + }, + "kotlin-stdlib-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" + ], + "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.7.21": { + "kotlin-stdlib-common-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" + ], + "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" + }, + "kotlin-stdlib-common-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" + ], + "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21": { + "kotlin-stdlib-jdk7-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" + ], + "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" + }, + "kotlin-stdlib-jdk7-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" + ], + "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21": { + "kotlin-stdlib-jdk8-1.7.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" + ], + "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" + }, + "kotlin-stdlib-jdk8-1.7.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" + ], + "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core:1.7.21": { + "kotlin-tooling-core-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" + ], + "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" + }, + "kotlin-tooling-core-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" + ], + "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" + } + }, + "org.jetbrains.kotlin:kotlin-util-io:1.7.21": { + "kotlin-util-io-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" + ], + "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" + }, + "kotlin-util-io-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" + ], + "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" + } + }, + "org.jetbrains.kotlin:kotlin-util-klib:1.7.21": { + "kotlin-util-klib-1.7.21.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" + ], + "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" + }, + "kotlin-util-klib-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" + ], + "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" + } + }, + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.21": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" + ], + "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } } } \ No newline at end of file diff --git a/fixtures/golden/settings/buildscript.groovy.json b/fixtures/golden/settings/buildscript.groovy.json index 8865774..d4c2a74 100644 --- a/fixtures/golden/settings/buildscript.groovy.json +++ b/fixtures/golden/settings/buildscript.groovy.json @@ -1,18 +1,16 @@ { - "org.apache:test": { - "1.0.0": { - "test-1.0.0.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" - ], - "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" - }, - "test-1.0.0.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ], - "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" - } + "org.apache:test:1.0.0": { + "test-1.0.0.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "test-1.0.0.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom" + ], + "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" } } } \ No newline at end of file diff --git a/fixtures/golden/settings/dependency-resolution-management.kotlin.json b/fixtures/golden/settings/dependency-resolution-management.kotlin.json index 8865774..d4c2a74 100644 --- a/fixtures/golden/settings/dependency-resolution-management.kotlin.json +++ b/fixtures/golden/settings/dependency-resolution-management.kotlin.json @@ -1,18 +1,16 @@ { - "org.apache:test": { - "1.0.0": { - "test-1.0.0.jar": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" - ], - "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" - }, - "test-1.0.0.pom": { - "urls": [ - "file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ], - "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" - } + "org.apache:test:1.0.0": { + "test-1.0.0.jar": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar" + ], + "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" + }, + "test-1.0.0.pom": { + "urls": [ + "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom" + ], + "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" } } } \ No newline at end of file diff --git a/fixtures/golden/subprojects/multi-module.groovy.json b/fixtures/golden/subprojects/multi-module.groovy.json index d9ca950..eff775d 100644 --- a/fixtures/golden/subprojects/multi-module.groovy.json +++ b/fixtures/golden/subprojects/multi-module.groovy.json @@ -1,128 +1,146 @@ { - "com.squareup.moshi:moshi": { - "1.8.0": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" - } + "com.squareup.moshi:moshi:1.8.0": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + } + }, + "com.squareup.moshi:moshi-parent:1.8.0": { + "moshi-parent-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom" + ], + "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c=" } }, - "com.squareup.okio:okio": { - "2.2.2": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" - } + "com.squareup.okio:okio:2.2.2": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" }, - "1.16.0": { - "okio-1.16.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" - ], - "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" - }, - "okio-1.16.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" - ], - "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" - } + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } }, - "junit:junit": { - "4.12": { - "junit-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" - ], - "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" - }, - "junit-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" - ], - "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" - } + "com.squareup.okio:okio:1.16.0": { + "okio-1.16.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" + ], + "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" + }, + "okio-1.16.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" + ], + "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" } }, - "org.hamcrest:hamcrest-core": { - "1.3": { - "hamcrest-core-1.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" - ], - "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" - }, - "hamcrest-core-1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" - ], - "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" - } + "com.squareup.okio:okio-parent:1.16.0": { + "okio-parent-1.16.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom" + ], + "hash": "sha256-C3Qkw/qrO7UzMJbjmVf4j41QzgyYv7pxo/z6oKrwVSw=" } }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "1.2.60": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" - } + "junit:junit:4.12": { + "junit-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" + ], + "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" + }, + "junit-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" + ], + "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" } }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "1.2.60": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" - } + "org.hamcrest:hamcrest-core:1.3": { + "hamcrest-core-1.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" + ], + "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" + }, + "hamcrest-core-1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" + ], + "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" + } + }, + "org.hamcrest:hamcrest-parent:1.3": { + "hamcrest-parent-1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom" + ], + "hash": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" } }, - "org.jetbrains:annotations": { - "13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "org.sonatype.oss:oss-parent:7": { + "oss-parent-7.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" + ], + "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } } } \ No newline at end of file diff --git a/fixtures/golden/subprojects/multi-module.kotlin.json b/fixtures/golden/subprojects/multi-module.kotlin.json index d9ca950..eff775d 100644 --- a/fixtures/golden/subprojects/multi-module.kotlin.json +++ b/fixtures/golden/subprojects/multi-module.kotlin.json @@ -1,128 +1,146 @@ { - "com.squareup.moshi:moshi": { - "1.8.0": { - "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], - "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" - }, - "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], - "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" - } + "com.squareup.moshi:moshi:1.8.0": { + "moshi-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" + ], + "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" + }, + "moshi-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" + ], + "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" + } + }, + "com.squareup.moshi:moshi-parent:1.8.0": { + "moshi-parent-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom" + ], + "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c=" } }, - "com.squareup.okio:okio": { - "2.2.2": { - "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], - "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" - }, - "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], - "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" - } + "com.squareup.okio:okio:2.2.2": { + "okio-2.2.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" + ], + "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" }, - "1.16.0": { - "okio-1.16.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" - ], - "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" - }, - "okio-1.16.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" - ], - "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" - } + "okio-2.2.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" + ], + "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } }, - "junit:junit": { - "4.12": { - "junit-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" - ], - "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" - }, - "junit-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" - ], - "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" - } + "com.squareup.okio:okio:1.16.0": { + "okio-1.16.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" + ], + "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" + }, + "okio-1.16.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" + ], + "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" } }, - "org.hamcrest:hamcrest-core": { - "1.3": { - "hamcrest-core-1.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" - ], - "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" - }, - "hamcrest-core-1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" - ], - "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" - } + "com.squareup.okio:okio-parent:1.16.0": { + "okio-parent-1.16.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom" + ], + "hash": "sha256-C3Qkw/qrO7UzMJbjmVf4j41QzgyYv7pxo/z6oKrwVSw=" } }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "1.2.60": { - "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], - "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" - }, - "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], - "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" - } + "junit:junit:4.12": { + "junit-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" + ], + "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" + }, + "junit-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" + ], + "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" } }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "1.2.60": { - "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], - "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" - }, - "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], - "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" - } + "org.hamcrest:hamcrest-core:1.3": { + "hamcrest-core-1.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" + ], + "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" + }, + "hamcrest-core-1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" + ], + "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" + } + }, + "org.hamcrest:hamcrest-parent:1.3": { + "hamcrest-parent-1.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom" + ], + "hash": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { + "kotlin-stdlib-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" + ], + "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" + }, + "kotlin-stdlib-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" + ], + "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { + "kotlin-stdlib-common-1.2.60.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" + ], + "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" + }, + "kotlin-stdlib-common-1.2.60.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" + ], + "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" } }, - "org.jetbrains:annotations": { - "13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } + "org.sonatype.oss:oss-parent:7": { + "oss-parent-7.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" + ], + "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } } } \ No newline at end of file diff --git a/fixtures/basic/basic-java-project/groovy/build.gradle b/fixtures/projects/basic/basic-java-project/groovy/build.gradle similarity index 100% rename from fixtures/basic/basic-java-project/groovy/build.gradle rename to fixtures/projects/basic/basic-java-project/groovy/build.gradle diff --git a/fixtures/basic/basic-java-project/groovy/settings.gradle b/fixtures/projects/basic/basic-java-project/groovy/settings.gradle similarity index 100% rename from fixtures/basic/basic-java-project/groovy/settings.gradle rename to fixtures/projects/basic/basic-java-project/groovy/settings.gradle diff --git a/fixtures/basic/basic-java-project/kotlin/build.gradle.kts b/fixtures/projects/basic/basic-java-project/kotlin/build.gradle.kts similarity index 100% rename from fixtures/basic/basic-java-project/kotlin/build.gradle.kts rename to fixtures/projects/basic/basic-java-project/kotlin/build.gradle.kts diff --git a/fixtures/basic/basic-java-project/kotlin/settings.gradle.kts b/fixtures/projects/basic/basic-java-project/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/basic/basic-java-project/kotlin/settings.gradle.kts rename to fixtures/projects/basic/basic-java-project/kotlin/settings.gradle.kts diff --git a/fixtures/basic/basic-kotlin-project/kotlin/build.gradle.kts b/fixtures/projects/basic/basic-kotlin-project/kotlin/build.gradle.kts similarity index 82% rename from fixtures/basic/basic-kotlin-project/kotlin/build.gradle.kts rename to fixtures/projects/basic/basic-kotlin-project/kotlin/build.gradle.kts index d47e7c4..11d5648 100644 --- a/fixtures/basic/basic-kotlin-project/kotlin/build.gradle.kts +++ b/fixtures/projects/basic/basic-kotlin-project/kotlin/build.gradle.kts @@ -11,10 +11,10 @@ dependencies { implementation("com.natpryce:konfig:1.6.10.0") implementation("com.github.pengrad:java-telegram-bot-api:4.6.0") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3") - implementation("org.jetbrains.exposed:exposed-core:0.21.1") - implementation("org.jetbrains.exposed", "exposed-dao", "0.21.1") - implementation("org.jetbrains.exposed", "exposed-jdbc", "0.21.1") - implementation("org.jetbrains.exposed", "exposed-jodatime", "0.21.1") + implementation("org.jetbrains.exposed:exposed-core:0.50.1") + implementation("org.jetbrains.exposed", "exposed-dao", "0.50.1") + implementation("org.jetbrains.exposed", "exposed-jdbc", "0.50.1") + implementation("org.jetbrains.exposed", "exposed-jodatime", "0.50.1") implementation("io.javalin:javalin:3.7.0") implementation("org.slf4j:slf4j-simple:1.8.0-beta4") implementation(group = "org.xerial", name = "sqlite-jdbc", version = "3.30.1") diff --git a/fixtures/basic/basic-kotlin-project/kotlin/settings.gradle.kts b/fixtures/projects/basic/basic-kotlin-project/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/basic/basic-kotlin-project/kotlin/settings.gradle.kts rename to fixtures/projects/basic/basic-kotlin-project/kotlin/settings.gradle.kts diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/build.gradle.kts b/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/build.gradle.kts similarity index 100% rename from fixtures/buildsrc/plugin-in-buildsrc/kotlin/build.gradle.kts rename to fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/build.gradle.kts diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts b/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts similarity index 100% rename from fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts rename to fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/build.gradle.kts diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/settings.gradle.kts b/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/settings.gradle.kts similarity index 100% rename from fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/settings.gradle.kts rename to fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/settings.gradle.kts diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com/example/ApplyPluginPublishPlugin.kt b/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com/example/ApplyPluginPublishPlugin.kt similarity index 100% rename from fixtures/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com/example/ApplyPluginPublishPlugin.kt rename to fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/src/main/kotlin/com/example/ApplyPluginPublishPlugin.kt diff --git a/fixtures/buildsrc/plugin-in-buildsrc/kotlin/settings.gradle.kts b/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/buildsrc/plugin-in-buildsrc/kotlin/settings.gradle.kts rename to fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/settings.gradle.kts diff --git a/fixtures/dependency/classifier/groovy/build.gradle b/fixtures/projects/dependency/classifier/groovy/build.gradle similarity index 100% rename from fixtures/dependency/classifier/groovy/build.gradle rename to fixtures/projects/dependency/classifier/groovy/build.gradle diff --git a/fixtures/dependency/classifier/groovy/settings.gradle b/fixtures/projects/dependency/classifier/groovy/settings.gradle similarity index 100% rename from fixtures/dependency/classifier/groovy/settings.gradle rename to fixtures/projects/dependency/classifier/groovy/settings.gradle diff --git a/fixtures/dependency/classifier/kotlin/build.gradle.kts b/fixtures/projects/dependency/classifier/kotlin/build.gradle.kts similarity index 100% rename from fixtures/dependency/classifier/kotlin/build.gradle.kts rename to fixtures/projects/dependency/classifier/kotlin/build.gradle.kts diff --git a/fixtures/dependency/classifier/kotlin/settings.gradle.kts b/fixtures/projects/dependency/classifier/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/dependency/classifier/kotlin/settings.gradle.kts rename to fixtures/projects/dependency/classifier/kotlin/settings.gradle.kts diff --git a/fixtures/projects/dependency/maven-bom/kotlin/build.gradle.kts b/fixtures/projects/dependency/maven-bom/kotlin/build.gradle.kts new file mode 100644 index 0000000..a026061 --- /dev/null +++ b/fixtures/projects/dependency/maven-bom/kotlin/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + java +} + +repositories { + maven { + url = uri(System.getProperty("org.nixos.gradle2nix.m2")) + println(uri(System.getProperty("org.nixos.gradle2nix.m2"))) + isAllowInsecureProtocol = true + } +} + +dependencies { + implementation(platform("io.micrometer:micrometer-bom:1.5.1")) + implementation("io.micrometer:micrometer-core") +} diff --git a/fixtures/dependency/maven-bom/kotlin/settings.gradle.kts b/fixtures/projects/dependency/maven-bom/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/dependency/maven-bom/kotlin/settings.gradle.kts rename to fixtures/projects/dependency/maven-bom/kotlin/settings.gradle.kts diff --git a/fixtures/dependency/snapshot-dynamic/groovy/build.gradle b/fixtures/projects/dependency/snapshot-dynamic/groovy/build.gradle similarity index 50% rename from fixtures/dependency/snapshot-dynamic/groovy/build.gradle rename to fixtures/projects/dependency/snapshot-dynamic/groovy/build.gradle index 83d134f..604d299 100644 --- a/fixtures/dependency/snapshot-dynamic/groovy/build.gradle +++ b/fixtures/projects/dependency/snapshot-dynamic/groovy/build.gradle @@ -3,7 +3,10 @@ plugins { } repositories { - maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } + maven { + url = uri(System.getProperty("org.nixos.gradle2nix.m2")) + allowInsecureProtocol = true + } } dependencies { diff --git a/fixtures/dependency/snapshot-dynamic/groovy/settings.gradle b/fixtures/projects/dependency/snapshot-dynamic/groovy/settings.gradle similarity index 100% rename from fixtures/dependency/snapshot-dynamic/groovy/settings.gradle rename to fixtures/projects/dependency/snapshot-dynamic/groovy/settings.gradle diff --git a/fixtures/dependency/snapshot-dynamic/kotlin/build.gradle.kts b/fixtures/projects/dependency/snapshot-dynamic/kotlin/build.gradle.kts similarity index 50% rename from fixtures/dependency/snapshot-dynamic/kotlin/build.gradle.kts rename to fixtures/projects/dependency/snapshot-dynamic/kotlin/build.gradle.kts index 695191a..7dc4aca 100644 --- a/fixtures/dependency/snapshot-dynamic/kotlin/build.gradle.kts +++ b/fixtures/projects/dependency/snapshot-dynamic/kotlin/build.gradle.kts @@ -4,7 +4,10 @@ plugins { } repositories { - maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } + maven { + url = uri(System.getProperty("org.nixos.gradle2nix.m2")) + isAllowInsecureProtocol = true + } } dependencies { diff --git a/fixtures/dependency/snapshot-dynamic/kotlin/settings.gradle.kts b/fixtures/projects/dependency/snapshot-dynamic/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/dependency/snapshot-dynamic/kotlin/settings.gradle.kts rename to fixtures/projects/dependency/snapshot-dynamic/kotlin/settings.gradle.kts diff --git a/fixtures/dependency/snapshot-redirect/groovy/build.gradle b/fixtures/projects/dependency/snapshot-redirect/groovy/build.gradle similarity index 89% rename from fixtures/dependency/snapshot-redirect/groovy/build.gradle rename to fixtures/projects/dependency/snapshot-redirect/groovy/build.gradle index 70cfd52..53e9e56 100644 --- a/fixtures/dependency/snapshot-redirect/groovy/build.gradle +++ b/fixtures/projects/dependency/snapshot-redirect/groovy/build.gradle @@ -3,6 +3,7 @@ plugins { } repositories { + mavenCentral() maven { url 'https://jitpack.io' } } diff --git a/fixtures/dependency/snapshot-redirect/groovy/settings.gradle b/fixtures/projects/dependency/snapshot-redirect/groovy/settings.gradle similarity index 100% rename from fixtures/dependency/snapshot-redirect/groovy/settings.gradle rename to fixtures/projects/dependency/snapshot-redirect/groovy/settings.gradle diff --git a/fixtures/dependency/snapshot/groovy/build.gradle b/fixtures/projects/dependency/snapshot/groovy/build.gradle similarity index 50% rename from fixtures/dependency/snapshot/groovy/build.gradle rename to fixtures/projects/dependency/snapshot/groovy/build.gradle index e7c8a38..70c8a6f 100644 --- a/fixtures/dependency/snapshot/groovy/build.gradle +++ b/fixtures/projects/dependency/snapshot/groovy/build.gradle @@ -3,7 +3,10 @@ plugins { } repositories { - maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } + maven { + url = uri(System.getProperty("org.nixos.gradle2nix.m2")) + allowInsecureProtocol = true + } } dependencies { diff --git a/fixtures/dependency/snapshot/groovy/settings.gradle b/fixtures/projects/dependency/snapshot/groovy/settings.gradle similarity index 100% rename from fixtures/dependency/snapshot/groovy/settings.gradle rename to fixtures/projects/dependency/snapshot/groovy/settings.gradle diff --git a/fixtures/dependency/snapshot/kotlin/build.gradle.kts b/fixtures/projects/dependency/snapshot/kotlin/build.gradle.kts similarity index 50% rename from fixtures/dependency/snapshot/kotlin/build.gradle.kts rename to fixtures/projects/dependency/snapshot/kotlin/build.gradle.kts index 5fdce81..75f07e5 100644 --- a/fixtures/dependency/snapshot/kotlin/build.gradle.kts +++ b/fixtures/projects/dependency/snapshot/kotlin/build.gradle.kts @@ -4,7 +4,10 @@ plugins { } repositories { - maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } + maven { + url = uri(System.getProperty("org.nixos.gradle2nix.m2")) + isAllowInsecureProtocol = true + } } dependencies { diff --git a/fixtures/dependency/snapshot/kotlin/settings.gradle.kts b/fixtures/projects/dependency/snapshot/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/dependency/snapshot/kotlin/settings.gradle.kts rename to fixtures/projects/dependency/snapshot/kotlin/settings.gradle.kts diff --git a/fixtures/included-build/groovy/build.gradle b/fixtures/projects/included-build/groovy/build.gradle similarity index 56% rename from fixtures/included-build/groovy/build.gradle rename to fixtures/projects/included-build/groovy/build.gradle index 72a75a9..913d5f9 100644 --- a/fixtures/included-build/groovy/build.gradle +++ b/fixtures/projects/included-build/groovy/build.gradle @@ -1,7 +1,10 @@ apply plugin: 'java' repositories { - maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } + maven { + url = uri(System.getProperty("org.nixos.gradle2nix.m2")) + allowInsecureProtocol true + } } dependencies { diff --git a/fixtures/included-build/groovy/included-child/build.gradle b/fixtures/projects/included-build/groovy/included-child/build.gradle similarity index 56% rename from fixtures/included-build/groovy/included-child/build.gradle rename to fixtures/projects/included-build/groovy/included-child/build.gradle index 5a964cf..f2d8c7d 100644 --- a/fixtures/included-build/groovy/included-child/build.gradle +++ b/fixtures/projects/included-build/groovy/included-child/build.gradle @@ -3,7 +3,10 @@ group = 'org.test.included' version = '1.0' repositories { - maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } + maven { + url = uri(System.getProperty("org.nixos.gradle2nix.m2")) + allowInsecureProtocol true + } } dependencies { diff --git a/fixtures/included-build/groovy/included-child/settings.gradle b/fixtures/projects/included-build/groovy/included-child/settings.gradle similarity index 51% rename from fixtures/included-build/groovy/included-child/settings.gradle rename to fixtures/projects/included-build/groovy/included-child/settings.gradle index a622c5b..a26b9b8 100644 --- a/fixtures/included-build/groovy/included-child/settings.gradle +++ b/fixtures/projects/included-build/groovy/included-child/settings.gradle @@ -1,6 +1,9 @@ buildscript { repositories { - maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } + maven { + url = uri(System.getProperty("org.nixos.gradle2nix.m2")) + allowInsecureProtocol true + } } dependencies { classpath 'org.apache:foo:2.0.0' diff --git a/fixtures/included-build/groovy/settings.gradle b/fixtures/projects/included-build/groovy/settings.gradle similarity index 100% rename from fixtures/included-build/groovy/settings.gradle rename to fixtures/projects/included-build/groovy/settings.gradle diff --git a/fixtures/integration/settings-buildscript/groovy/build.gradle b/fixtures/projects/integration/settings-buildscript/groovy/build.gradle similarity index 100% rename from fixtures/integration/settings-buildscript/groovy/build.gradle rename to fixtures/projects/integration/settings-buildscript/groovy/build.gradle diff --git a/fixtures/integration/settings-buildscript/groovy/default.nix b/fixtures/projects/integration/settings-buildscript/groovy/default.nix similarity index 100% rename from fixtures/integration/settings-buildscript/groovy/default.nix rename to fixtures/projects/integration/settings-buildscript/groovy/default.nix diff --git a/fixtures/integration/settings-buildscript/groovy/gradle-env.json b/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.json similarity index 100% rename from fixtures/integration/settings-buildscript/groovy/gradle-env.json rename to fixtures/projects/integration/settings-buildscript/groovy/gradle-env.json diff --git a/fixtures/integration/settings-buildscript/groovy/gradle-env.nix b/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.nix similarity index 100% rename from fixtures/integration/settings-buildscript/groovy/gradle-env.nix rename to fixtures/projects/integration/settings-buildscript/groovy/gradle-env.nix diff --git a/fixtures/integration/settings-buildscript/groovy/semantic-build-versioning.gradle b/fixtures/projects/integration/settings-buildscript/groovy/semantic-build-versioning.gradle similarity index 100% rename from fixtures/integration/settings-buildscript/groovy/semantic-build-versioning.gradle rename to fixtures/projects/integration/settings-buildscript/groovy/semantic-build-versioning.gradle diff --git a/fixtures/integration/settings-buildscript/groovy/settings.gradle b/fixtures/projects/integration/settings-buildscript/groovy/settings.gradle similarity index 100% rename from fixtures/integration/settings-buildscript/groovy/settings.gradle rename to fixtures/projects/integration/settings-buildscript/groovy/settings.gradle diff --git a/fixtures/ivy/basic/kotlin/build.gradle.kts b/fixtures/projects/ivy/basic/kotlin/build.gradle.kts similarity index 100% rename from fixtures/ivy/basic/kotlin/build.gradle.kts rename to fixtures/projects/ivy/basic/kotlin/build.gradle.kts diff --git a/fixtures/ivy/basic/kotlin/settings.gradle.kts b/fixtures/projects/ivy/basic/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/ivy/basic/kotlin/settings.gradle.kts rename to fixtures/projects/ivy/basic/kotlin/settings.gradle.kts diff --git a/fixtures/plugin/resolves-from-default-repo/groovy/build.gradle b/fixtures/projects/plugin/resolves-from-default-repo/groovy/build.gradle similarity index 100% rename from fixtures/plugin/resolves-from-default-repo/groovy/build.gradle rename to fixtures/projects/plugin/resolves-from-default-repo/groovy/build.gradle diff --git a/fixtures/plugin/resolves-from-default-repo/groovy/settings.gradle b/fixtures/projects/plugin/resolves-from-default-repo/groovy/settings.gradle similarity index 100% rename from fixtures/plugin/resolves-from-default-repo/groovy/settings.gradle rename to fixtures/projects/plugin/resolves-from-default-repo/groovy/settings.gradle diff --git a/fixtures/plugin/resolves-from-default-repo/kotlin/build.gradle.kts b/fixtures/projects/plugin/resolves-from-default-repo/kotlin/build.gradle.kts similarity index 100% rename from fixtures/plugin/resolves-from-default-repo/kotlin/build.gradle.kts rename to fixtures/projects/plugin/resolves-from-default-repo/kotlin/build.gradle.kts diff --git a/fixtures/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts b/fixtures/projects/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts rename to fixtures/projects/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts diff --git a/fixtures/s3/maven-snapshot/groovy/build.gradle b/fixtures/projects/s3/maven-snapshot/groovy/build.gradle similarity index 100% rename from fixtures/s3/maven-snapshot/groovy/build.gradle rename to fixtures/projects/s3/maven-snapshot/groovy/build.gradle diff --git a/fixtures/s3/maven-snapshot/groovy/settings.gradle b/fixtures/projects/s3/maven-snapshot/groovy/settings.gradle similarity index 100% rename from fixtures/s3/maven-snapshot/groovy/settings.gradle rename to fixtures/projects/s3/maven-snapshot/groovy/settings.gradle diff --git a/fixtures/s3/maven-snapshot/kotlin/build.gradle.kts b/fixtures/projects/s3/maven-snapshot/kotlin/build.gradle.kts similarity index 100% rename from fixtures/s3/maven-snapshot/kotlin/build.gradle.kts rename to fixtures/projects/s3/maven-snapshot/kotlin/build.gradle.kts diff --git a/fixtures/s3/maven-snapshot/kotlin/settings.gradle.kts b/fixtures/projects/s3/maven-snapshot/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/s3/maven-snapshot/kotlin/settings.gradle.kts rename to fixtures/projects/s3/maven-snapshot/kotlin/settings.gradle.kts diff --git a/fixtures/s3/maven/groovy/build.gradle b/fixtures/projects/s3/maven/groovy/build.gradle similarity index 87% rename from fixtures/s3/maven/groovy/build.gradle rename to fixtures/projects/s3/maven/groovy/build.gradle index 787737b..fb85bfb 100644 --- a/fixtures/s3/maven/groovy/build.gradle +++ b/fixtures/projects/s3/maven/groovy/build.gradle @@ -1,3 +1,5 @@ +package projects.s3.maven.groovy + plugins { id('java') } @@ -14,4 +16,4 @@ repositories { dependencies { implementation("org.apache:test:1.0.0") -} \ No newline at end of file +} diff --git a/fixtures/projects/s3/maven/groovy/settings.gradle b/fixtures/projects/s3/maven/groovy/settings.gradle new file mode 100644 index 0000000..0e4ec7e --- /dev/null +++ b/fixtures/projects/s3/maven/groovy/settings.gradle @@ -0,0 +1 @@ +package projects.s3.maven.groovy diff --git a/fixtures/s3/maven/kotlin/build.gradle.kts b/fixtures/projects/s3/maven/kotlin/build.gradle.kts similarity index 100% rename from fixtures/s3/maven/kotlin/build.gradle.kts rename to fixtures/projects/s3/maven/kotlin/build.gradle.kts diff --git a/fixtures/s3/maven/kotlin/settings.gradle.kts b/fixtures/projects/s3/maven/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/s3/maven/kotlin/settings.gradle.kts rename to fixtures/projects/s3/maven/kotlin/settings.gradle.kts diff --git a/fixtures/settings/buildscript/groovy/settings.gradle b/fixtures/projects/settings/buildscript/groovy/settings.gradle similarity index 83% rename from fixtures/settings/buildscript/groovy/settings.gradle rename to fixtures/projects/settings/buildscript/groovy/settings.gradle index e4b1866..5c0419a 100644 --- a/fixtures/settings/buildscript/groovy/settings.gradle +++ b/fixtures/projects/settings/buildscript/groovy/settings.gradle @@ -2,6 +2,7 @@ buildscript { repositories { maven { url System.getProperty("org.nixos.gradle2nix.m2") + allowInsecureProtocol true } } dependencies { diff --git a/fixtures/settings/dependency-resolution-management/kotlin/build.gradle.kts b/fixtures/projects/settings/dependency-resolution-management/kotlin/build.gradle.kts similarity index 100% rename from fixtures/settings/dependency-resolution-management/kotlin/build.gradle.kts rename to fixtures/projects/settings/dependency-resolution-management/kotlin/build.gradle.kts diff --git a/fixtures/projects/settings/dependency-resolution-management/kotlin/settings.gradle.kts b/fixtures/projects/settings/dependency-resolution-management/kotlin/settings.gradle.kts new file mode 100644 index 0000000..fec1505 --- /dev/null +++ b/fixtures/projects/settings/dependency-resolution-management/kotlin/settings.gradle.kts @@ -0,0 +1,9 @@ +dependencyResolutionManagement { + repositories { + maven { + url = uri(System.getProperty("org.nixos.gradle2nix.m2")) + isAllowInsecureProtocol = true + } + } + repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) +} diff --git a/fixtures/subprojects/multi-module/groovy/build.gradle b/fixtures/projects/subprojects/multi-module/groovy/build.gradle similarity index 100% rename from fixtures/subprojects/multi-module/groovy/build.gradle rename to fixtures/projects/subprojects/multi-module/groovy/build.gradle diff --git a/fixtures/subprojects/multi-module/groovy/child-a/build.gradle b/fixtures/projects/subprojects/multi-module/groovy/child-a/build.gradle similarity index 100% rename from fixtures/subprojects/multi-module/groovy/child-a/build.gradle rename to fixtures/projects/subprojects/multi-module/groovy/child-a/build.gradle diff --git a/fixtures/subprojects/multi-module/groovy/child-b/build.gradle b/fixtures/projects/subprojects/multi-module/groovy/child-b/build.gradle similarity index 100% rename from fixtures/subprojects/multi-module/groovy/child-b/build.gradle rename to fixtures/projects/subprojects/multi-module/groovy/child-b/build.gradle diff --git a/fixtures/subprojects/multi-module/groovy/settings.gradle b/fixtures/projects/subprojects/multi-module/groovy/settings.gradle similarity index 100% rename from fixtures/subprojects/multi-module/groovy/settings.gradle rename to fixtures/projects/subprojects/multi-module/groovy/settings.gradle diff --git a/fixtures/subprojects/multi-module/kotlin/build.gradle.kts b/fixtures/projects/subprojects/multi-module/kotlin/build.gradle.kts similarity index 100% rename from fixtures/subprojects/multi-module/kotlin/build.gradle.kts rename to fixtures/projects/subprojects/multi-module/kotlin/build.gradle.kts diff --git a/fixtures/subprojects/multi-module/kotlin/child-a/build.gradle.kts b/fixtures/projects/subprojects/multi-module/kotlin/child-a/build.gradle.kts similarity index 100% rename from fixtures/subprojects/multi-module/kotlin/child-a/build.gradle.kts rename to fixtures/projects/subprojects/multi-module/kotlin/child-a/build.gradle.kts diff --git a/fixtures/subprojects/multi-module/kotlin/child-b/build.gradle.kts b/fixtures/projects/subprojects/multi-module/kotlin/child-b/build.gradle.kts similarity index 100% rename from fixtures/subprojects/multi-module/kotlin/child-b/build.gradle.kts rename to fixtures/projects/subprojects/multi-module/kotlin/child-b/build.gradle.kts diff --git a/fixtures/subprojects/multi-module/kotlin/settings.gradle.kts b/fixtures/projects/subprojects/multi-module/kotlin/settings.gradle.kts similarity index 100% rename from fixtures/subprojects/multi-module/kotlin/settings.gradle.kts rename to fixtures/projects/subprojects/multi-module/kotlin/settings.gradle.kts diff --git a/fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom b/fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom new file mode 100644 index 0000000..3963952 --- /dev/null +++ b/fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom @@ -0,0 +1,155 @@ + + + + 4.0.0 + + org.sonatype.oss + oss-parent + 7 + pom + + Sonatype OSS Parent + http://nexus.sonatype.org/oss-repository-hosting.html + Sonatype helps open source projects to set up Maven repositories on https://oss.sonatype.org/ + + + scm:svn:http://svn.sonatype.org/spice/tags/oss-parent-7 + scm:svn:https://svn.sonatype.org/spice/tags/oss-parent-7 + http://svn.sonatype.org/spice/tags/oss-parent-7 + + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://oss.sonatype.org/content/repositories/snapshots + + false + + + true + + + + + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + ${sonatypeOssDistMgmtSnapshotsUrl} + + + sonatype-nexus-staging + Nexus Release Repository + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 1.0 + + + enforce-maven + + enforce + + + + + (,2.1.0),(2.1.0,2.2.0),(2.2.0,) + Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures and checksums respectively. + + + + + + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.1 + + forked-path + false + -Psonatype-oss-release + + + + + + + + UTF-8 + https://oss.sonatype.org/content/repositories/snapshots/ + + + + + sonatype-oss-release + + + + org.apache.maven.plugins + maven-source-plugin + 2.1.2 + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.7 + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.1 + + + sign-artifacts + verify + + sign + + + + + + + + + + diff --git a/fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom.md5 b/fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom.md5 new file mode 100644 index 0000000..2b5bdaf --- /dev/null +++ b/fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom.md5 @@ -0,0 +1 @@ +3e418cf7f2607bf359e6c514a992cb38 \ No newline at end of file diff --git a/fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom.sha1 b/fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom.sha1 new file mode 100644 index 0000000..800e284 --- /dev/null +++ b/fixtures/repositories/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom.sha1 @@ -0,0 +1 @@ +46b8a785b60a2767095b8611613b58577e96d4c9 \ No newline at end of file diff --git a/fixtures/repositories/m2/org/sonatype/oss/oss-parent/maven-metadata.xml b/fixtures/repositories/m2/org/sonatype/oss/oss-parent/maven-metadata.xml new file mode 100644 index 0000000..4495a6d --- /dev/null +++ b/fixtures/repositories/m2/org/sonatype/oss/oss-parent/maven-metadata.xml @@ -0,0 +1,19 @@ + + + org.sonatype.oss + oss-parent + + 7 + 7 + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + 20110307124442 + + \ No newline at end of file diff --git a/fixtures/s3/maven/groovy/settings.gradle b/fixtures/s3/maven/groovy/settings.gradle deleted file mode 100644 index e69de29..0000000 diff --git a/fixtures/settings/dependency-resolution-management/kotlin/settings.gradle.kts b/fixtures/settings/dependency-resolution-management/kotlin/settings.gradle.kts deleted file mode 100644 index 8292657..0000000 --- a/fixtures/settings/dependency-resolution-management/kotlin/settings.gradle.kts +++ /dev/null @@ -1,6 +0,0 @@ -dependencyResolutionManagement { - repositories { - maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } - } - repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) -} diff --git a/gradle-env.json b/gradle-env.json index ca7b7e0..3aad6d2 100644 --- a/gradle-env.json +++ b/gradle-env.json @@ -1,2189 +1,3162 @@ { - "com.github.ajalt:clikt": { - "2.8.0": { - "clikt-2.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.module" - ], - "hash": "sha256-63VRQs7Uww/5lU+IH4piAUsdy/SKuciarYjFwpH95Gk=" - }, - "clikt-2.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.pom" - ], - "hash": "sha256-6njJ/q8ULg4AGtO8Ey95KJKSb7wmYPpu78Mg8Vzw/Hw=" - }, - "clikt-jvm-2.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.jar" - ], - "hash": "sha256-MefokL7AOvKCKKG1akSyvB7Cu57wWMkoiAAW0ZmUhpw=" - } - } - }, - "com.github.ajalt:clikt-metadata": { - "2.8.0": { - "clikt-metadata-2.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.jar" - ], - "hash": "sha256-Nxf/mOths+cC3HT1D4chzIFtNdzpwv/1g+NNUw0/I08=" - }, - "clikt-metadata-2.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.module" - ], - "hash": "sha256-y43UaWNHeqTaxq77g8LBGJqqqJxaV0TPJGGovTAvSmY=" - }, - "clikt-metadata-2.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.pom" - ], - "hash": "sha256-NtfT5a+1S3UWuJ0btkiAKNr/RrcufE4aXf9GNbtoDc8=" - } - } - }, - "com.github.ajalt:colormath": { - "1.2.0": { - "colormath-1.2.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.jar" - ], - "hash": "sha256-hqUffbsyq+QQ1UMx7GGsBoSlQ7JO6Xlnu6wKTmcp8DE=" - }, - "colormath-1.2.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.pom" - ], - "hash": "sha256-a3EKjQoQu+PgV5Xvf03ux3j9eQBbDBvA5cF4Ae5r3Z0=" - } - } - }, - "com.github.ajalt:mordant": { - "1.2.1": { - "mordant-1.2.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.jar" - ], - "hash": "sha256-enFOuNJbTZun8lalTHVZzKh9heyQ1pQ98ZE8rUPbldY=" - }, - "mordant-1.2.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.pom" - ], - "hash": "sha256-8DLcV/gHnB9WJvvF8PZfz14SNA3ictgpsLVOkpeacro=" - } - } - }, - "com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin": { - "8.1.1": { - "com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/8.1.1/com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom" - ], - "hash": "sha256-PLOIa5ffbgZvEIwxayGfJiyXw8st9tp4kn5kXetkPLA=" - } - } - }, - "com.github.johnrengelman:shadow": { - "8.1.1": { - "shadow-8.1.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.jar" - ], - "hash": "sha256-CEGXVVWQpTuyG1lQijMwVZ9TbdtEjq/R7GdfVGIDb88=" - }, - "shadow-8.1.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.module" - ], - "hash": "sha256-nQ87SqpniYcj6vbF6c0nOHj5V03azWSqNwJDYgzgLko=" - }, - "shadow-8.1.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.pom" - ], - "hash": "sha256-Mu55f8hDI3xM5cSeX0FSxYoIlK/OCg6SY25qLU/JjDU=" - } - } - }, - "com.gradle.plugin-publish:com.gradle.plugin-publish.gradle.plugin": { - "1.2.1": { - "com.gradle.plugin-publish.gradle.plugin-1.2.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/plugin-publish/com.gradle.plugin-publish.gradle.plugin/1.2.1/com.gradle.plugin-publish.gradle.plugin-1.2.1.pom" - ], - "hash": "sha256-60lBRA8TGZbmT6SCDc264js95UhBi6ke9MY0pqcfVMs=" - } - } - }, - "com.gradle.publish:plugin-publish-plugin": { - "1.2.1": { - "plugin-publish-plugin-1.2.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" - ], - "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" - }, - "plugin-publish-plugin-1.2.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" - ], - "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" - }, - "plugin-publish-plugin-1.2.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom" - ], - "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" - } - } - }, - "com.squareup.okio:okio": { - "3.7.0": { - "okio-3.7.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.7.0/okio-3.7.0.module" - ], - "hash": "sha256-88rgCfC2yEL7vFLOd1QsGdGdVu6ZpeVVZH8Lr8nVDPo=" - }, - "okio-3.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.7.0/okio-3.7.0.pom" - ], - "hash": "sha256-H2KMRSg726uM4DwHps+3akeLjdrhgL2PNKusJz5Id24=" - }, - "okio-metadata-3.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.7.0/okio-3.7.0.jar" - ], - "hash": "sha256-bvOnJZNuIlJB1K0SavmnyWgOS0r8G8Xtnn3TXwaJpNw=" - } - } - }, - "com.squareup.okio:okio-jvm": { - "3.7.0": { - "okio-jvm-3.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.7.0/okio-jvm-3.7.0.jar" - ], - "hash": "sha256-2LNa3Ch2j0OuWv5qfRqiqHi6UeC5ak8wiBHzsfWxPlU=" - }, - "okio-jvm-3.7.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.7.0/okio-jvm-3.7.0.module" - ], - "hash": "sha256-b64CAbCuSKGWBt4Ab/6YQtjQ/CoeQ04Hhc7Ni3Wr5HQ=" - }, - "okio-jvm-3.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.7.0/okio-jvm-3.7.0.pom" - ], - "hash": "sha256-d07LnSsHlLT7J+eeCHYMpWC39U+qlRm5GDxn/rRfLJc=" - } - } - }, - "commons-io:commons-io": { - "2.11.0": { - "commons-io-2.11.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar" - ], - "hash": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=" - }, - "commons-io-2.11.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.pom" - ], - "hash": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k=" - } - } - }, - "io.github.classgraph:classgraph": { - "4.8.162": { - "classgraph-4.8.162.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.162/classgraph-4.8.162.jar" - ], - "hash": "sha256-6jCy1eKeidUnBrzs96auO0RoLUoVZqXyK5RT+b4qlww=" - }, - "classgraph-4.8.162.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.162/classgraph-4.8.162.pom" - ], - "hash": "sha256-SSxpkIw7aCpjXYyp2Qm5tCyCRaNOt7nnt9xnFSHZswc=" - } - } - }, - "io.github.java-diff-utils:java-diff-utils": { - "4.12": { - "java-diff-utils-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar" - ], - "hash": "sha256-mZCiA5d49rTMlHkBQcKGiGTqzuBiDGxFlFESGpAc1bU=" - }, - "java-diff-utils-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.pom" - ], - "hash": "sha256-wm4JftyOxoBdExmBfSPU5JbMEBXMVdxSAhEtj2qRZfw=" - } - } - }, - "io.github.pdvrieze.xmlutil:core": { - "0.86.3": { - "core-0.86.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.module" - ], - "hash": "sha256-MzlXsdCR2LrPqwYCCGgi+a2S9hMCy3Ru8g4Z9nprTbk=" - }, - "core-0.86.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.pom" - ], - "hash": "sha256-ngeyUCJI+U7AYn9Wsn3wiBySBCrfzoCg35oa6sQWg4M=" - }, - "xmlutil-metadata-0.86.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.jar" - ], - "hash": "sha256-ikZHG7Y7PHhzlsu6WqL2TU4zOgOSAiRBrhIRHn5yjJE=" - } - } - }, - "io.github.pdvrieze.xmlutil:core-jvm": { - "0.86.3": { - "core-jvm-0.86.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.module" - ], - "hash": "sha256-FgIJExZWo2dDGWXYAYk7J3fuguD3ZmaD+nXE+Wck/wc=" - }, - "core-jvm-0.86.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.pom" - ], - "hash": "sha256-oBGIoPlVW1s7nZLlQz242AJ6vjleD/cIBRU+8v6qf4U=" - }, - "xmlutil-jvm-0.86.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar" - ], - "hash": "sha256-kVJ9hv6gS9YYPRQKCfENqy3qcnrxLSfZFl7jQuo9Dt4=" - } - } - }, - "io.github.pdvrieze.xmlutil:serialization-jvm": { - "0.86.3": { - "serialization-jvm-0.86.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.module" - ], - "hash": "sha256-3ppDm3mA++bMPDS8rZyEqIMVmdyHZNceD2c93Ho91Jo=" - }, - "serialization-jvm-0.86.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.pom" - ], - "hash": "sha256-OX1XqPVTaUEf7HRETH1NTLaeyYANUkSTrGHekJIl4wc=" - }, - "xmlutil-serialization-jvm-0.86.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar" - ], - "hash": "sha256-nOJz3LhguSpb8uw2rR4qEbQa7YnGyYTKc+h+/17aG9A=" - } - } - }, - "io.kotest:kotest-assertions-api": { - "5.8.0": { - "kotest-assertions-api-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.8.0/kotest-assertions-api-5.8.0.module" - ], - "hash": "sha256-op9oyadjm/8YjxR8vvhnHrjwtY/luuGAtkVdt335cos=" - }, - "kotest-assertions-api-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.8.0/kotest-assertions-api-5.8.0.pom" - ], - "hash": "sha256-W/4I+NxUjL6HymCVFTeJlwWT4r/8saI8QokZueJw8uk=" - }, - "kotest-assertions-api-metadata-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.8.0/kotest-assertions-api-5.8.0.jar" - ], - "hash": "sha256-Xwt0yykue3MauS9SV+38yg2QJUGZiHHgk1S//uk5G/E=" - } - } - }, - "io.kotest:kotest-assertions-api-jvm": { - "5.8.0": { - "kotest-assertions-api-jvm-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.8.0/kotest-assertions-api-jvm-5.8.0.jar" - ], - "hash": "sha256-JOVCn43plAVhR/TkGY8DvBs3MDsuTiutgaXDiPX+jSE=" - }, - "kotest-assertions-api-jvm-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.8.0/kotest-assertions-api-jvm-5.8.0.module" - ], - "hash": "sha256-DrzGB+6bMiarXBYvwbwl3JKNe+S5iJB3wI51Mme7jBo=" - }, - "kotest-assertions-api-jvm-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.8.0/kotest-assertions-api-jvm-5.8.0.pom" - ], - "hash": "sha256-vR5t7uMQRjCJ+PGodJu5SiUfs9tLqtiAL0RlBqgjFBU=" - } - } - }, - "io.kotest:kotest-assertions-core": { - "5.8.0": { - "kotest-assertions-core-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.8.0/kotest-assertions-core-5.8.0.module" - ], - "hash": "sha256-3PQWe35nsJADn6AJtSYKRxDl1NVnhZXyz163PMNfjKs=" - }, - "kotest-assertions-core-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.8.0/kotest-assertions-core-5.8.0.pom" - ], - "hash": "sha256-bGOKC/WWEJpFN2gugdokFnbyEftPunlX/JqPuGaOfxc=" - }, - "kotest-assertions-core-metadata-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.8.0/kotest-assertions-core-5.8.0.jar" - ], - "hash": "sha256-ni4GBzpTKdKZm0xgBJZ+Op78OcwgMQi5XHwrUs66On0=" - } - } - }, - "io.kotest:kotest-assertions-core-jvm": { - "5.8.0": { - "kotest-assertions-core-jvm-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.8.0/kotest-assertions-core-jvm-5.8.0.jar" - ], - "hash": "sha256-wslFR/sVIaSCDQ4uF+qkuQPDaO3qeP4uH/rRQ6us9hw=" - }, - "kotest-assertions-core-jvm-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.8.0/kotest-assertions-core-jvm-5.8.0.module" - ], - "hash": "sha256-5fP2fh/Aj+YAimMd938ygU7MC2uf3MtzZWr0rBFkyR8=" - }, - "kotest-assertions-core-jvm-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.8.0/kotest-assertions-core-jvm-5.8.0.pom" - ], - "hash": "sha256-ei5OsYLX8cp9UwBUWHXup3HsnZMW6rkmne6kg/Pskh8=" - } - } - }, - "io.kotest:kotest-assertions-shared": { - "5.8.0": { - "kotest-assertions-shared-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.8.0/kotest-assertions-shared-5.8.0.module" - ], - "hash": "sha256-ByvTJ2aEyatnMmjjXlRiVSMfWT5U5ho1DZfAyZYXcfI=" - }, - "kotest-assertions-shared-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.8.0/kotest-assertions-shared-5.8.0.pom" - ], - "hash": "sha256-wuvLdl0jnvtdCdSRasmjSdeNJ6aw9oaCwMUsm0fBIUo=" - }, - "kotest-assertions-shared-metadata-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.8.0/kotest-assertions-shared-5.8.0.jar" - ], - "hash": "sha256-QyX8AR427KpkyNzRVo6XhBqCfBqFvyjcMPdgb+LqiXQ=" - } - } - }, - "io.kotest:kotest-assertions-shared-jvm": { - "5.8.0": { - "kotest-assertions-shared-jvm-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.8.0/kotest-assertions-shared-jvm-5.8.0.jar" - ], - "hash": "sha256-+Vn/1y2Kc5xU8uCQF/gAPSX0Ro3oU6UsIP+ykw1TVME=" - }, - "kotest-assertions-shared-jvm-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.8.0/kotest-assertions-shared-jvm-5.8.0.module" - ], - "hash": "sha256-dK4YER9DUkwXTsrWxKz95KMERoXf/ryJh4MnXZEftm0=" - }, - "kotest-assertions-shared-jvm-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.8.0/kotest-assertions-shared-jvm-5.8.0.pom" - ], - "hash": "sha256-/DfYXG6KToMR8TuPXaTnXHuhb06Y5/fnY2ZZOkR3wEc=" - } - } - }, - "io.kotest:kotest-common": { - "5.8.0": { - "kotest-common-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.8.0/kotest-common-5.8.0.module" - ], - "hash": "sha256-BwwJRxNLNejNY9FmpGKe0KELkrNx5XYS7A4/k/TGQ3Q=" - }, - "kotest-common-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.8.0/kotest-common-5.8.0.pom" - ], - "hash": "sha256-0ZUWcDSMMt/rYzdJUGRB3Go8rpKqLsAaNzOmnMyXcfY=" - }, - "kotest-common-metadata-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.8.0/kotest-common-5.8.0.jar" - ], - "hash": "sha256-a9QgLtuJ5Z61Q1J0W9Dh+8lcVNXTMFuY+SEyQE8HrkI=" - } - } - }, - "io.kotest:kotest-common-jvm": { - "5.8.0": { - "kotest-common-jvm-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.8.0/kotest-common-jvm-5.8.0.jar" - ], - "hash": "sha256-9+cTu6Il+6WHl0FmWjthk/pSi8J75UdSp3Y4CKTylRM=" - }, - "kotest-common-jvm-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.8.0/kotest-common-jvm-5.8.0.module" - ], - "hash": "sha256-F6m2cHe8dlDvr2nfTC2Z5pdmlY7JYWC5EizmxhC6x/w=" - }, - "kotest-common-jvm-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.8.0/kotest-common-jvm-5.8.0.pom" - ], - "hash": "sha256-jCn9r/OEviBX3ggq4Bud4Qt4pRwn07qa/u0ws9U1B/8=" - } - } - }, - "io.kotest:kotest-extensions": { - "5.8.0": { - "kotest-extensions-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.8.0/kotest-extensions-5.8.0.module" - ], - "hash": "sha256-wRJ9NhChPntlMthHZbshHPPyHJAa7H7PoYG6wg7cF6g=" - }, - "kotest-extensions-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.8.0/kotest-extensions-5.8.0.pom" - ], - "hash": "sha256-ptATHw06VngbFwStxpeP17mJ1FtPCoUtbY2HqmFoHOs=" - } - } - }, - "io.kotest:kotest-extensions-jvm": { - "5.8.0": { - "kotest-extensions-jvm-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.8.0/kotest-extensions-jvm-5.8.0.jar" - ], - "hash": "sha256-t7ZJsBqwtQx/hVchsc2Qzrk7fseQyeDUVOrNifGCLDE=" - }, - "kotest-extensions-jvm-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.8.0/kotest-extensions-jvm-5.8.0.module" - ], - "hash": "sha256-wpV8QNsDBwTDwcRQRjRQ/UIfUV2eTf1wFYrglTx7s5I=" - }, - "kotest-extensions-jvm-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.8.0/kotest-extensions-jvm-5.8.0.pom" - ], - "hash": "sha256-Re6YilN1wfy+2zW/KNZcr9vWZlrU7QZiFJn1gaCqeRg=" - } - } - }, - "io.kotest:kotest-framework-api": { - "5.8.0": { - "kotest-framework-api-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.8.0/kotest-framework-api-5.8.0.module" - ], - "hash": "sha256-TU+42fMZlcETUTiSP3OQdtKMbIunjobst56SVTNlm8s=" - }, - "kotest-framework-api-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.8.0/kotest-framework-api-5.8.0.pom" - ], - "hash": "sha256-+KD+31um/dqQJFYdz5/c0bc7KyRU8SgqREdxhtGwJds=" - } - } - }, - "io.kotest:kotest-framework-api-jvm": { - "5.8.0": { - "kotest-framework-api-jvm-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.8.0/kotest-framework-api-jvm-5.8.0.jar" - ], - "hash": "sha256-qzKySHZ6j83ulqOn3rwdS8oVtBB9A6jw7LQ/ChKmYHg=" - }, - "kotest-framework-api-jvm-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.8.0/kotest-framework-api-jvm-5.8.0.module" - ], - "hash": "sha256-+8ACQea/pPB2Y+1k+ZWRcEas3d0oc8pdpZtMuMGmcx8=" - }, - "kotest-framework-api-jvm-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.8.0/kotest-framework-api-jvm-5.8.0.pom" - ], - "hash": "sha256-J1kzQZs8fz9Dd/I4dO2/K2WZKV5+eSRozE2LZkKRnwc=" - } - } - }, - "io.kotest:kotest-framework-concurrency": { - "5.8.0": { - "kotest-framework-concurrency-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.8.0/kotest-framework-concurrency-5.8.0.module" - ], - "hash": "sha256-Apm7rJ+dstNEfQ3B0jD6eduHpEQdgVju876i5DyGU4o=" - }, - "kotest-framework-concurrency-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.8.0/kotest-framework-concurrency-5.8.0.pom" - ], - "hash": "sha256-lVQJ/wP4A216X/ZoVWJ6SDJdZP1ad/zxvjKC9nK4Y9w=" - } - } - }, - "io.kotest:kotest-framework-concurrency-jvm": { - "5.8.0": { - "kotest-framework-concurrency-jvm-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.8.0/kotest-framework-concurrency-jvm-5.8.0.jar" - ], - "hash": "sha256-+jViubehfRCIbZVZFZgFBmg+bUJT/aLZphDHB7ahxTQ=" - }, - "kotest-framework-concurrency-jvm-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.8.0/kotest-framework-concurrency-jvm-5.8.0.module" - ], - "hash": "sha256-EEdRl3IU7bRbbQ5QX1cx8PLESBZE2tSdZAk17mjT6sA=" - }, - "kotest-framework-concurrency-jvm-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.8.0/kotest-framework-concurrency-jvm-5.8.0.pom" - ], - "hash": "sha256-7v7jZcABVNdstQ1A/st6vmJ0VT9/W6oXUuwLa4N7xfc=" - } - } - }, - "io.kotest:kotest-framework-discovery": { - "5.8.0": { - "kotest-framework-discovery-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.8.0/kotest-framework-discovery-5.8.0.module" - ], - "hash": "sha256-VoSDmnX88MjoK7N71Bp/RBct6MW00Ne6UXvrKm+QLOg=" - }, - "kotest-framework-discovery-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.8.0/kotest-framework-discovery-5.8.0.pom" - ], - "hash": "sha256-tMavvBR1+21pVxy6TT5wppDaUpwR7sNtLtd/5x/cuxs=" - } - } - }, - "io.kotest:kotest-framework-discovery-jvm": { - "5.8.0": { - "kotest-framework-discovery-jvm-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.8.0/kotest-framework-discovery-jvm-5.8.0.jar" - ], - "hash": "sha256-lgXMffCmeKx2AWgVHR4MHK5KYLXH4aufDIP90k0Y1Qg=" - }, - "kotest-framework-discovery-jvm-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.8.0/kotest-framework-discovery-jvm-5.8.0.module" - ], - "hash": "sha256-zsbAAen4kumwoVk7VTKweeEZjP7rwX4D7Bh60M4eR7c=" - }, - "kotest-framework-discovery-jvm-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.8.0/kotest-framework-discovery-jvm-5.8.0.pom" - ], - "hash": "sha256-OwQzrfH2hV8edikiq8i9Tw5S+uXEYsi/tI5+fEEe6iQ=" - } - } - }, - "io.kotest:kotest-framework-engine": { - "5.8.0": { - "kotest-framework-engine-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.8.0/kotest-framework-engine-5.8.0.module" - ], - "hash": "sha256-SwIApEo9C8FVvORZmt8/TMeGt8HcqvNN1FkgZ1u95K4=" - }, - "kotest-framework-engine-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.8.0/kotest-framework-engine-5.8.0.pom" - ], - "hash": "sha256-aVRjdWId02iWcTeQVwUA1A3XGWLYjmm3Y9fri84MIf8=" - } - } - }, - "io.kotest:kotest-framework-engine-jvm": { - "5.8.0": { - "kotest-framework-engine-jvm-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.8.0/kotest-framework-engine-jvm-5.8.0.jar" - ], - "hash": "sha256-tO9fOo7j0vcrmnCDW8eLvWM2K1e9Sccpz9yZuILIIp8=" - }, - "kotest-framework-engine-jvm-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.8.0/kotest-framework-engine-jvm-5.8.0.module" - ], - "hash": "sha256-pGoQsAqZT1z+77nV0QNDCXSZ0FsScHbVZjC5LD3R12w=" - }, - "kotest-framework-engine-jvm-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.8.0/kotest-framework-engine-jvm-5.8.0.pom" - ], - "hash": "sha256-jBBwZ6e2xJH/r9wcFw9ny7vwD5kgqfzOB8hMunEc/u8=" - } - } - }, - "io.kotest:kotest-runner-junit5": { - "5.8.0": { - "kotest-runner-junit5-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.8.0/kotest-runner-junit5-5.8.0.module" - ], - "hash": "sha256-y4wLecykG/GoIxOlnv5+EOwDY6xnlXOBdGwPuHl3oTk=" - }, - "kotest-runner-junit5-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.8.0/kotest-runner-junit5-5.8.0.pom" - ], - "hash": "sha256-rlCoYpxGJZocWHMicr7irCRXCMuZYucqI5IhisVYeXQ=" - }, - "kotest-runner-junit5-metadata-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.8.0/kotest-runner-junit5-5.8.0.jar" - ], - "hash": "sha256-GYlbE71A2UxWtFP6A4ZSA6gHc5hxjhGLTC3sVEV//14=" - } - } - }, - "io.kotest:kotest-runner-junit5-jvm": { - "5.8.0": { - "kotest-runner-junit5-jvm-5.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.8.0/kotest-runner-junit5-jvm-5.8.0.jar" - ], - "hash": "sha256-sSz+ck1ROQpTy6yOogFGeAmE79vceaa9Cl1zncSq5/k=" - }, - "kotest-runner-junit5-jvm-5.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.8.0/kotest-runner-junit5-jvm-5.8.0.module" - ], - "hash": "sha256-41YAWlqTPI5YBYxB+3w6MNfc88/oo+pvcseYKR52tf8=" - }, - "kotest-runner-junit5-jvm-5.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.8.0/kotest-runner-junit5-jvm-5.8.0.pom" - ], - "hash": "sha256-PT+RCcm8xoqFPKuUeYqbvjMM4qexQtc6vGiY352Rj68=" - } - } - }, - "net.bytebuddy:byte-buddy": { - "1.10.9": { - "byte-buddy-1.10.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.jar" - ], - "hash": "sha256-B7nKbi+XDLA/SyVlHfHy/OJx1JG0TgQJgniHeG9pLU0=" - }, - "byte-buddy-1.10.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.pom" - ], - "hash": "sha256-QIgdSUiocRWTRicPNpRbwpAlV3xstX9qXdDHwiIGnaw=" - } - } - }, - "net.bytebuddy:byte-buddy-agent": { - "1.10.9": { - "byte-buddy-agent-1.10.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.jar" - ], - "hash": "sha256-+9BS0tTNFvcHVHxGhiHGt/uELH7Ihm0BLsvGF43h85Q=" - }, - "byte-buddy-agent-1.10.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.pom" - ], - "hash": "sha256-GZB0lfvBwjFsjrrXbwe5bRAf6xp+PAm/4VJv0/xu7J0=" - } - } - }, - "net.java.dev.jna:jna": { - "5.9.0": { - "jna-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar" - ], - "hash": "sha256-6vzHgLRFQ008Wuf6L7ZmXeGnVg1TfSxAio6AzRTScWE=" - }, - "jna-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.pom" - ], - "hash": "sha256-a8i4RZFQtZ6VmPPa2a0kWh7yFQ0IJYEBcYTrFj5ZKCk=" - } - } - }, - "net.java.dev.jna:jna-platform": { - "5.9.0": { - "jna-platform-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.jar" - ], - "hash": "sha256-GQO8bYfzq5ICOVe5H0WpyOs1FbrQMDVs6XcgHlFBtyQ=" - }, - "jna-platform-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.pom" - ], - "hash": "sha256-C9pdmOS+kmHwnN+u5vokWYh5CDTX/K3I4v3ZPH1kGCU=" - } - } - }, - "org.apache.ant:ant": { - "1.10.13": { - "ant-1.10.13.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.jar" - ], - "hash": "sha256-vvv8eedE6Yks+n25bfO26C3BfSVxr0KqQnl2/CIpmDg=" - }, - "ant-1.10.13.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.pom" - ], - "hash": "sha256-J5NR7tkLj3QbtIyVvmHD7CRU48ipr7Q7zB0LrB3aE3o=" - } - } - }, - "org.apache.ant:ant-launcher": { - "1.10.13": { - "ant-launcher-1.10.13.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.jar" - ], - "hash": "sha256-zXaVs7+2lkq3G2oLMdrWAAWud/5QITI2Rnmqzwj3eXA=" - }, - "ant-launcher-1.10.13.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.pom" - ], - "hash": "sha256-ApkvvDgFU1bzyU0B6qJJmcsCoJuqnB/fXqx2t8MVY8o=" - } - } - }, - "org.apache.logging.log4j:log4j-api": { - "2.20.0": { - "log4j-api-2.20.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.jar" - ], - "hash": "sha256-L0PupnnqZvFMoPE/7CqGAKwST1pSMdy034OT7dy5dVA=" - }, - "log4j-api-2.20.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.pom" - ], - "hash": "sha256-zUWDKj1s0hlENcDWPKAV8ZSWjy++pPKRVTv3r7hOFjc=" - } - } - }, - "org.apache.logging.log4j:log4j-core": { - "2.20.0": { - "log4j-core-2.20.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.jar" - ], - "hash": "sha256-YTffhIza7Z9NUHb3VRPGyF2oC5U/TnrMo4CYt3B2P1U=" - }, - "log4j-core-2.20.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.pom" - ], - "hash": "sha256-3nGsEAVR9KB3rsrQd70VPnHfeqacMELXZRbMXM4Ice4=" - } - } - }, - "org.apache.maven:maven-model": { - "3.6.3": { - "maven-model-3.6.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" - ], - "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" - }, - "maven-model-3.6.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" - ], - "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" - } - } - }, - "org.apiguardian:apiguardian-api": { - "1.1.2": { - "apiguardian-api-1.1.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar" - ], - "hash": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=" - }, - "apiguardian-api-1.1.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.module" - ], - "hash": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=" - }, - "apiguardian-api-1.1.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.pom" - ], - "hash": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA=" - } - } - }, - "org.codehaus.plexus:plexus-utils": { - "3.5.1": { - "plexus-utils-3.5.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar" - ], - "hash": "sha256-huAlXUyHnGG0gz7X8TEk6LtnnfR967EnMm59t91JoHs=" - }, - "plexus-utils-3.5.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.pom" - ], - "hash": "sha256-lP9o7etIIE0SyZGJx2cWTTqfd4oTctHc4RpBRi5iNvI=" - } - } - }, - "org.gradle:gradle-tooling-api": { - "8.5": { - "gradle-tooling-api-8.5.jar": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.5/gradle-tooling-api-8.5.jar" - ], - "hash": "sha256-Oj8ZrejGJCdtb64e9iYJmyVb+GDi0fNFwVAiuNf18B0=" - }, - "gradle-tooling-api-8.5.module": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.5/gradle-tooling-api-8.5.module" - ], - "hash": "sha256-g/38Gz8vXYtdbkc9J+jUTOVqamjDv14AGVE5pkUk644=" - }, - "gradle-tooling-api-8.5.pom": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.5/gradle-tooling-api-8.5.pom" - ], - "hash": "sha256-W+ZN0cMxohnX1D+uLii9JoDUkeCoKJ73kNaQCLLTJsE=" - } - } - }, - "org.jdom:jdom2": { - "2.0.6.1": { - "jdom2-2.0.6.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.jar" - ], - "hash": "sha256-CyD0XjoP2PDRLNxTFrBndukCsTZdsAEYh2+RdcYPMCw=" - }, - "jdom2-2.0.6.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.pom" - ], - "hash": "sha256-VXleEBi4rmR7k3lnz4EKmbCFgsI3TnhzwShzTIyRS/M=" - } - } - }, - "org.jetbrains.intellij.deps:trove4j": { - "1.0.20200330": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } - } - }, - "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin": { - "1.9.21": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.9.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.9.21.pom" - ], - "hash": "sha256-wCQ0YBrQ0+FDMzNe3airmdpJvj8luRUMfcYKKLNOiG0=" - } - } - }, - "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin": { - "1.9.21": { - "org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.21/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.21.pom" - ], - "hash": "sha256-X2YbnEx5RUOAoIAaMrsk4CEUhmO8XgbqROPpGcENWtQ=" - } - } - }, - "org.jetbrains.kotlin:kotlin-android-extensions": { - "1.9.21": { - "kotlin-android-extensions-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.21/kotlin-android-extensions-1.9.21.jar" - ], - "hash": "sha256-mAuTI5ni2OX5clLdOx1VZdLZ18TFhMJn+pJE1rTdZrM=" - }, - "kotlin-android-extensions-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.21/kotlin-android-extensions-1.9.21.pom" - ], - "hash": "sha256-4Vb9esK/Oh1ruM9uYn8omYYceWa2WYlOz1rOMsH6uPU=" - } - } - }, - "org.jetbrains.kotlin:kotlin-build-common": { - "1.9.21": { - "kotlin-build-common-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.21/kotlin-build-common-1.9.21.jar" - ], - "hash": "sha256-3bFTJKHCCDYiOyqzGZTzBal/aMC5rex4AthEs8XlN+M=" - }, - "kotlin-build-common-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.21/kotlin-build-common-1.9.21.pom" - ], - "hash": "sha256-usTddaENNRq42KO/gx0yFHCxAhn4rqR7d3SuzVp9Rrc=" - } - } - }, - "org.jetbrains.kotlin:kotlin-build-tools-api": { - "1.9.21": { - "kotlin-build-tools-api-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.21/kotlin-build-tools-api-1.9.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.21/kotlin-build-tools-api-1.9.21.jar" - ], - "hash": "sha256-1iQupx+j2qCwarmTYi7lP7+gBIOxmGAoUmq2BhlDJ4k=" - }, - "kotlin-build-tools-api-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.21/kotlin-build-tools-api-1.9.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.21/kotlin-build-tools-api-1.9.21.pom" - ], - "hash": "sha256-k8DEhPZHtVSzkLcdrUXuWMNbvQ9bgy90DlCm7PFB7Fc=" - } - } - }, - "org.jetbrains.kotlin:kotlin-build-tools-impl": { - "1.9.21": { - "kotlin-build-tools-impl-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.21/kotlin-build-tools-impl-1.9.21.jar" - ], - "hash": "sha256-xQnfuD5Wp+AjYPLY4llbuMxyehKWjXOUJ9WoiK/5QiU=" - }, - "kotlin-build-tools-impl-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.21/kotlin-build-tools-impl-1.9.21.pom" - ], - "hash": "sha256-0fSzorImBj63RyPMeYi1b4OZFOw8z4+PzysU+z7Tl04=" - } - } - }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable": { - "1.9.21": { - "kotlin-compiler-embeddable-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.21/kotlin-compiler-embeddable-1.9.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.21/kotlin-compiler-embeddable-1.9.21.jar" - ], - "hash": "sha256-RpBLPT9RZWCkjg2T2ce/xjZQsi2faPejfqteXF8/eFo=" - }, - "kotlin-compiler-embeddable-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.21/kotlin-compiler-embeddable-1.9.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.21/kotlin-compiler-embeddable-1.9.21.pom" - ], - "hash": "sha256-+Q3IdvTzQph+WpujD6aArmTt1IiKYkPMXOTYS9vwscM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-compiler-runner": { - "1.9.21": { - "kotlin-compiler-runner-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.21/kotlin-compiler-runner-1.9.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.21/kotlin-compiler-runner-1.9.21.jar" - ], - "hash": "sha256-15SPoqyM9iSj+6p2jxsDu7MQ1dkMV+Bb501rh566Vh8=" - }, - "kotlin-compiler-runner-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.21/kotlin-compiler-runner-1.9.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.21/kotlin-compiler-runner-1.9.21.pom" - ], - "hash": "sha256-yWxA/82dEWVcw6RgXKQpGB5S7zMF412QHXvdS9/yzCM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-daemon-client": { - "1.9.21": { - "kotlin-daemon-client-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.21/kotlin-daemon-client-1.9.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.21/kotlin-daemon-client-1.9.21.jar" - ], - "hash": "sha256-JFdJdm1qh9F+tCbJFXwj5XLI8FI9pnpq+kICvOOrAYw=" - }, - "kotlin-daemon-client-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.21/kotlin-daemon-client-1.9.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.21/kotlin-daemon-client-1.9.21.pom" - ], - "hash": "sha256-Q2I9u3rJy8mtOBbldbM7Jb5IOmzHe9yO0dQo2uuZ5w8=" - } - } - }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable": { - "1.9.21": { - "kotlin-daemon-embeddable-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.21/kotlin-daemon-embeddable-1.9.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.21/kotlin-daemon-embeddable-1.9.21.jar" - ], - "hash": "sha256-ARUv+0GwdunFUIPFE+HvBfMDzVqVzt/8uJ4STjQN8R4=" - }, - "kotlin-daemon-embeddable-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.21/kotlin-daemon-embeddable-1.9.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.21/kotlin-daemon-embeddable-1.9.21.pom" - ], - "hash": "sha256-LYnUjseQqQc7s237HnvvV1nuoHMGT4ZWuISvRtEZnXY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin": { - "1.9.21": { - "kotlin-gradle-plugin-1.9.21-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.21/kotlin-gradle-plugin-1.9.21-gradle82.jar" - ], - "hash": "sha256-Rk6rvg8TEh+6R9Ddd9t44EzHEUGO8fo44Fn7rXQBdNU=" - }, - "kotlin-gradle-plugin-1.9.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.21/kotlin-gradle-plugin-1.9.21.module" - ], - "hash": "sha256-IRGsVcoYTydpeFyYlxBNjrSahDeSJi8UdZGyObh8s2I=" - }, - "kotlin-gradle-plugin-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.21/kotlin-gradle-plugin-1.9.21.pom" - ], - "hash": "sha256-xbqNH/3ANOBTfWFCFlYr+oKDgZuXpQe1TEfWr92/9Pc=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations": { - "1.9.21": { - "kotlin-gradle-plugin-annotations-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.21/kotlin-gradle-plugin-annotations-1.9.21.jar" - ], - "hash": "sha256-vHHk5IEnHPKtQVDZ9lE087UPqu0ftSCFIXwjLXp6DbQ=" - }, - "kotlin-gradle-plugin-annotations-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.21/kotlin-gradle-plugin-annotations-1.9.21.pom" - ], - "hash": "sha256-WIjmVsteuQ2k6P/ue6kTq070qP/LK06352bEDApIcNE=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api": { - "1.9.21": { - "kotlin-gradle-plugin-api-1.9.21-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.21/kotlin-gradle-plugin-api-1.9.21-gradle82.jar" - ], - "hash": "sha256-8fA4+yuHImPe8G1gqoP0TbfYuHusJJEJ9jvhMvDDB/8=" - }, - "kotlin-gradle-plugin-api-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.21/kotlin-gradle-plugin-api-1.9.21.jar" - ], - "hash": "sha256-8fA4+yuHImPe8G1gqoP0TbfYuHusJJEJ9jvhMvDDB/8=" - }, - "kotlin-gradle-plugin-api-1.9.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.21/kotlin-gradle-plugin-api-1.9.21.module" - ], - "hash": "sha256-3Q/w/LjdD2iqQDhkHUfx0ID82EWokNaPd62IZmg5X8g=" - }, - "kotlin-gradle-plugin-api-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.21/kotlin-gradle-plugin-api-1.9.21.pom" - ], - "hash": "sha256-EHDGnUDsQQjYdMvnwX31G5MVQ/vMFxSL8KFq9BF6j0o=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea": { - "1.9.21": { - "kotlin-gradle-plugin-idea-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.21/kotlin-gradle-plugin-idea-1.9.21.jar" - ], - "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" - }, - "kotlin-gradle-plugin-idea-1.9.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.21/kotlin-gradle-plugin-idea-1.9.21.module" - ], - "hash": "sha256-9wJ2o8nNkyDTXQEyKIguZwwmqOV77yduEgXWLSfIzEg=" - }, - "kotlin-gradle-plugin-idea-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.21/kotlin-gradle-plugin-idea-1.9.21.pom" - ], - "hash": "sha256-i9zuHeTCbdShLcq4+X2zlsp21st9B4xXpeZEkRdEKXo=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto": { - "1.9.21": { - "kotlin-gradle-plugin-idea-proto-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.21/kotlin-gradle-plugin-idea-proto-1.9.21.jar" - ], - "hash": "sha256-65eVj7I1SmwOzcKMNDyWKqQlZOa70GmY22jeWJt6MHM=" - }, - "kotlin-gradle-plugin-idea-proto-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.21/kotlin-gradle-plugin-idea-proto-1.9.21.pom" - ], - "hash": "sha256-4cQb9uDuTO6Ez7LYgFckQzIFgI3mlBhM9LgJHpoEG5o=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model": { - "1.9.21": { - "kotlin-gradle-plugin-model-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.21/kotlin-gradle-plugin-model-1.9.21.jar" - ], - "hash": "sha256-7i/6CkmrvaLh44yCVFGN//DkcYB0gWQOJ59crJMRpC8=" - }, - "kotlin-gradle-plugin-model-1.9.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.21/kotlin-gradle-plugin-model-1.9.21.module" - ], - "hash": "sha256-mM2kiy7nukL7s32FSeA8D7EgVnMAT9qfgWGcmImcbBg=" - }, - "kotlin-gradle-plugin-model-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.21/kotlin-gradle-plugin-model-1.9.21.pom" - ], - "hash": "sha256-Dgzua65viYZz3OIlWweO21YEBrk8w4HhVF1KFQ5pyFM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugins-bom": { - "1.9.21": { - "kotlin-gradle-plugins-bom-1.9.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.21/kotlin-gradle-plugins-bom-1.9.21.module" - ], - "hash": "sha256-EHBCRob+7+LpTs1eicV775AAcGnUXR9g78Dw2O4pOtA=" - }, - "kotlin-gradle-plugins-bom-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.21/kotlin-gradle-plugins-bom-1.9.21.pom" - ], - "hash": "sha256-IGoqxYRN9eR9HIhz6DAbs7Ro8c2g4eZP+jqo6cCrTQo=" - } - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api": { - "1.9.21": { - "kotlin-klib-commonizer-api-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.21/kotlin-klib-commonizer-api-1.9.21.jar" - ], - "hash": "sha256-7rGVGEW/Tu9Jr7UPv4Ss67+rTW0ksP2nAQzk/9xaKVc=" - }, - "kotlin-klib-commonizer-api-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.21/kotlin-klib-commonizer-api-1.9.21.pom" - ], - "hash": "sha256-eBHA/x1mByiNMPvNmUWVDLWsnVZAe1k5UKnXMCm041g=" - } - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { - "1.9.21": { - "kotlin-klib-commonizer-embeddable-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.21/kotlin-klib-commonizer-embeddable-1.9.21.jar" - ], - "hash": "sha256-SLSET083NrXr8Htn8G51fxlvFvMC9Ey4NUfYy39JI6k=" - }, - "kotlin-klib-commonizer-embeddable-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.21/kotlin-klib-commonizer-embeddable-1.9.21.pom" - ], - "hash": "sha256-BlDErTWOgCawbhPNOGGNF8gHgyS+OXqRTKqVdkp8qcU=" - } - } - }, - "org.jetbrains.kotlin:kotlin-native-utils": { - "1.9.21": { - "kotlin-native-utils-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.21/kotlin-native-utils-1.9.21.jar" - ], - "hash": "sha256-YBFPSr2hsnAvaSVu3ITQzx0CaOb07CzHpKAvYGsLgHE=" - }, - "kotlin-native-utils-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.21/kotlin-native-utils-1.9.21.pom" - ], - "hash": "sha256-y1E5uiwJSuU8nsR8yR8iKv0ERoDvwcC+S0ontWU6fZY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-project-model": { - "1.9.21": { - "kotlin-project-model-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.21/kotlin-project-model-1.9.21.jar" - ], - "hash": "sha256-NFOCtgvaQ7whRE+Cj8aD3h86qceKBNV/JhbWJ8XQeCE=" - }, - "kotlin-project-model-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.21/kotlin-project-model-1.9.21.pom" - ], - "hash": "sha256-3QhzM2jeyhQDAFAdjBtFqQScEOESOIJnz+RPrDGqSek=" - } - } - }, - "org.jetbrains.kotlin:kotlin-reflect": { - "1.9.21": { - "kotlin-reflect-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.21/kotlin-reflect-1.9.21.jar" - ], - "hash": "sha256-oTPgSfCk4kllFYJCjhZt5N+slUat9Da2FyEZJV7eUQ8=" - }, - "kotlin-reflect-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.21/kotlin-reflect-1.9.21.pom" - ], - "hash": "sha256-wu93WbdrxNn29SnS8/vBwxpFl8wVhuc6fXqxbRvbtKk=" - } - }, - "1.6.10": { - "kotlin-reflect-1.6.10.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" - ], - "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" - }, - "kotlin-reflect-1.6.10.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" - ], - "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" - } - } - }, - "org.jetbrains.kotlin:kotlin-script-runtime": { - "1.9.21": { - "kotlin-script-runtime-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.21/kotlin-script-runtime-1.9.21.jar" - ], - "hash": "sha256-Gxx01Hb/pBmFsLldvnjqUFIGGIn4EG8a5ste4X8yPxk=" - }, - "kotlin-script-runtime-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.21/kotlin-script-runtime-1.9.21.pom" - ], - "hash": "sha256-NA85f5c+0AryWBJV3b865C28zEkvaD8k7cLxKnNQWTM=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-common": { - "1.9.21": { - "kotlin-scripting-common-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.21/kotlin-scripting-common-1.9.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.21/kotlin-scripting-common-1.9.21.jar" - ], - "hash": "sha256-gDldjWWHmRi7YAHHqXbjwKVKMSqEyaHXNXujnypwUCE=" - }, - "kotlin-scripting-common-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.21/kotlin-scripting-common-1.9.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.21/kotlin-scripting-common-1.9.21.pom" - ], - "hash": "sha256-s/MyBbIae59WBKWGbulYI2XSC0IhCqqHQEw/ChLxvjw=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { - "1.9.21": { - "kotlin-scripting-compiler-embeddable-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.21/kotlin-scripting-compiler-embeddable-1.9.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.21/kotlin-scripting-compiler-embeddable-1.9.21.jar" - ], - "hash": "sha256-CJmtaTYqavXX4woaxmYmzIn1d1twsHU3bEBBd0HEQII=" - }, - "kotlin-scripting-compiler-embeddable-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.21/kotlin-scripting-compiler-embeddable-1.9.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.21/kotlin-scripting-compiler-embeddable-1.9.21.pom" - ], - "hash": "sha256-bjDfDrR1x9tRL+zAwiQOKWIOkHrlEmDx9Jw3x3401PY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { - "1.9.21": { - "kotlin-scripting-compiler-impl-embeddable-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.21/kotlin-scripting-compiler-impl-embeddable-1.9.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.21/kotlin-scripting-compiler-impl-embeddable-1.9.21.jar" - ], - "hash": "sha256-i2XQNYWjCcUjpsBfL5nQtLwm/m8Pjtx34704kivwlUs=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.21/kotlin-scripting-compiler-impl-embeddable-1.9.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.21/kotlin-scripting-compiler-impl-embeddable-1.9.21.pom" - ], - "hash": "sha256-0lJ2Bg5AJ0YL/rgx3/aSD+W5OirfGyxhPGcSW0o1Ql4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm": { - "1.9.21": { - "kotlin-scripting-jvm-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.21/kotlin-scripting-jvm-1.9.21.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.21/kotlin-scripting-jvm-1.9.21.jar" - ], - "hash": "sha256-CRjinugVRB1ZQ7mo5RpI/H/wjxerqlJEOrccDI6rDac=" - }, - "kotlin-scripting-jvm-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.21/kotlin-scripting-jvm-1.9.21.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.21/kotlin-scripting-jvm-1.9.21.pom" - ], - "hash": "sha256-BougkNsQwD6f8ZeEWthqqgfrBcrgWoDSfiCfdI7iSus=" - } - } - }, - "org.jetbrains.kotlin:kotlin-serialization": { - "1.9.21": { - "kotlin-serialization-1.9.21-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.21/kotlin-serialization-1.9.21-gradle82.jar" - ], - "hash": "sha256-6KCkwaNRR6IxkeNLgvJ/3sMi18A4+c+kKRI7r5sNDto=" - }, - "kotlin-serialization-1.9.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.21/kotlin-serialization-1.9.21.module" - ], - "hash": "sha256-Wmilrdv5YrnGVmZkI/l4CV5Sle59Z945WFXa0r5n39w=" - }, - "kotlin-serialization-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.21/kotlin-serialization-1.9.21.pom" - ], - "hash": "sha256-OZ8CA5hkxdQfrYYicN7R+xLQUcvP8aR5i5scsHpda0U=" - } - } - }, - "org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable": { - "1.9.21": { - "kotlin-serialization-compiler-plugin-embeddable-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.21/kotlin-serialization-compiler-plugin-embeddable-1.9.21.jar" - ], - "hash": "sha256-umkg/m2FBJ08WGSR2xXfBCR5nW2cDOmH/hGIJHacNCs=" - }, - "kotlin-serialization-compiler-plugin-embeddable-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.21/kotlin-serialization-compiler-plugin-embeddable-1.9.21.pom" - ], - "hash": "sha256-6J5ayDc4vF+V53pDaNfnweRrDb4hf0h3lcOvuQ1F3Oc=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "1.9.21": { - "kotlin-stdlib-1.9.21-all.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21-all.jar" - ], - "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" - }, - "kotlin-stdlib-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.jar" - ], - "hash": "sha256-O0eTE6tsrqTl4l097oyoDDAsibpz4a9Nr6oQD275KWo=" - }, - "kotlin-stdlib-1.9.21.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.module" - ], - "hash": "sha256-0wGffw1xkkzkcpjJzEavAkX3UhlxmzXFkV+8x+emk5U=" - }, - "kotlin-stdlib-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.pom" - ], - "hash": "sha256-yAfZL3xqobZcBs+HIyNjUE5pD8o/PB4nIGYwoTIv1+A=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "1.9.21": { - "kotlin-stdlib-common-1.9.21.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.21/kotlin-stdlib-common-1.9.21.module" - ], - "hash": "sha256-aNyOhKoF9SeMFlBSR9cTRtNRK57a3UH2E9ZXyUxZmTs=" - }, - "kotlin-stdlib-common-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.21/kotlin-stdlib-common-1.9.21.pom" - ], - "hash": "sha256-d4C4Z7/lc/y7D9H5Jx3aVAEhfG1or5OTV0zYYglX+K4=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { - "1.9.21": { - "kotlin-stdlib-jdk7-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.jar" - ], - "hash": "sha256-v+IfQkbIvKNQsYQEBv+803awXto36ypksBHeGMLKeBg=" - }, - "kotlin-stdlib-jdk7-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.pom" - ], - "hash": "sha256-AVFiDhh0XvJ2ECNw/GdHBPcN821kgsxBmh5S263Cg2I=" - } - }, - "1.8.20": { - "kotlin-stdlib-jdk7-1.8.20.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.20/kotlin-stdlib-jdk7-1.8.20.jar" - ], - "hash": "sha256-rx7EDDuVGv3MDCoBc8e4F2PFKBwtW6+/CoVEokxdzAw=" - }, - "kotlin-stdlib-jdk7-1.8.20.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.20/kotlin-stdlib-jdk7-1.8.20.pom" - ], - "hash": "sha256-NiLRBleM3cwKnsIPjOgV9/Sf9UL2QCKNIUH8r4BhawY=" - } - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { - "1.9.21": { - "kotlin-stdlib-jdk8-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.jar" - ], - "hash": "sha256-BwLWS6qpDlxW5GdzeCTJvjreHlFWJHPBQ60DWByVUSc=" - }, - "kotlin-stdlib-jdk8-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.pom" - ], - "hash": "sha256-J79Q6ETwZc0emFT8m8K9pRIrh4ZOoDBL1pW7En0AMvQ=" - } - }, - "1.8.20": { - "kotlin-stdlib-jdk8-1.8.20.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.20/kotlin-stdlib-jdk8-1.8.20.jar" - ], - "hash": "sha256-45i2eXdiJxi/GP+ZtznH2doGDzP7RYouJSAyIcFq8BA=" - }, - "kotlin-stdlib-jdk8-1.8.20.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.20/kotlin-stdlib-jdk8-1.8.20.pom" - ], - "hash": "sha256-OkYiFKM26ZVod2lTGx43sMgdjhDJlJzV6nrh14A6AjI=" - } - } - }, - "org.jetbrains.kotlin:kotlin-tooling-core": { - "1.9.21": { - "kotlin-tooling-core-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.21/kotlin-tooling-core-1.9.21.jar" - ], - "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" - }, - "kotlin-tooling-core-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.21/kotlin-tooling-core-1.9.21.pom" - ], - "hash": "sha256-hKHzMgdZYwgLteu9lKs9gQVZu99nDRLS3XnjSaGEI4M=" - } - } - }, - "org.jetbrains.kotlin:kotlin-util-io": { - "1.9.21": { - "kotlin-util-io-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.21/kotlin-util-io-1.9.21.jar" - ], - "hash": "sha256-P8EzMyn3iN4N7hwaKb04c9IlgYDjHdpjWiBGAjC34Q4=" - }, - "kotlin-util-io-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.21/kotlin-util-io-1.9.21.pom" - ], - "hash": "sha256-rK9/vvUF5Ey8nmeZO8KqrZ93ymxOkEnZaer72OwjUnc=" - } - } - }, - "org.jetbrains.kotlin:kotlin-util-klib": { - "1.9.21": { - "kotlin-util-klib-1.9.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.21/kotlin-util-klib-1.9.21.jar" - ], - "hash": "sha256-7PQPbGslXcZeg2GD9YrXqhXMBdcxSz5Zov5Y1jF7BIM=" - }, - "kotlin-util-klib-1.9.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.21/kotlin-util-klib-1.9.21.pom" - ], - "hash": "sha256-3KeXVmp/RB/79nQgblWaaVboImcnzdBQfnGBFgW3Nyk=" - } - } - }, - "org.jetbrains.kotlinx:atomicfu": { - "0.20.2": { - "atomicfu-0.20.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.20.2/atomicfu-0.20.2.module" - ], - "hash": "sha256-LJleDoPFg+ElcG+6P+hRcAINF6iPidYpSlPNi9fEw4Q=" - }, - "atomicfu-0.20.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.20.2/atomicfu-0.20.2.pom" - ], - "hash": "sha256-fZSYii/6cay7jKEEhQ/sG+Je8YCeOlEPAOvUo8C1vPc=" - }, - "atomicfu-metadata-0.20.2-all.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.20.2/atomicfu-0.20.2-all.jar" - ], - "hash": "sha256-KpHxC4JtP+vEfCtmTiaGFXV8MREUI5eH9dw3SB/exEE=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-bom": { - "1.7.0": { - "kotlinx-coroutines-bom-1.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.7.0/kotlinx-coroutines-bom-1.7.0.pom" - ], - "hash": "sha256-WY3X2oxgqkQgy+8+s6xwUKuji6Ynq5xdTu+ksMgQr8w=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core": { - "1.7.0": { - "kotlinx-coroutines-core-1.7.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.7.0/kotlinx-coroutines-core-1.7.0.module" - ], - "hash": "sha256-n21XLOrFbkV4s4h/3hLAHOKYibXNpSPsNIqSXc2+qZI=" - }, - "kotlinx-coroutines-core-1.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.7.0/kotlinx-coroutines-core-1.7.0.pom" - ], - "hash": "sha256-E1iv5pE8h9Un+jQ+Ad3kIDiZ4gE13jj33zwtDeAJ7OI=" - }, - "kotlinx-coroutines-core-metadata-1.7.0-all.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.7.0/kotlinx-coroutines-core-1.7.0-all.jar" - ], - "hash": "sha256-SzP+4RJApy09ahrYdoe4nFqg36fCf0hq/a+CLlFebgI=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { - "1.7.0": { - "kotlinx-coroutines-core-jvm-1.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.7.0/kotlinx-coroutines-core-jvm-1.7.0.jar" - ], - "hash": "sha256-mjLFuoq9+mNhd43BLttW/XqTlyDuXnP1sYs7SrIRf2g=" - }, - "kotlinx-coroutines-core-jvm-1.7.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.7.0/kotlinx-coroutines-core-jvm-1.7.0.module" - ], - "hash": "sha256-NFJm0ScvnG9xgF4ubUVe5czFaNeDJ1orJGRDmkYCc8Y=" - }, - "kotlinx-coroutines-core-jvm-1.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.7.0/kotlinx-coroutines-core-jvm-1.7.0.pom" - ], - "hash": "sha256-oqv7p/IwThNAmiXGNPLrXvc9B1L9IhXpAEVrm9ld6so=" - } - }, - "1.5.0": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], - "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-debug": { - "1.7.0": { - "kotlinx-coroutines-debug-1.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.7.0/kotlinx-coroutines-debug-1.7.0.jar" - ], - "hash": "sha256-WM/H+2DJJtIIePpyVyjF6AM6HWVOXH7qRT8sT0L6jJ4=" - }, - "kotlinx-coroutines-debug-1.7.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.7.0/kotlinx-coroutines-debug-1.7.0.module" - ], - "hash": "sha256-1hdAUkSV1JJCpOl8rtJPbCR2u9nbmT7kviY3uwJBzNY=" - }, - "kotlinx-coroutines-debug-1.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.7.0/kotlinx-coroutines-debug-1.7.0.pom" - ], - "hash": "sha256-j9+CQuYPKx2144mjjZWFuseH6i7+T7sZ+k0BnhGz+Ig=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8": { - "1.7.0": { - "kotlinx-coroutines-jdk8-1.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.0/kotlinx-coroutines-jdk8-1.7.0.jar" - ], - "hash": "sha256-25ZqpOtiwHdgb2p18zGYqq2aVFPPNnZbUBA1V+pmc3Y=" - }, - "kotlinx-coroutines-jdk8-1.7.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.0/kotlinx-coroutines-jdk8-1.7.0.module" - ], - "hash": "sha256-85ejgGeodi5Gr9CmOfnfb1g/K4VdKV8zEuf3HdXB5Hg=" - }, - "kotlinx-coroutines-jdk8-1.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.0/kotlinx-coroutines-jdk8-1.7.0.pom" - ], - "hash": "sha256-lMLrex8gLrkdM0ZpG3AZXgoKbMEmV0Zhgavi8U/Tp2E=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test": { - "1.7.0": { - "kotlinx-coroutines-test-1.7.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.7.0/kotlinx-coroutines-test-1.7.0.module" - ], - "hash": "sha256-y4+jJ/bglXNPwfip89e7GTV1CbUhqA1evGJARGphMR0=" - }, - "kotlinx-coroutines-test-1.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.7.0/kotlinx-coroutines-test-1.7.0.pom" - ], - "hash": "sha256-SEbzdW1rgJqopbdHQFyNXM1d6BOvSaHHc3brlGBp7MY=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm": { - "1.7.0": { - "kotlinx-coroutines-test-jvm-1.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.7.0/kotlinx-coroutines-test-jvm-1.7.0.jar" - ], - "hash": "sha256-D9ufoLwCroMc0qQeS48HADuHtE2p9Kevs/Y9sGFsFn8=" - }, - "kotlinx-coroutines-test-jvm-1.7.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.7.0/kotlinx-coroutines-test-jvm-1.7.0.module" - ], - "hash": "sha256-vUvlmdpi7lcbe52ZODCaJ85kRwIvt66dyu57DyPV8Ls=" - }, - "kotlinx-coroutines-test-jvm-1.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.7.0/kotlinx-coroutines-test-jvm-1.7.0.pom" - ], - "hash": "sha256-ueAq33wWqg6C2qPNoRP+ynruT5GAkDgBWQ1qr4y3S7I=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-bom": { - "1.6.2": { - "kotlinx-serialization-bom-1.6.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.2/kotlinx-serialization-bom-1.6.2.pom" - ], - "hash": "sha256-ew4dde6GIUmc+VQwyhL9qjL0p/kg1cMBv+lfoYfyczc=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-core": { - "1.6.2": { - "kotlinx-serialization-core-1.6.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.module" - ], - "hash": "sha256-arz0gTrJTfA3AS4xZzaKNEUHD9+OqyHQjYhtTtnC+2c=" - }, - "kotlinx-serialization-core-1.6.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.pom" - ], - "hash": "sha256-BibddZLIUwKToOPoHgiBltNRh3o422hHaTY3S6ZJ+S8=" - }, - "kotlinx-serialization-core-metadata-1.6.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.jar" - ], - "hash": "sha256-LlMCArumM8WrMeRvn/nNrZufTNTAchYLIDX+y/+AMxc=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-core-jvm": { - "1.6.2": { - "kotlinx-serialization-core-jvm-1.6.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.2/kotlinx-serialization-core-jvm-1.6.2.jar" - ], - "hash": "sha256-jm/AThou/SrLvFUDodydmIFm+Z5PH1Hva5HDpSB3vbE=" - }, - "kotlinx-serialization-core-jvm-1.6.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.2/kotlinx-serialization-core-jvm-1.6.2.module" - ], - "hash": "sha256-oRSjT2SjAnNkMqWOCOY8qehpWy6CtycO+ltm4Bpm4DI=" - }, - "kotlinx-serialization-core-jvm-1.6.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.2/kotlinx-serialization-core-jvm-1.6.2.pom" - ], - "hash": "sha256-aPgoyUU6M3xuhNv+f9BDZxrGWpRBfRShKMfRIG+q+v0=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-json": { - "1.6.2": { - "kotlinx-serialization-json-1.6.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.2/kotlinx-serialization-json-1.6.2.module" - ], - "hash": "sha256-3bDwQzG0A0QOP8lYxGG/HuS46Ox5heeIXjG5/aR4AWw=" - }, - "kotlinx-serialization-json-1.6.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.2/kotlinx-serialization-json-1.6.2.pom" - ], - "hash": "sha256-I+ukBlWEzmzf1oQzgWOSADm1DcTaH/HNRYFLanatyik=" - }, - "kotlinx-serialization-json-metadata-1.6.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.2/kotlinx-serialization-json-1.6.2.jar" - ], - "hash": "sha256-5aPp/LlGmtxOJULWiHSMZg/ucPlG+lZP3eJTPcRk4Gs=" - } - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-json-jvm": { - "1.6.2": { - "kotlinx-serialization-json-jvm-1.6.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.2/kotlinx-serialization-json-jvm-1.6.2.jar" - ], - "hash": "sha256-jScYuwQugwsSt/sQrybQ+6Q94fH5/+CmsTHU0lGqwsw=" - }, - "kotlinx-serialization-json-jvm-1.6.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.2/kotlinx-serialization-json-jvm-1.6.2.module" - ], - "hash": "sha256-EPn2v5KQC0WH3hV5eknGnx/dX311ctOANX/UbwzcSPo=" - }, - "kotlinx-serialization-json-jvm-1.6.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.2/kotlinx-serialization-json-jvm-1.6.2.pom" - ], - "hash": "sha256-E2cHdYMiLPDCDYiqFMAFBjYA0WDnXdvJGa4+g6AsPmo=" - } - } - }, - "org.jetbrains:annotations": { - "23.0.0": { - "annotations-23.0.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.jar" - ], - "hash": "sha256-ew8ZckCCy/y8ZuWr6iubySzwih6hHhkZM+1DgB6zzQU=" - }, - "annotations-23.0.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom" - ], - "hash": "sha256-yUkPZVEyMo3yz7z990P1P8ORbWwdEENxdabKbjpndxw=" - } - }, - "13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } - } - }, - "org.junit.jupiter:junit-jupiter-api": { - "5.8.2": { - "junit-jupiter-api-5.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar" - ], - "hash": "sha256-GAjuh+D3GM1uJfO3WvwXlWrIo+3EjH6bq58Z+aeeOAE=" - }, - "junit-jupiter-api-5.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.module" - ], - "hash": "sha256-fpr03/9iZ6zd0VfZ4Rug1dyRszL6dLxMZZOeRReht3A=" - }, - "junit-jupiter-api-5.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.pom" - ], - "hash": "sha256-yb3jYieVswp3NTHoXFgy+NyKp37N0xPu4jXJg8v9Anc=" - } - } - }, - "org.junit.platform:junit-platform-commons": { - "1.8.2": { - "junit-platform-commons-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar" - ], - "hash": "sha256-0uAV/KcTDnmvL0YI3FRBXksQtZLXczPey0saJ0wYUFA=" - }, - "junit-platform-commons-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.module" - ], - "hash": "sha256-NChH0wRv6kNVlWkttPBdXwOeDh0eIE9NV1WQJVcIJiY=" - }, - "junit-platform-commons-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.pom" - ], - "hash": "sha256-zoUuNMahhKpsgO6N8EcXE6dAgTQTTwjjwcPdh8a1mrc=" - } - } - }, - "org.junit.platform:junit-platform-engine": { - "1.8.2": { - "junit-platform-engine-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar" - ], - "hash": "sha256-C30AD4w+jl99a4GWSZNue5k4MU6HyPmDgFIY6ldWflk=" - }, - "junit-platform-engine-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.module" - ], - "hash": "sha256-66d7Nu/fdaZ/RkODM4JfnkSPVQ1SHnJJ2VA1hYDuY2s=" - }, - "junit-platform-engine-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.pom" - ], - "hash": "sha256-AWhkMmYGDtko71qBgjAD7PrnmpqMC7/Xb0IBxsnXccU=" - } - } - }, - "org.junit.platform:junit-platform-launcher": { - "1.8.2": { - "junit-platform-launcher-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar" - ], - "hash": "sha256-giFWQJ/YPmguTFGZs0YAVCmbU4oFjCxtD1ybalvbdZQ=" - }, - "junit-platform-launcher-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.module" - ], - "hash": "sha256-4XQA7HvnYIwfiI1yG0MAHpc2wVDUD5jIoLzalWPYyus=" - }, - "junit-platform-launcher-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.pom" - ], - "hash": "sha256-tfancaautzyJpud/Vtcp9LqOta/dDxD0TbRNaq25UJU=" - } - } - }, - "org.junit.platform:junit-platform-suite-api": { - "1.8.2": { - "junit-platform-suite-api-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.jar" - ], - "hash": "sha256-lO80OwW4dbsuTvlKfMYuYQ4bnNeCR+Ky7EPtYYoe0Kc=" - }, - "junit-platform-suite-api-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.module" - ], - "hash": "sha256-kwagU4n8QNetnQsSigFEMOXRyldKGErujXhns+iRC3o=" - }, - "junit-platform-suite-api-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.pom" - ], - "hash": "sha256-QB/ZdNa5RmRSS+y3z4B8TUfXxXSy+vGxMeukiUn+mJg=" - } - } - }, - "org.junit:junit-bom": { - "5.8.2": { - "junit-bom-5.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.module" - ], - "hash": "sha256-QM+tmT+nDs3yr3TQxW2hSE7iIJZL6Pkyz+YyvponM/o=" - }, - "junit-bom-5.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom" - ], - "hash": "sha256-g2Bpyp6O48VuSDdiItopEmPxN70/0W2E/dR+/MPyhuI=" - } - } - }, - "org.opentest4j:opentest4j": { - "1.3.0": { - "opentest4j-1.3.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar" - ], - "hash": "sha256-SOLfY2yrZWPO1k3N/4q7I1VifLI27wvzdZhoLd90Lxs=" - }, - "opentest4j-1.3.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.module" - ], - "hash": "sha256-SL8dbItdyU90ZSvReQD2VN63FDUCSM9ej8onuQkMjg0=" - }, - "opentest4j-1.3.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.pom" - ], - "hash": "sha256-m/fP/EEPPoNywlIleN+cpW2dQ72TfjCUhwbCMqlDs1U=" - } - }, - "1.2.0": { - "opentest4j-1.2.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" - ], - "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" - }, - "opentest4j-1.2.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" - ], - "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" - } - } - }, - "org.ow2.asm:asm": { - "9.4": { - "asm-9.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.jar" - ], - "hash": "sha256-OdDis9xFr2Wgmwl5RXUKlKEm4FLhJPk0aEQ6HQ4V84E=" - }, - "asm-9.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.pom" - ], - "hash": "sha256-SDdR5I+y0fQ8Ya06sA/6Rm7cAzPY/C/bWibpXTKYI5Q=" - } - } - }, - "org.ow2.asm:asm-commons": { - "9.4": { - "asm-commons-9.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.jar" - ], - "hash": "sha256-DBKKnsPzPJiVknL20WzxQke1CPWJUVdLzb0rVtYyY2Q=" - }, - "asm-commons-9.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.pom" - ], - "hash": "sha256-tCyiq8+IEXdqXdwCkPIQbX8xP4LHiw3czVzOTGOjUXk=" - } - } - }, - "org.ow2.asm:asm-tree": { - "9.4": { - "asm-tree-9.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.jar" - ], - "hash": "sha256-xC1HnPJFZqIesgr37q7vToa9tKiGMGz3L0g7ZedbKs8=" - }, - "asm-tree-9.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.pom" - ], - "hash": "sha256-x+nvk73YqzYwMs5TgvzGTQAtbFicF1IzI2zSmOUaPBY=" - } - } - }, - "org.slf4j:slf4j-api": { - "2.0.9": { - "slf4j-api-2.0.9.jar": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar", - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar" - ], - "hash": "sha256-CBiTDcjX3rtAMgRhFpHaWOSdQsULb/z9zgLa23w8K2w=" - }, - "slf4j-api-2.0.9.pom": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.pom", - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.pom" - ], - "hash": "sha256-nDplT50KoaNLMXjr5TqJx2eS4dgfwelznL6bFhBSM4U=" - } - } - }, - "org.slf4j:slf4j-simple": { - "2.0.9": { - "slf4j-simple-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.0.9/slf4j-simple-2.0.9.jar" - ], - "hash": "sha256-cfnG3m267C0QyqMD+vCMXnSb5TskKJbGTJa3xrttYtw=" - }, - "slf4j-simple-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.0.9/slf4j-simple-2.0.9.pom" - ], - "hash": "sha256-/SkP5smizRkdrWl7hUhysL9/1L6/EUTtQi4rVnhgnqc=" - } - } - }, - "org.vafer:jdependency": { - "2.8.0": { - "jdependency-2.8.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.jar" - ], - "hash": "sha256-v9LMfhv8eKqDtEwKVL8s3jikOC7CRyivaD2Y3GvngZI=" - }, - "jdependency-2.8.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.pom" - ], - "hash": "sha256-EBhn8/npJlei74mjELYE1D0JDJuQqj4LBS3NFqO78y0=" - } + "com.fasterxml:oss-parent:48": { + "oss-parent-48.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/fasterxml/oss-parent/48/oss-parent-48.pom" + ], + "hash": "sha256-EbuiLYYxgW4JtiOiAHR0U9ZJGmbqyPXAicc9ordJAU8=" + } + }, + "com.fasterxml.jackson:jackson-bom:2.14.1": { + "jackson-bom-2.14.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.14.1/jackson-bom-2.14.1.pom" + ], + "hash": "sha256-eP35nlBQ/EhfQRfauMzL+2+mxoOF6184oJtlU3HUpsw=" + } + }, + "com.fasterxml.jackson:jackson-parent:2.14": { + "jackson-parent-2.14.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.14/jackson-parent-2.14.pom" + ], + "hash": "sha256-CQat2FWuOfkjV9Y/SFiJsI/KTEOl/kM1ItdTROB1exk=" + } + }, + "com.github.ajalt:clikt:2.8.0": { + "clikt-2.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.jar" + ], + "hash": "sha256-MefokL7AOvKCKKG1akSyvB7Cu57wWMkoiAAW0ZmUhpw=" + }, + "clikt-2.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.module" + ], + "hash": "sha256-63VRQs7Uww/5lU+IH4piAUsdy/SKuciarYjFwpH95Gk=" + }, + "clikt-2.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.pom" + ], + "hash": "sha256-6njJ/q8ULg4AGtO8Ey95KJKSb7wmYPpu78Mg8Vzw/Hw=" + } + }, + "com.github.ajalt:clikt-metadata:2.8.0": { + "clikt-metadata-2.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.jar" + ], + "hash": "sha256-Nxf/mOths+cC3HT1D4chzIFtNdzpwv/1g+NNUw0/I08=" + }, + "clikt-metadata-2.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.module" + ], + "hash": "sha256-y43UaWNHeqTaxq77g8LBGJqqqJxaV0TPJGGovTAvSmY=" + }, + "clikt-metadata-2.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.pom" + ], + "hash": "sha256-NtfT5a+1S3UWuJ0btkiAKNr/RrcufE4aXf9GNbtoDc8=" + } + }, + "com.github.ajalt:colormath:1.2.0": { + "colormath-1.2.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.jar" + ], + "hash": "sha256-hqUffbsyq+QQ1UMx7GGsBoSlQ7JO6Xlnu6wKTmcp8DE=" + }, + "colormath-1.2.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.pom" + ], + "hash": "sha256-a3EKjQoQu+PgV5Xvf03ux3j9eQBbDBvA5cF4Ae5r3Z0=" + } + }, + "com.github.ajalt:mordant:1.2.1": { + "mordant-1.2.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.jar" + ], + "hash": "sha256-enFOuNJbTZun8lalTHVZzKh9heyQ1pQ98ZE8rUPbldY=" + }, + "mordant-1.2.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.pom" + ], + "hash": "sha256-8DLcV/gHnB9WJvvF8PZfz14SNA3ictgpsLVOkpeacro=" + } + }, + "com.github.johnrengelman:shadow:8.1.1": { + "shadow-8.1.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.jar" + ], + "hash": "sha256-CEGXVVWQpTuyG1lQijMwVZ9TbdtEjq/R7GdfVGIDb88=" + }, + "shadow-8.1.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.module" + ], + "hash": "sha256-nQ87SqpniYcj6vbF6c0nOHj5V03azWSqNwJDYgzgLko=" + }, + "shadow-8.1.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.pom" + ], + "hash": "sha256-Mu55f8hDI3xM5cSeX0FSxYoIlK/OCg6SY25qLU/JjDU=" + } + }, + "com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:8.1.1": { + "com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/8.1.1/com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom" + ], + "hash": "sha256-PLOIa5ffbgZvEIwxayGfJiyXw8st9tp4kn5kXetkPLA=" + } + }, + "com.gradle.plugin-publish:com.gradle.plugin-publish.gradle.plugin:1.2.1": { + "com.gradle.plugin-publish.gradle.plugin-1.2.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/plugin-publish/com.gradle.plugin-publish.gradle.plugin/1.2.1/com.gradle.plugin-publish.gradle.plugin-1.2.1.pom" + ], + "hash": "sha256-60lBRA8TGZbmT6SCDc264js95UhBi6ke9MY0pqcfVMs=" + } + }, + "com.gradle.publish:plugin-publish-plugin:1.2.1": { + "plugin-publish-plugin-1.2.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" + ], + "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" + }, + "plugin-publish-plugin-1.2.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" + ], + "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" + }, + "plugin-publish-plugin-1.2.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom" + ], + "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" + } + }, + "com.squareup.okio:okio:3.9.0": { + "okio-3.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar" + ], + "hash": "sha256-5RilmFYnOh/OGKx9E938aQ3vphItflzQDK4Zti0DR9k=" + }, + "okio-3.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.module" + ], + "hash": "sha256-aNHIef9liTHQKzrb6vu1EuFjwgqQyt8H2QyNvqfnYhA=" + }, + "okio-3.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.pom" + ], + "hash": "sha256-FPNR2puXtDaeP26PaWsK1ANtFNIbD9l6pcjG7BW+fZA=" + } + }, + "com.squareup.okio:okio-jvm:3.9.0": { + "okio-jvm-3.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.jar" + ], + "hash": "sha256-3cOG/xS9JdXJNBZxlur0WxjeTyjhxVpNs3rllMv9N+Q=" + }, + "okio-jvm-3.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.module" + ], + "hash": "sha256-z5coTsYbtR5t/Lx/K22VVsm3s+PLIswOLU8O7782GVs=" + }, + "okio-jvm-3.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.pom" + ], + "hash": "sha256-VEiNRUqsyvaPcZnz3l3Ns4CBblfUYJBJF06FZSAROH4=" + } + }, + "com.typesafe:config:1.4.3": { + "config-1.4.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.jar" + ], + "hash": "sha256-itpMGFznJBZxLWPgta/cXwCcDN9AXl8m7+zfFWql37Y=" + }, + "config-1.4.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.pom" + ], + "hash": "sha256-tn6vqd0iD/h9ANumiACDpSlqXgxsAxA/XUuOHaEDD/M=" + } + }, + "commons-io:commons-io:2.11.0": { + "commons-io-2.11.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar" + ], + "hash": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=" + }, + "commons-io-2.11.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.pom" + ], + "hash": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k=" + } + }, + "io.fabric8:kubernetes-client-bom:5.12.2": { + "kubernetes-client-bom-5.12.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/io/fabric8/kubernetes-client-bom/5.12.2/kubernetes-client-bom-5.12.2.pom" + ], + "hash": "sha256-6qA8FpVlaNVKa6Q31J1Ay/DdjpOXf5hDGCQldrZQvDs=" + } + }, + "io.github.classgraph:classgraph:4.8.172": { + "classgraph-4.8.172.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.jar" + ], + "hash": "sha256-wWseIxpziZL3KVC1Jc774FSkCP9kLsy7IcrdVHCgXyI=" + }, + "classgraph-4.8.172.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.pom" + ], + "hash": "sha256-gD2mlHTiB6oi/xnshXE3MGrU4ahz4V98Xv0sqer9W74=" + } + }, + "io.github.java-diff-utils:java-diff-utils:4.12": { + "java-diff-utils-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar" + ], + "hash": "sha256-mZCiA5d49rTMlHkBQcKGiGTqzuBiDGxFlFESGpAc1bU=" + }, + "java-diff-utils-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.pom" + ], + "hash": "sha256-wm4JftyOxoBdExmBfSPU5JbMEBXMVdxSAhEtj2qRZfw=" + } + }, + "io.github.java-diff-utils:java-diff-utils-parent:4.12": { + "java-diff-utils-parent-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.12/java-diff-utils-parent-4.12.pom" + ], + "hash": "sha256-2BHPnxGMwsrRMMlCetVcF01MCm8aAKwa4cm8vsXESxk=" + } + }, + "io.github.pdvrieze.xmlutil:core:0.86.3": { + "core-0.86.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.jar" + ], + "hash": "sha256-ikZHG7Y7PHhzlsu6WqL2TU4zOgOSAiRBrhIRHn5yjJE=" + }, + "core-0.86.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.module" + ], + "hash": "sha256-MzlXsdCR2LrPqwYCCGgi+a2S9hMCy3Ru8g4Z9nprTbk=" + }, + "core-0.86.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.pom" + ], + "hash": "sha256-ngeyUCJI+U7AYn9Wsn3wiBySBCrfzoCg35oa6sQWg4M=" + } + }, + "io.github.pdvrieze.xmlutil:core-jvm:0.86.3": { + "core-jvm-0.86.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar" + ], + "hash": "sha256-kVJ9hv6gS9YYPRQKCfENqy3qcnrxLSfZFl7jQuo9Dt4=" + }, + "core-jvm-0.86.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.module" + ], + "hash": "sha256-FgIJExZWo2dDGWXYAYk7J3fuguD3ZmaD+nXE+Wck/wc=" + }, + "core-jvm-0.86.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.pom" + ], + "hash": "sha256-oBGIoPlVW1s7nZLlQz242AJ6vjleD/cIBRU+8v6qf4U=" + } + }, + "io.github.pdvrieze.xmlutil:serialization-jvm:0.86.3": { + "serialization-jvm-0.86.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar" + ], + "hash": "sha256-nOJz3LhguSpb8uw2rR4qEbQa7YnGyYTKc+h+/17aG9A=" + }, + "serialization-jvm-0.86.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.module" + ], + "hash": "sha256-3ppDm3mA++bMPDS8rZyEqIMVmdyHZNceD2c93Ho91Jo=" + }, + "serialization-jvm-0.86.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.pom" + ], + "hash": "sha256-OX1XqPVTaUEf7HRETH1NTLaeyYANUkSTrGHekJIl4wc=" + } + }, + "io.kotest:kotest-assertions-api:5.9.0": { + "kotest-assertions-api-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.jar" + ], + "hash": "sha256-JmNIEcOE+VRVVMJUBfLZCMEaeupal1mZM/gsAIRsVAg=" + }, + "kotest-assertions-api-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.module" + ], + "hash": "sha256-qFQu4m/P0+8yxm5e3mjeuvjql90heZH0HSAje7UpT4U=" + }, + "kotest-assertions-api-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.pom" + ], + "hash": "sha256-GjEMzEBJd0cpFIPrOwUMbIle7KTONzPwHdkkZ6ZV8sw=" + } + }, + "io.kotest:kotest-assertions-api-jvm:5.9.0": { + "kotest-assertions-api-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.jar" + ], + "hash": "sha256-Sv9MqD6SBssjiDJd+HKXb1GekloGlJSr7CkuwxFMDQk=" + }, + "kotest-assertions-api-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.module" + ], + "hash": "sha256-XITlW45flkCcy1pCoS3ElCbl1ucWSnMy3wy4wrK21L4=" + }, + "kotest-assertions-api-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.pom" + ], + "hash": "sha256-1g6ynf1tj7NSGYTX+sJaE0AHFHa7ceksV1X70VpaZzY=" + } + }, + "io.kotest:kotest-assertions-core:5.9.0": { + "kotest-assertions-core-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.jar" + ], + "hash": "sha256-+uWJ9I5hs7uiaHvvMbbneu2Ji6dswFU3rdFQ7pSsmkY=" + }, + "kotest-assertions-core-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.module" + ], + "hash": "sha256-p3KZqaKYbphakO0KsWd0pzMPeu/CUnOT3E1HeNPI4sM=" + }, + "kotest-assertions-core-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.pom" + ], + "hash": "sha256-qvu+DMIo9BTt2Va2lHINRZLna47v+MiK211RRQRhu7o=" + } + }, + "io.kotest:kotest-assertions-core-jvm:5.9.0": { + "kotest-assertions-core-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.jar" + ], + "hash": "sha256-TIngmms4JoES/eJqC1LvVLsXhDtBv9IV958s9M3QJ4w=" + }, + "kotest-assertions-core-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.module" + ], + "hash": "sha256-OinQMJG5EyNIVgv1DKJKzEvBzIq+MGE8y/5alzt/F48=" + }, + "kotest-assertions-core-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.pom" + ], + "hash": "sha256-pmgjeAvzFo5CAqPmg6PWZ1K5yg4aaqx4FL/mng155NU=" + } + }, + "io.kotest:kotest-assertions-shared:5.9.0": { + "kotest-assertions-shared-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.jar" + ], + "hash": "sha256-EoSglpgVz7PTk/TOTF2tW1Dc1wvxN4h78MA0yqIVYeE=" + }, + "kotest-assertions-shared-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.module" + ], + "hash": "sha256-KK3K96Q94fICNFI+4csorIc7ztp2VESW8cU1NF2gCJM=" + }, + "kotest-assertions-shared-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.pom" + ], + "hash": "sha256-IGd1Qmuhf36c1WjpZMWGMMNCt2c67pNPIiFVLNDwBww=" + } + }, + "io.kotest:kotest-assertions-shared-jvm:5.9.0": { + "kotest-assertions-shared-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.jar" + ], + "hash": "sha256-b9wtfMr8N1c/rhZ/hOMditN/2DHArXclPzDbuyedJlY=" + }, + "kotest-assertions-shared-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.module" + ], + "hash": "sha256-VGmhRQo07HywKyDjaY3dkHYsEVH6tba/RlWXlrl4OAs=" + }, + "kotest-assertions-shared-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.pom" + ], + "hash": "sha256-VQxkW4k0LR9iU/CXo+CzdyLsOTFxctB+E02E7A8IxKY=" + } + }, + "io.kotest:kotest-common:5.9.0": { + "kotest-common-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.jar" + ], + "hash": "sha256-DGXHvQS/2EX3Lt6hmNrNtLWyBebrIbnsgzSvYMZNpfU=" + }, + "kotest-common-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.module" + ], + "hash": "sha256-lqW8WbrWuITytzfvAR+ytKiZW+NO9eTnDSw99nKoh4M=" + }, + "kotest-common-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.pom" + ], + "hash": "sha256-LGnqBsbRBz1dH/ruD2wS3Lv6W8qOYXgbi8QNi2t+BzY=" + } + }, + "io.kotest:kotest-common-jvm:5.9.0": { + "kotest-common-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.jar" + ], + "hash": "sha256-yLAfI5/3kmxV/2oDYRqXpWSdWS6a0GqhBPM9RJR2uIg=" + }, + "kotest-common-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.module" + ], + "hash": "sha256-uWwklcyvr/yACGF+Sk7NRBmR/tU8QyGhECjxxIspgLE=" + }, + "kotest-common-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.pom" + ], + "hash": "sha256-DJw4J3/CngNTIDXkXDgi3C4B4yC9lPysTGsxMUIJAhM=" + } + }, + "io.kotest:kotest-extensions:5.9.0": { + "kotest-extensions-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.module" + ], + "hash": "sha256-mr4zuEi4bBoBg3YOreTLxF1OEvxEySCz+Dnn6A146rs=" + }, + "kotest-extensions-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.pom" + ], + "hash": "sha256-r36/K79pkmBmSLcdzJdHqDG43LML6A/hCfMDgOf1veU=" + } + }, + "io.kotest:kotest-extensions-jvm:5.9.0": { + "kotest-extensions-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.jar" + ], + "hash": "sha256-Mb5rCyZdL3cS0KdeaOQv6wuOYV+r8BkInn+/5Zc04dA=" + }, + "kotest-extensions-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.module" + ], + "hash": "sha256-BOtQGGme33ZRDZkDA3UZf1+XLUhkfrBNVr4B2EgdTkU=" + }, + "kotest-extensions-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.pom" + ], + "hash": "sha256-6eDaRU1z0/8r4unJOC2QiGFdpHmLjeu6d71tQ0bOa9I=" + } + }, + "io.kotest:kotest-framework-api:5.9.0": { + "kotest-framework-api-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.module" + ], + "hash": "sha256-aGM5P0GVr+lxcVUTl0jDYdWU7KIlL+zs2qZQFg2moXI=" + }, + "kotest-framework-api-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.pom" + ], + "hash": "sha256-DR9H1blAce2rfDWIUeqSozNx5xpjl2AZiLf9cZEZCAs=" + } + }, + "io.kotest:kotest-framework-api-jvm:5.9.0": { + "kotest-framework-api-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.jar" + ], + "hash": "sha256-2SRLxofIOCISZyWzynZ25FZEemBRIQ4lF1z4qyDAtCM=" + }, + "kotest-framework-api-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.module" + ], + "hash": "sha256-losVlXIzbDC3+cKX/PvrfRyPgg6u1lx8d6TLMznY7WI=" + }, + "kotest-framework-api-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.pom" + ], + "hash": "sha256-+M0upKNYQEr5M+QjsDDRT5bGVfO+fqryE9H9cywekwg=" + } + }, + "io.kotest:kotest-framework-concurrency:5.9.0": { + "kotest-framework-concurrency-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.module" + ], + "hash": "sha256-3X24UL0kQmjOFPnvo70y25AKgbmAW5TYJCSnWJIDxB0=" + }, + "kotest-framework-concurrency-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.pom" + ], + "hash": "sha256-ML0NEgw6Tr0BJp5gw3CrNhStctHDX3/qq+/lDSlVC7I=" + } + }, + "io.kotest:kotest-framework-concurrency-jvm:5.9.0": { + "kotest-framework-concurrency-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.jar" + ], + "hash": "sha256-B5txinLAdedCmHOz+VGoVROoA2xeOnbd3ocWEPKbd7U=" + }, + "kotest-framework-concurrency-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.module" + ], + "hash": "sha256-p8YMX+xNYGBE50UAR+JfoGITADC4xYDfDikqYBWzTbQ=" + }, + "kotest-framework-concurrency-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.pom" + ], + "hash": "sha256-xoO5KKNSADRo0j5ZQOnEJEjpknBpfEu8pHOavXSLDbc=" + } + }, + "io.kotest:kotest-framework-discovery:5.9.0": { + "kotest-framework-discovery-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.module" + ], + "hash": "sha256-L+Hiv5t/+eBNzZXjEI7jtfFURkTgZAP7lLkHZIOVCUA=" + }, + "kotest-framework-discovery-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.pom" + ], + "hash": "sha256-ts05NMKO1qZRr4RysuNqOuQMRWldI7As5JE7IULEgnE=" + } + }, + "io.kotest:kotest-framework-discovery-jvm:5.9.0": { + "kotest-framework-discovery-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.jar" + ], + "hash": "sha256-miiiFNkV20R5bwZcHP+7s8I2uJtqazg5UFjYCrg+ggM=" + }, + "kotest-framework-discovery-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.module" + ], + "hash": "sha256-7Xaj5/OnkkcbTUm+u+5pKPGEU0gLopHp5yBJlgAASCE=" + }, + "kotest-framework-discovery-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.pom" + ], + "hash": "sha256-sGGEOZMEvWc0UeszHyP3aqPtPf1dpMeb8dbiIb2MjFs=" + } + }, + "io.kotest:kotest-framework-engine:5.9.0": { + "kotest-framework-engine-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.module" + ], + "hash": "sha256-gZN/CF6jy3S1hxETTtC7VsDymc/DFz27IUVCrMyVJxc=" + }, + "kotest-framework-engine-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.pom" + ], + "hash": "sha256-xBA8Jfhv52zZKiA1irX1jbAUMtcKuBphBChd2MW998U=" + } + }, + "io.kotest:kotest-framework-engine-jvm:5.9.0": { + "kotest-framework-engine-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.jar" + ], + "hash": "sha256-h6Dxzb4o39OyLp5GgSEzCx1zPdoFwkTvhs/ZHaoWYlU=" + }, + "kotest-framework-engine-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.module" + ], + "hash": "sha256-ESmBvZzHXpTgQAm6W7dkWm8AeVEwU79W72QiUnSoBDs=" + }, + "kotest-framework-engine-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.pom" + ], + "hash": "sha256-v8ljQokqqX+yqFM+r+m1elKQlQdCH6sw2K71m5QpGpI=" + } + }, + "io.kotest:kotest-runner-junit5:5.9.0": { + "kotest-runner-junit5-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.jar" + ], + "hash": "sha256-CJ4kQXv59sNO7Fcg7rssvMguooVezvkBM+sX4QedWGg=" + }, + "kotest-runner-junit5-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.module" + ], + "hash": "sha256-AfB70s+KHo+Z+dDmSpQ7X6cxE//szocwqMQ08nZSgvc=" + }, + "kotest-runner-junit5-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.pom" + ], + "hash": "sha256-xeE4b8vdz+kKt18wWVnzltXRxu7l2y/549Ik8QVsmpM=" + } + }, + "io.kotest:kotest-runner-junit5-jvm:5.9.0": { + "kotest-runner-junit5-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.jar" + ], + "hash": "sha256-dpV0ADmfVaJBZFgUGfKj0H9yfEiwPcOXLiV24YdH6iI=" + }, + "kotest-runner-junit5-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.module" + ], + "hash": "sha256-v6MTM0BhaveK/YqdH3bwAQ02Wx6GE2DWpzMqowrKy4s=" + }, + "kotest-runner-junit5-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.pom" + ], + "hash": "sha256-wuOpHya7dfndAfMnW8E5OL6Lp3KEIBwbov4DODC2xKo=" + } + }, + "io.ktor:ktor-events:2.3.11": { + "ktor-events-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.jar" + ], + "hash": "sha256-qfTivW7ALrt5prOcEEr++k281IA7ufrV2e1XCTRX8G0=" + }, + "ktor-events-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.module" + ], + "hash": "sha256-YScMYk6JE8UBLw87YF0ThAlwNl+5JOw8fuO0hLxTWXY=" + }, + "ktor-events-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.pom" + ], + "hash": "sha256-hcFsb/+tI+3auG+gJU68tB7hhOh9M3Va41ITctMZ8ug=" + } + }, + "io.ktor:ktor-events-jvm:2.3.11": { + "ktor-events-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.jar" + ], + "hash": "sha256-92Dmk7tpaq9srFhEXFI2hY0QzXwVCErCDHp1Ba50kac=" + }, + "ktor-events-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.module" + ], + "hash": "sha256-HW+ysABOvT9w8g0YdMXRR9zcSn4pjM1ogdM/msx9tkE=" + }, + "ktor-events-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.pom" + ], + "hash": "sha256-nssYQanQ3FgvP+/Yl7vKKpqntHd69GbL65epV0IHdAY=" + } + }, + "io.ktor:ktor-http:2.3.11": { + "ktor-http-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.jar" + ], + "hash": "sha256-9PADOhT6whJBqLu+HFzxkzvRA+3I6eJ37j7gwcvTRkI=" + }, + "ktor-http-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.module" + ], + "hash": "sha256-UBgBa5qlACv5oFBoGsFuBRp/uICUhPFWnvdqFpxKKiU=" + }, + "ktor-http-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.pom" + ], + "hash": "sha256-tw7Nks9eqraVRQQDQ19SvqCDJe1VtNKDM1FN0diI0Dc=" + } + }, + "io.ktor:ktor-http-cio:2.3.11": { + "ktor-http-cio-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.module" + ], + "hash": "sha256-/lHSv+0gYTxLvcY4yT1X1ZmldFlXloNtjO7Zybep+n8=" + }, + "ktor-http-cio-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.pom" + ], + "hash": "sha256-p4wT0HqIQfw3MAGgGVPYKT2YDL972n81+FR3+1Ya+RA=" + } + }, + "io.ktor:ktor-http-cio-jvm:2.3.11": { + "ktor-http-cio-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.jar" + ], + "hash": "sha256-bIKoW5GMwAsSSn2w9HTtOH8FFIpCKWgQWG7lkTRNDn8=" + }, + "ktor-http-cio-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.module" + ], + "hash": "sha256-HzV2/lizf5nFj9TuJFmgRmiEoeWTw9Qb5/2/wQ5STtU=" + }, + "ktor-http-cio-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.pom" + ], + "hash": "sha256-vy9Vnf0Mx1NzkCGv7nlbr8U3U8ajWIiGa2J0Fg3stdY=" + } + }, + "io.ktor:ktor-http-jvm:2.3.11": { + "ktor-http-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.jar" + ], + "hash": "sha256-BQMz4biz/zBwvjIW4fPuePqdZQrI0hEEHQW/SCWbTfY=" + }, + "ktor-http-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.module" + ], + "hash": "sha256-BIraZkNbJkbTFrDOjX+aXfau8yuP1KEQ6vaPiqI8zII=" + }, + "ktor-http-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.pom" + ], + "hash": "sha256-CI9yJI9u5cZPW8Wa4i6MzE5ZqDVZ7U89ZGy9vtUDqIU=" + } + }, + "io.ktor:ktor-io:2.3.11": { + "ktor-io-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.jar" + ], + "hash": "sha256-skZKEoTyY57muhpCVDIsxUsFMmWHpG+AFUy9tXAYC7I=" + }, + "ktor-io-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.module" + ], + "hash": "sha256-RvrHp728UxfkD6bGYZpMUr7X02JaNP2kWRjDyq04r2A=" + }, + "ktor-io-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.pom" + ], + "hash": "sha256-lFDUN7vjB58G5wAePQmaH2l7Fc7UWO8BorXFd1cVrPI=" + } + }, + "io.ktor:ktor-io-jvm:2.3.11": { + "ktor-io-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.jar" + ], + "hash": "sha256-nJt0vx7xFuSybVyUUJoFd7yhQPgwqAzz9S0kVM0BEhs=" + }, + "ktor-io-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.module" + ], + "hash": "sha256-EIlmqdlJzZRN/9MqUTc0pPKJyCRGt4nACmopTWM7ER8=" + }, + "ktor-io-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.pom" + ], + "hash": "sha256-mbL5+MkKES6IVeY55AE+jXlYxCD8UVGq1iha3NdD0Ak=" + } + }, + "io.ktor:ktor-network:2.3.11": { + "ktor-network-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.module" + ], + "hash": "sha256-SlUAXFfLaTqLMK+eWk302ojX/kU93TRlvWsJEAkmbCw=" + }, + "ktor-network-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.pom" + ], + "hash": "sha256-eV7oO+aNHBYV/JibHkjPGNbeNvWK9vBb/7QjtOnsC18=" + } + }, + "io.ktor:ktor-network-jvm:2.3.11": { + "ktor-network-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.jar" + ], + "hash": "sha256-9njugGQUgEV28XM5R2Lg4busruMHOaBI1Oy0g4fe5GY=" + }, + "ktor-network-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.module" + ], + "hash": "sha256-jrPuxh+wtawI9Xvqfr83Q/Bcim9DImLUcuVu7JsuGZU=" + }, + "ktor-network-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.pom" + ], + "hash": "sha256-MdRLyv4uXbBWgn3XwoxljAHVxY5NC2IsHJ0m63SpqwM=" + } + }, + "io.ktor:ktor-serialization:2.3.11": { + "ktor-serialization-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.jar" + ], + "hash": "sha256-I/oFsvofdMi+5JsvpNCmzRaXdvXLw7e00I5nfmr7n14=" + }, + "ktor-serialization-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.module" + ], + "hash": "sha256-RY1rJzbNfObY9IMGdTEbJiZbM5tYoX0nLc0RFXI8lHI=" + }, + "ktor-serialization-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.pom" + ], + "hash": "sha256-Cr072jnh1FQGF7zPRAO3J56g7KkUSo1q/+F/OPc8PGU=" + } + }, + "io.ktor:ktor-serialization-jvm:2.3.11": { + "ktor-serialization-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.jar" + ], + "hash": "sha256-TC80IiaKlf63dwx10dJ+CdAJ3Wl8m0vyb9kxczLbUD4=" + }, + "ktor-serialization-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.module" + ], + "hash": "sha256-9ys7vY/D7I5DSDSPQt3OUq8+Y/Cens9C5M2WkG2R1Tg=" + }, + "ktor-serialization-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.pom" + ], + "hash": "sha256-nVGClI7BadSZPzuAFmETNuh/2PrjgidwH1imzh/Enp8=" + } + }, + "io.ktor:ktor-server-core:2.3.11": { + "ktor-server-core-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.jar" + ], + "hash": "sha256-PztUA1uh8KXfyq3LoJd62JDVDEUa7iLVPvTVa1Om/O4=" + }, + "ktor-server-core-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.module" + ], + "hash": "sha256-9KlYTH9QBmFcpCiXTk3Tz6Rr9fgq9AgjV51bPBTHYhQ=" + }, + "ktor-server-core-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.pom" + ], + "hash": "sha256-111k/+joPoOX6n+cgCufGnnAjtYXzbHpj1hAzqNEVZo=" + } + }, + "io.ktor:ktor-server-core-jvm:2.3.11": { + "ktor-server-core-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.jar" + ], + "hash": "sha256-6mi102OoWntBxzISf3BLDpj+OqwSJSl2PYrnAEf788o=" + }, + "ktor-server-core-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.module" + ], + "hash": "sha256-FMtHfiKcHfwZgmJjHqajyNXVabXFm0zExQ7fM++s0DE=" + }, + "ktor-server-core-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.pom" + ], + "hash": "sha256-maADHI6bP1m7Bkt2pdkoD4tx19nGLtwl2hfC1E+CeeE=" + } + }, + "io.ktor:ktor-server-host-common:2.3.11": { + "ktor-server-host-common-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.module" + ], + "hash": "sha256-cg0+sO8u7FRrD4iq4pL0uILk+Pze6GY7D6KyiEXHt04=" + }, + "ktor-server-host-common-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.pom" + ], + "hash": "sha256-B8Z/z3Xv1x18tmbpWfd/dSwCj1iywfoiUHLzYhGYVqw=" + } + }, + "io.ktor:ktor-server-host-common-jvm:2.3.11": { + "ktor-server-host-common-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.jar" + ], + "hash": "sha256-HjvNeLHpjsoQjZJ7u1QdDZtyP7IYcm1h6Fucpq4cjis=" + }, + "ktor-server-host-common-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.module" + ], + "hash": "sha256-xwLIGRtpP1d1ZpHRRkZ4u6mOhtCEXQKDdiGZS+uRlTI=" + }, + "ktor-server-host-common-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.pom" + ], + "hash": "sha256-Gr877I0aFWryXIDK700+sC3wxIGN1CghIW2+SCeZXfQ=" + } + }, + "io.ktor:ktor-server-netty:2.3.11": { + "ktor-server-netty-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.jar" + ], + "hash": "sha256-Wkb9vED9LXglmIPEzG6vO14pDdB9HEbqiO6j1I9QV3I=" + }, + "ktor-server-netty-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.module" + ], + "hash": "sha256-LUtE8EMgnpzg9IDdZmgoSbkyOfKIIBo1UqglQd1rE30=" + }, + "ktor-server-netty-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.pom" + ], + "hash": "sha256-qxGxtuLNQMM816OjnKeeSZlw/rFhIoI3ClZfEn0kXSM=" + } + }, + "io.ktor:ktor-server-netty-jvm:2.3.11": { + "ktor-server-netty-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.jar" + ], + "hash": "sha256-+YxIUr325irKzWu54yreP13lsmM+UY7F7B2tmD1XX5E=" + }, + "ktor-server-netty-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.module" + ], + "hash": "sha256-NYOIDN8BaY3r8qB3UPuenAvD369DZCLiRZw+f31Arig=" + }, + "ktor-server-netty-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.pom" + ], + "hash": "sha256-J+fP+sEa+ugSVjyPhVozJlMEIYLAGp6UfEg/Rzme35A=" + } + }, + "io.ktor:ktor-utils:2.3.11": { + "ktor-utils-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.jar" + ], + "hash": "sha256-SJeUj4AL85YHGPuaWv9QErcht7iWZjhZWCbGstp8TiU=" + }, + "ktor-utils-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.module" + ], + "hash": "sha256-wFGiUpPmUdQIGWPVFfMxsnPBevWpKYBs88mYdisk9is=" + }, + "ktor-utils-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.pom" + ], + "hash": "sha256-pP/0keaxdRMn261KJ+UR/U4xNpR/NyD32ovBtl2Ny6M=" + } + }, + "io.ktor:ktor-utils-jvm:2.3.11": { + "ktor-utils-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.jar" + ], + "hash": "sha256-1QjohTKUyKcuVhoSkBJ97q+SdC4tgQNqa5tzyCsx7WE=" + }, + "ktor-utils-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.module" + ], + "hash": "sha256-41aI1T/NEKfizORi3PjCB81MGkOD8ZU46xU/9wogbp4=" + }, + "ktor-utils-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.pom" + ], + "hash": "sha256-H412FDKI60HeKk4U/pf7CtRtMdfUpXwHo7voHSTOTKA=" + } + }, + "io.ktor:ktor-websockets:2.3.11": { + "ktor-websockets-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.jar" + ], + "hash": "sha256-XdKULp+AhVyqGFXiShT3DxqHWcg3tFTplRdqPMl3QVg=" + }, + "ktor-websockets-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.module" + ], + "hash": "sha256-t4zNNnaq5vyJ3WfnvqhKG8Dy1Wj2dS+njB8umGelDY4=" + }, + "ktor-websockets-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.pom" + ], + "hash": "sha256-j87iI7x63u3+9R+IaRZJrsf3edm+JowIJ7tuiow0Nmw=" + } + }, + "io.ktor:ktor-websockets-jvm:2.3.11": { + "ktor-websockets-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.jar" + ], + "hash": "sha256-0DB7Dv/GNJYymcO1L1E/eM+1xWY67t6dxCS4VZtT66o=" + }, + "ktor-websockets-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.module" + ], + "hash": "sha256-NHCtWpjcwUnywUXqTgiQ1wY6UMd8JsXOk/fhySJqKQY=" + }, + "ktor-websockets-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.pom" + ], + "hash": "sha256-y26TtzMFAIabQ+RBnTzdYMa7FoD493PwfLGLAZ2S7V8=" + } + }, + "io.netty:netty-bom:4.1.86.Final": { + "netty-bom-4.1.86.Final.pom": { + "urls": [ + "https://plugins.gradle.org/m2/io/netty/netty-bom/4.1.86.Final/netty-bom-4.1.86.Final.pom" + ], + "hash": "sha256-EnFsH+ZM9b2qcETTfROq46iIIbkdR5hCDEanR2kXiv0=" + } + }, + "io.netty:netty-buffer:4.1.106.Final": { + "netty-buffer-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.jar" + ], + "hash": "sha256-1QZ72+R21jy0MpOCKDKnSafDijjBxRYQfHPSV8Ob7SE=" + }, + "netty-buffer-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.pom" + ], + "hash": "sha256-2gY34YJ9Uw2h2PQwsObNaT7Ee32qBnQrKKw02xy1RqY=" + } + }, + "io.netty:netty-codec:4.1.106.Final": { + "netty-codec-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.jar" + ], + "hash": "sha256-k4Y9/WkPes58JuTICP3CR4CtrUZbPNy3zj/HPEIt928=" + }, + "netty-codec-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.pom" + ], + "hash": "sha256-NA+IHwoS9itNCY+bcQo0fASTjV/z38wvw8pw1X7a70s=" + } + }, + "io.netty:netty-codec-http:4.1.106.Final": { + "netty-codec-http-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.jar" + ], + "hash": "sha256-uhd6A63Fh/pj6W8duunEb/JfWTl+o02WC0XgXQKWAm4=" + }, + "netty-codec-http-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.pom" + ], + "hash": "sha256-DE+4Y7F3o8Z9NhZistW8Gx43Vgubamtxfbc+lnlW2Ro=" + } + }, + "io.netty:netty-codec-http2:4.1.106.Final": { + "netty-codec-http2-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.jar" + ], + "hash": "sha256-wrgh1XpzPNZx6iqwZCACsX4KK4kATKAmxuro9Tgc+B4=" + }, + "netty-codec-http2-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.pom" + ], + "hash": "sha256-JZlznLzUACvwLSkABPTYxyvdhZ2VOyGAR7HvdW55jEY=" + } + }, + "io.netty:netty-common:4.1.106.Final": { + "netty-common-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.jar" + ], + "hash": "sha256-X/vgG9hFYXqRbeNhMBDV/aV8XraUFH040E95Hpg01cM=" + }, + "netty-common-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.pom" + ], + "hash": "sha256-4ayZMJpA1e76IEs6GBXHIcuS5K5t1UHsIoRQ2cnUgA0=" + } + }, + "io.netty:netty-handler:4.1.106.Final": { + "netty-handler-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.jar" + ], + "hash": "sha256-WpGa2Ittnp8IwwaZgLxlamKSagDmui2lhZqg7k4gLkQ=" + }, + "netty-handler-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.pom" + ], + "hash": "sha256-lhoCD6DBskT1io9MYS+egEEokLlgO/WTzmiUKaRlC0Y=" + } + }, + "io.netty:netty-parent:4.1.106.Final": { + "netty-parent-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-parent/4.1.106.Final/netty-parent-4.1.106.Final.pom" + ], + "hash": "sha256-eV8c7NBEHGSvry5vEN+yHCRtRI9sQ1cFHt6mjpw+s2U=" + } + }, + "io.netty:netty-resolver:4.1.106.Final": { + "netty-resolver-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.jar" + ], + "hash": "sha256-QElYuPBZDuUmAT0BHNI1Tat4rbqtdD19RE2zOj+eq6w=" + }, + "netty-resolver-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.pom" + ], + "hash": "sha256-phbG6XmPmDwsK0BiFDvaWM8tD2mGnZ00yMJiPdZMXXc=" + } + }, + "io.netty:netty-transport:4.1.106.Final": { + "netty-transport-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.jar" + ], + "hash": "sha256-I+qaOQCbQenQqhUVswc6+e5NpOFsLoabWqiqnxCdQlE=" + }, + "netty-transport-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.pom" + ], + "hash": "sha256-qyxCFnnBmSuuT3UyvpdpbK5L9g5pbwskf/vPunrynM4=" + } + }, + "io.netty:netty-transport-classes-epoll:4.1.106.Final": { + "netty-transport-classes-epoll-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.jar" + ], + "hash": "sha256-676g9nii85R+sgC+Az7X/lUwZ+Octd9Ldp0bn8aimHI=" + }, + "netty-transport-classes-epoll-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.pom" + ], + "hash": "sha256-kancuAlsq6lJCbohCze/4/M7qjAuZXAap/4nnWlRzGc=" + } + }, + "io.netty:netty-transport-classes-kqueue:4.1.106.Final": { + "netty-transport-classes-kqueue-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.jar" + ], + "hash": "sha256-9o7UQlABZcajhz4HMeG2IIS0L4QtD0dmdHSA7x/Jdj4=" + }, + "netty-transport-classes-kqueue-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.pom" + ], + "hash": "sha256-5VnP7dwvVFIUCbLypQY8gXefTgvpcG/+2QR0B3xBHU4=" + } + }, + "io.netty:netty-transport-native-epoll:4.1.106.Final": { + "netty-transport-native-epoll-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.jar" + ], + "hash": "sha256-ZgOaFRY1MCriM9/Rh9kcfddzoRrM0Sc1wWU7gndOd/A=" + }, + "netty-transport-native-epoll-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.pom" + ], + "hash": "sha256-U51mdWvcdwISzdMD7mJMrY2xbu9KgZiyqOKEg+ljb04=" + } + }, + "io.netty:netty-transport-native-kqueue:4.1.106.Final": { + "netty-transport-native-kqueue-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.jar" + ], + "hash": "sha256-FC/1C6Wcdbv2c6bBQ53Prjy3RprbgQXcP7ZqpAVRpK4=" + }, + "netty-transport-native-kqueue-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.pom" + ], + "hash": "sha256-BuxVaGByijbJpVnBVpIl5kzOGvQPqZ7T3GdZgmHMlOs=" + } + }, + "io.netty:netty-transport-native-unix-common:4.1.106.Final": { + "netty-transport-native-unix-common-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.jar" + ], + "hash": "sha256-9S1LOMVxBmv6rpZKeGf6k38OVPtf9GfFdstlCiCoVOg=" + }, + "netty-transport-native-unix-common-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.pom" + ], + "hash": "sha256-h19sn7JG3Vygm8Lc/LF4wpsBxx6lE/M3jm/Osp1KCjo=" + } + }, + "jakarta.platform:jakarta.jakartaee-bom:9.0.0": { + "jakarta.jakartaee-bom-9.0.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/jakarta/platform/jakarta.jakartaee-bom/9.0.0/jakarta.jakartaee-bom-9.0.0.pom" + ], + "hash": "sha256-kZA9Ddh23sZ/i5I/EzK6cr8pWwa9OX0Y868ZMHzhos4=" + } + }, + "jakarta.platform:jakartaee-api-parent:9.0.0": { + "jakartaee-api-parent-9.0.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/jakarta/platform/jakartaee-api-parent/9.0.0/jakartaee-api-parent-9.0.0.pom" + ], + "hash": "sha256-9l3PFLbh2RSOGYo5D6/hVfrKCTJT3ekAMH8+DqgsrTs=" + } + }, + "net.bytebuddy:byte-buddy:1.10.9": { + "byte-buddy-1.10.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.jar" + ], + "hash": "sha256-B7nKbi+XDLA/SyVlHfHy/OJx1JG0TgQJgniHeG9pLU0=" + }, + "byte-buddy-1.10.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.pom" + ], + "hash": "sha256-QIgdSUiocRWTRicPNpRbwpAlV3xstX9qXdDHwiIGnaw=" + } + }, + "net.bytebuddy:byte-buddy-agent:1.10.9": { + "byte-buddy-agent-1.10.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.jar" + ], + "hash": "sha256-+9BS0tTNFvcHVHxGhiHGt/uELH7Ihm0BLsvGF43h85Q=" + }, + "byte-buddy-agent-1.10.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.pom" + ], + "hash": "sha256-GZB0lfvBwjFsjrrXbwe5bRAf6xp+PAm/4VJv0/xu7J0=" + } + }, + "net.bytebuddy:byte-buddy-parent:1.10.9": { + "byte-buddy-parent-1.10.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.10.9/byte-buddy-parent-1.10.9.pom" + ], + "hash": "sha256-k9nTgHec0XaMUrS87oLL+u3vmkow3oeuBrRB4WNP04w=" + } + }, + "net.java.dev.jna:jna:5.9.0": { + "jna-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar" + ], + "hash": "sha256-6vzHgLRFQ008Wuf6L7ZmXeGnVg1TfSxAio6AzRTScWE=" + }, + "jna-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.pom" + ], + "hash": "sha256-a8i4RZFQtZ6VmPPa2a0kWh7yFQ0IJYEBcYTrFj5ZKCk=" + } + }, + "net.java.dev.jna:jna-platform:5.9.0": { + "jna-platform-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.jar" + ], + "hash": "sha256-GQO8bYfzq5ICOVe5H0WpyOs1FbrQMDVs6XcgHlFBtyQ=" + }, + "jna-platform-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.pom" + ], + "hash": "sha256-C9pdmOS+kmHwnN+u5vokWYh5CDTX/K3I4v3ZPH1kGCU=" + } + }, + "org.apache:apache:27": { + "apache-27.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/apache/27/apache-27.pom" + ], + "hash": "sha256-srD8aeIqZQw4kvHDZtdwdvKVdcZzjfTHpwpEhESEzfk=" + } + }, + "org.apache:apache:23": { + "apache-23.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/apache/23/apache-23.pom" + ], + "hash": "sha256-vBBiTgYj82V3+sVjnKKTbTJA7RUvttjVM6tNJwVDSRw=" + } + }, + "org.apache:apache:21": { + "apache-21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom" + ], + "hash": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A=" + } + }, + "org.apache.ant:ant:1.10.13": { + "ant-1.10.13.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.jar" + ], + "hash": "sha256-vvv8eedE6Yks+n25bfO26C3BfSVxr0KqQnl2/CIpmDg=" + }, + "ant-1.10.13.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.pom" + ], + "hash": "sha256-J5NR7tkLj3QbtIyVvmHD7CRU48ipr7Q7zB0LrB3aE3o=" + } + }, + "org.apache.ant:ant-launcher:1.10.13": { + "ant-launcher-1.10.13.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.jar" + ], + "hash": "sha256-zXaVs7+2lkq3G2oLMdrWAAWud/5QITI2Rnmqzwj3eXA=" + }, + "ant-launcher-1.10.13.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.pom" + ], + "hash": "sha256-ApkvvDgFU1bzyU0B6qJJmcsCoJuqnB/fXqx2t8MVY8o=" + } + }, + "org.apache.ant:ant-parent:1.10.13": { + "ant-parent-1.10.13.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-parent/1.10.13/ant-parent-1.10.13.pom" + ], + "hash": "sha256-blv8hwgiFD8f+7LG8I7EiHctsxSlKDMC9IFLEms0aTk=" + } + }, + "org.apache.commons:commons-parent:52": { + "commons-parent-52.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/52/commons-parent-52.pom" + ], + "hash": "sha256-ddvo806Y5MP/QtquSi+etMvNO18QR9VEYKzpBtu0UC4=" + } + }, + "org.apache.logging:logging-parent:7": { + "logging-parent-7.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/logging-parent/7/logging-parent-7.pom" + ], + "hash": "sha256-5YkR3J/GsXOhDlqp7bk8eZStBmAnBd0Gftz8bh6eFys=" + } + }, + "org.apache.logging.log4j:log4j:2.20.0": { + "log4j-2.20.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j/2.20.0/log4j-2.20.0.pom" + ], + "hash": "sha256-mje0qPZ+jUG8JHNxejAhYz1qPD8xBXnbmtC+PyRlnGk=" + } + }, + "org.apache.logging.log4j:log4j-api:2.20.0": { + "log4j-api-2.20.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.jar" + ], + "hash": "sha256-L0PupnnqZvFMoPE/7CqGAKwST1pSMdy034OT7dy5dVA=" + }, + "log4j-api-2.20.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.pom" + ], + "hash": "sha256-zUWDKj1s0hlENcDWPKAV8ZSWjy++pPKRVTv3r7hOFjc=" + } + }, + "org.apache.logging.log4j:log4j-bom:2.20.0": { + "log4j-bom-2.20.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-bom/2.20.0/log4j-bom-2.20.0.pom" + ], + "hash": "sha256-+LtpLpWmt72mAehxAJWOg9AGG38SMlC2gSiUOhlenaE=" + } + }, + "org.apache.logging.log4j:log4j-core:2.20.0": { + "log4j-core-2.20.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.jar" + ], + "hash": "sha256-YTffhIza7Z9NUHb3VRPGyF2oC5U/TnrMo4CYt3B2P1U=" + }, + "log4j-core-2.20.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.pom" + ], + "hash": "sha256-3nGsEAVR9KB3rsrQd70VPnHfeqacMELXZRbMXM4Ice4=" + } + }, + "org.apache.maven:maven:3.6.3": { + "maven-3.6.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven/3.6.3/maven-3.6.3.pom" + ], + "hash": "sha256-0thiRepmFJvBTS3XK7uWH5ZN1li4CaBXMlLAZTHu7BY=" + } + }, + "org.apache.maven:maven-model:3.6.3": { + "maven-model-3.6.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" + ], + "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" + }, + "maven-model-3.6.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" + ], + "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" + } + }, + "org.apache.maven:maven-parent:33": { + "maven-parent-33.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-parent/33/maven-parent-33.pom" + ], + "hash": "sha256-OFbj/NFpUC1fEv4kUmBOv2x8Al8VZWv6VY6pntKdc+o=" + } + }, + "org.apiguardian:apiguardian-api:1.1.2": { + "apiguardian-api-1.1.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar" + ], + "hash": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=" + }, + "apiguardian-api-1.1.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.module" + ], + "hash": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=" + }, + "apiguardian-api-1.1.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.pom" + ], + "hash": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA=" + } + }, + "org.codehaus.groovy:groovy-bom:3.0.14": { + "groovy-bom-3.0.14.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/codehaus/groovy/groovy-bom/3.0.14/groovy-bom-3.0.14.pom" + ], + "hash": "sha256-JODptzjecRjennNWD/0GA0u1zwfKE6fgNFnoi6nRric=" + } + }, + "org.codehaus.plexus:plexus:10": { + "plexus-10.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus/10/plexus-10.pom" + ], + "hash": "sha256-u6nFIQZLnKEyzpfMHMfrSvwtvjK8iMuHLIjpn2FiMB8=" + } + }, + "org.codehaus.plexus:plexus-utils:3.5.1": { + "plexus-utils-3.5.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar" + ], + "hash": "sha256-huAlXUyHnGG0gz7X8TEk6LtnnfR967EnMm59t91JoHs=" + }, + "plexus-utils-3.5.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.pom" + ], + "hash": "sha256-lP9o7etIIE0SyZGJx2cWTTqfd4oTctHc4RpBRi5iNvI=" + } + }, + "org.eclipse.ee4j:project:1.0.6": { + "project-1.0.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/ee4j/project/1.0.6/project-1.0.6.pom" + ], + "hash": "sha256-Tn2DKdjafc8wd52CQkG+FF8nEIky9aWiTrkHZ3vI1y0=" + } + }, + "org.eclipse.jetty:jetty-bom:9.4.50.v20221201": { + "jetty-bom-9.4.50.v20221201.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jetty/jetty-bom/9.4.50.v20221201/jetty-bom-9.4.50.v20221201.pom" + ], + "hash": "sha256-TN5uUz1gHq+LZazulWt3BsGBkvJ1XQI9fo0Zu31bOUM=" + } + }, + "org.eclipse.jetty:jetty-parent:21": { + "jetty-parent-21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-parent/21/jetty-parent-21.pom" + ], + "hash": "sha256-eXLp7G84UqjuHuXU0Q3Mnc1gd7El+TWqlrNnpsgjN/U=" + } + }, + "org.eclipse.jetty.alpn:alpn-api:1.1.3.v20160715": { + "alpn-api-1.1.3.v20160715.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.jar" + ], + "hash": "sha256-B76ZdYtpnhlPcPuXhNlCAtxsmCEod4KePXKwIPJmBXY=" + }, + "alpn-api-1.1.3.v20160715.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.pom" + ], + "hash": "sha256-FrRveqUg7VDUR4oM9ndjje3AFDtCNMJ48WDLS9JUgq8=" + } + }, + "org.fusesource:fusesource-pom:1.12": { + "fusesource-pom-1.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/fusesource/fusesource-pom/1.12/fusesource-pom-1.12.pom" + ], + "hash": "sha256-xA2WDarc73sBwbHGZXr7rE//teUxaPj8sLKLhOb9zKE=" + } + }, + "org.fusesource.jansi:jansi:2.4.1": { + "jansi-2.4.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.jar" + ], + "hash": "sha256-Ll53Wp3Fj/prvWqm8JnWL4ti3N60w8O7vlzyMBvC3ME=" + }, + "jansi-2.4.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.pom" + ], + "hash": "sha256-P5jZeaTTVZ+HefuwBLNK51Fq+t9RDhHffMPNBz6xuzs=" + } + }, + "org.gradle:gradle-tooling-api:8.7": { + "gradle-tooling-api-8.7.jar": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.jar" + ], + "hash": "sha256-UjAREw062qfdwR14e/363TmgBDIAzGd7cJtPrATLhrM=" + }, + "gradle-tooling-api-8.7.module": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.module" + ], + "hash": "sha256-c08g/Bo2leG74FuBK7m7un/wNzQ8lCp5THbpiBdpNCg=" + }, + "gradle-tooling-api-8.7.pom": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.pom", + "https://repo.maven.apache.org/maven2/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.pom" + ], + "hash": "sha256-Js9ia+mlUYCUZg1Vkot+NEGrQxuSkHTHc7+fL3V28/s=" + } + }, + "org.jdom:jdom2:2.0.6.1": { + "jdom2-2.0.6.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.jar" + ], + "hash": "sha256-CyD0XjoP2PDRLNxTFrBndukCsTZdsAEYh2+RdcYPMCw=" + }, + "jdom2-2.0.6.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.pom" + ], + "hash": "sha256-VXleEBi4rmR7k3lnz4EKmbCFgsI3TnhzwShzTIyRS/M=" + } + }, + "org.jetbrains:annotations:23.0.0": { + "annotations-23.0.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.jar" + ], + "hash": "sha256-ew8ZckCCy/y8ZuWr6iubySzwih6hHhkZM+1DgB6zzQU=" + }, + "annotations-23.0.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom" + ], + "hash": "sha256-yUkPZVEyMo3yz7z990P1P8ORbWwdEENxdabKbjpndxw=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions:1.9.22": { + "kotlin-android-extensions-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar" + ], + "hash": "sha256-Hl6IFkKpnduPbRPmmVoIwZK8OEGHOWZj2ER8CB2H4k8=" + }, + "kotlin-android-extensions-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom" + ], + "hash": "sha256-lEt8+zPgpvtoRVkEjwKMuWMmyTKiRdXLAhQ7zSwDEVk=" + } + }, + "org.jetbrains.kotlin:kotlin-build-common:1.9.22": { + "kotlin-build-common-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar" + ], + "hash": "sha256-U8PcxTA/WQPmJgrqc+zMaTD5o276KhHNO9On5V32OWY=" + }, + "kotlin-build-common-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom" + ], + "hash": "sha256-KXxfSYoHdIPvic06cQzSt/LlrjgPOjrt+5xBvGI7E0A=" + } + }, + "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22": { + "kotlin-build-tools-api-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar" + ], + "hash": "sha256-3UnLfij08zgvUlDPsFyGT9XwqW0yZbspPHezCtzJP/Y=" + }, + "kotlin-build-tools-api-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom" + ], + "hash": "sha256-DFZLu4fcXs32Q005buob886Xar8IgYCN0Wb6SbBGSfs=" + } + }, + "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22": { + "kotlin-build-tools-impl-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar" + ], + "hash": "sha256-G0jW3gQqUl9jtVdROuEmbWmTSCJbAT+UDjLGPeJolCg=" + }, + "kotlin-build-tools-impl-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom" + ], + "hash": "sha256-tWM/E0m+lcdHRuHimiqm51LoneGrmmUjSS85j6aVWN0=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22": { + "kotlin-compiler-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar" + ], + "hash": "sha256-K/6t7lmrGYjDNtvW5l2ZH3Zq4d2Gg/Km3tX6oCefDKA=" + }, + "kotlin-compiler-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom" + ], + "hash": "sha256-s9o0u29ClqzzoPRDRm8FBsbJnaXNliTW4LdFsiKHhOs=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22": { + "kotlin-compiler-runner-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar" + ], + "hash": "sha256-c+x1u5nr/6iySiSjuFPz9mCWvEapNRrw2sk967acFes=" + }, + "kotlin-compiler-runner-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom" + ], + "hash": "sha256-pO6KZ8HW8lODjAAnKAvLgFCsDc3MrZdIlhOKaaAX6wE=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client:1.9.22": { + "kotlin-daemon-client-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar" + ], + "hash": "sha256-XXPhgVsRZ+Sv4gjwCyp1wIC8WoEHhsqtuOFHh1k6k7k=" + }, + "kotlin-daemon-client-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom" + ], + "hash": "sha256-YsRKZZ2lXbb7El4pKbmNUEow4fSvgU4I5JIUJqpST4o=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22": { + "kotlin-daemon-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar" + ], + "hash": "sha256-kqV4ExcUR9U0Rh+hP+N9yM07f4bYPpsfe7GwvjBUH4s=" + }, + "kotlin-daemon-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom" + ], + "hash": "sha256-9uo9z2v7Og0GmER8SKa88I2Oqs+D/JX+nUGBpeXjwrE=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22": { + "kotlin-gradle-plugin-1.9.22-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar" + ], + "hash": "sha256-1OcY3V8wxrqTLZPM/FswFendPkQUOgUrh3Ao8frlQtw=" + }, + "kotlin-gradle-plugin-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module" + ], + "hash": "sha256-pPRqwMq9jVzbaJ0tN9GdWFhPcIv59k/+TpgKL/dTS7U=" + }, + "kotlin-gradle-plugin-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom" + ], + "hash": "sha256-A3750tSupA9JKdglE1g+STwOBRVuDaix1/Ujurhobyc=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22": { + "kotlin-gradle-plugin-annotations-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar" + ], + "hash": "sha256-lnaDy5jZkQFFYH+/W0VilbQ/Cq+Tsbunv2mS5zHLJOw=" + }, + "kotlin-gradle-plugin-annotations-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom" + ], + "hash": "sha256-Y7por+B4/3D3CPnpecaTxFv+iQQfeWQbC4H2tKEm7rs=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22": { + "kotlin-gradle-plugin-api-1.9.22-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar" + ], + "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" + }, + "kotlin-gradle-plugin-api-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar" + ], + "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" + }, + "kotlin-gradle-plugin-api-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module" + ], + "hash": "sha256-H0SJxTBPmlEqVof/zAqvCTCvydcgUdOpBfrAcANi+3s=" + }, + "kotlin-gradle-plugin-api-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom" + ], + "hash": "sha256-ZAFewaGutVCqGCjCQuIoODDFD2g2TkCDH+FYj9wEEfU=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22": { + "kotlin-gradle-plugin-idea-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar" + ], + "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" + }, + "kotlin-gradle-plugin-idea-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module" + ], + "hash": "sha256-z+LCbjMPaAMsAD+lJMAx5aYPzo2Jn/8uQjFBKL60QCs=" + }, + "kotlin-gradle-plugin-idea-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom" + ], + "hash": "sha256-3BSjKHVDun5QRs1OCVAtJ4hMqYfshwb1+xid54luOsw=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22": { + "kotlin-gradle-plugin-idea-proto-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar" + ], + "hash": "sha256-9dgu5hlmotmK364Z8k1hcwIsFUBIls3yNjQANe5owPU=" + }, + "kotlin-gradle-plugin-idea-proto-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom" + ], + "hash": "sha256-huMsqCkn2ogKHPNDpA7MIJgHXm/XInOzTVDfpUTzRjs=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22": { + "kotlin-gradle-plugin-model-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar" + ], + "hash": "sha256-UQj61b4UmCXs46ABA8PCHPGv6VS7ZLhweJVyk511OMs=" + }, + "kotlin-gradle-plugin-model-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module" + ], + "hash": "sha256-L/MBPfK6epteiwBOhIF1DI0PqVOtAHoZbYXSY2cdvq4=" + }, + "kotlin-gradle-plugin-model-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom" + ], + "hash": "sha256-gfUmlHml2X7oeSpITIMr495DgggSZxlhUAHKyI5C9qg=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22": { + "kotlin-gradle-plugins-bom-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module" + ], + "hash": "sha256-Qj401h0iCxoN3BgUCGqM6rTa2ed5ArDOjLRyG789xu0=" + }, + "kotlin-gradle-plugins-bom-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom" + ], + "hash": "sha256-da2/XHjOJHwiuvNijQs/8c9+19N9YB66cwTXerdb3Z8=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22": { + "kotlin-klib-commonizer-api-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar" + ], + "hash": "sha256-jC9lQpwYLi5KLgnLkQ5iuW227tKFWUuPga+CO35ZROI=" + }, + "kotlin-klib-commonizer-api-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom" + ], + "hash": "sha256-EMrJcNMAo0icM/CzBBVv8DLZWVm+WqrDuIAoKtWGIv4=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22": { + "kotlin-klib-commonizer-embeddable-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar" + ], + "hash": "sha256-c/50PnTSEoPTg9C6voX9CMRCr8GnvYgIL42gUQ0FPUs=" + }, + "kotlin-klib-commonizer-embeddable-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom" + ], + "hash": "sha256-dxghItppe2YqSRPX3Z/mu68ATOhH/YZ9oj6v8MTIJEs=" + } + }, + "org.jetbrains.kotlin:kotlin-native-utils:1.9.22": { + "kotlin-native-utils-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar" + ], + "hash": "sha256-eGwSfdVTXbLDmuWXzQsMrZ6RS4PiNvHbAlEjXMnGUqw=" + }, + "kotlin-native-utils-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom" + ], + "hash": "sha256-EcUUwF7qOuno4Wq0l5bxEd9DxzSCMeNfr0xCjMT3Q+o=" + } + }, + "org.jetbrains.kotlin:kotlin-project-model:1.9.22": { + "kotlin-project-model-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar" + ], + "hash": "sha256-zBHVwLGQnFsKCP0l7w51T/0r9Wyu9mX7eFEiI15UKhg=" + }, + "kotlin-project-model-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom" + ], + "hash": "sha256-659KFngb/ADM7IAw++XuIo5vKydxxQwmezIY/rAGW0A=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.9.23": { + "kotlin-reflect-1.9.23.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.jar" + ], + "hash": "sha256-dHwpJ6Yjtuu3NLRl1qJoYukg3dGCjvQ3Foh8CEmjEx8=" + }, + "kotlin-reflect-1.9.23.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.pom" + ], + "hash": "sha256-WXD72CdKWAyk6I/nhkeMR8i5ufo3TFsK3ekyhFYiX2o=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.9.22": { + "kotlin-reflect-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar" + ], + "hash": "sha256-d/MRyhOEgR1Rn9o4n8sSaL2qBY1gUEbg7edsA7DfPpc=" + }, + "kotlin-reflect-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom" + ], + "hash": "sha256-xxLjWN97kxi2j1RjlxsIhnODf8DKQoXRw4LIEC7da18=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.8.22": { + "kotlin-reflect-1.8.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.jar" + ], + "hash": "sha256-ZVgl+mURIg/tDK5arU3+oqv5j9EPCud+uNr2q/zQ8Cc=" + }, + "kotlin-reflect-1.8.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.pom" + ], + "hash": "sha256-KeHqCKPTq0gtH9/UH76TRZEt9Gbbr6+0sS0YN8cr4yg=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.6.10": { + "kotlin-reflect-1.6.10.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" + ], + "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" + }, + "kotlin-reflect-1.6.10.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" + ], + "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime:1.9.22": { + "kotlin-script-runtime-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar" + ], + "hash": "sha256-uAZwV59/ktRz2NWDTwsST3dVxFmP6UskQYOwKDSDRXQ=" + }, + "kotlin-script-runtime-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom" + ], + "hash": "sha256-/ra0ns9pEG1MEoXnH5ob2noSfO9oMC4+n9yCmKTjR5U=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common:1.9.22": { + "kotlin-scripting-common-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar" + ], + "hash": "sha256-+lAMvwNJQ++BJvPT3GWvCf+Z3//kTFCZtPwu1b8vXcc=" + }, + "kotlin-scripting-common-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom" + ], + "hash": "sha256-ROURI7DCfm/ZM/wma00Nrw8GhKYq7Z/mhC6Noz8qKz8=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22": { + "kotlin-scripting-compiler-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar" + ], + "hash": "sha256-Ij/shIMCNEmc1MeiPqHJLroSfEGzXZux1LYdJBVa6zU=" + }, + "kotlin-scripting-compiler-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom" + ], + "hash": "sha256-wWCPP7yyqfdSPq0zWZwurc5MgSFhqeBmufSwBa97Qxw=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22": { + "kotlin-scripting-compiler-impl-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar" + ], + "hash": "sha256-OJkYFqKH/3YkHxp35/ERZIHU6To9tjJZplfd4g5tD2U=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom" + ], + "hash": "sha256-gmccM6lXsuKoINZqaSwvzmPjvwR/HLJeb7A5HF3c8uc=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22": { + "kotlin-scripting-jvm-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar" + ], + "hash": "sha256-jRJ9dvz6BRfDbB6g4ijs4D1aRoJkKgH2R5prvccxKik=" + }, + "kotlin-scripting-jvm-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom" + ], + "hash": "sha256-cBJS6huo/4f8M0dqYePVxtnS3aQbqpiZTdaYDuE/vG0=" + } + }, + "org.jetbrains.kotlin:kotlin-serialization:1.9.22": { + "kotlin-serialization-1.9.22-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22-gradle82.jar" + ], + "hash": "sha256-AcrgEEPdT3sLAttWbZPHVoiwlsNAkJ9o0OSVcqvF6VQ=" + }, + "kotlin-serialization-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.module" + ], + "hash": "sha256-s3cuUZFg/is2t9G6MkGQYU27lLFZzmBk9M1z+RhhWiI=" + }, + "kotlin-serialization-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.pom" + ], + "hash": "sha256-D9yUsPEx2Ct3RpAEB0r0f/yntGfVeIn762oVSWg+rL0=" + } + }, + "org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:1.9.22": { + "kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar" + ], + "hash": "sha256-OFR9AAsWYbFLkkZxz7F6tSAL64NOOj2kJ37gkGLppQA=" + }, + "kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom" + ], + "hash": "sha256-i8LheiTLbQ4CMzLkjKq5e3P+MyuSdVWhGjAsb1xcPGQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.9.23": { + "kotlin-stdlib-1.9.23-all.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23-all.jar" + ], + "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" + }, + "kotlin-stdlib-1.9.23.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.jar" + ], + "hash": "sha256-iRDMI4gH2G71UMsfCxDdXtQLNaTsGlJSX3YK7ehOrTc=" + }, + "kotlin-stdlib-1.9.23.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.module" + ], + "hash": "sha256-UZUZOzfc2touHAqw1RLEIrKtdq81V4Q6G5w0gPTnHQ4=" + }, + "kotlin-stdlib-1.9.23.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.pom" + ], + "hash": "sha256-wm0n8mcQrUDiPu2f/gpkuFkejBPSI8ypDFk+5j87KKs=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.9.22": { + "kotlin-stdlib-1.9.22-all.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar" + ], + "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" + }, + "kotlin-stdlib-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar" + ], + "hash": "sha256-ar4UbCeGQTi4dMzM/l9TTj65I8maG3tdRUlO5WlPPgo=" + }, + "kotlin-stdlib-1.9.22.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module" + ], + "hash": "sha256-9IIxS1B5wUVfb7DUJXp0XRAcYSTOlhUiuob53JCQHkc=" + }, + "kotlin-stdlib-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom" + ], + "hash": "sha256-zOLxUoXsgHijd0a1cwigVAQt1cwlQgxD9zt4V8JGjwM=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.23": { + "kotlin-stdlib-common-1.9.23.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.module" + ], + "hash": "sha256-hjnwBfqZd67wjDL8jnonedoi7iYkZNcnMpiq/Ug3Fc0=" + }, + "kotlin-stdlib-common-1.9.23.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.pom" + ], + "hash": "sha256-OuBxRYdw47aGCafTGet5emeJ9fBAyqQUQJgJmGhb5PY=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22": { + "kotlin-stdlib-common-1.9.22.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.22/kotlin-stdlib-common-1.9.22.module" + ], + "hash": "sha256-+Tyemr+NUtjo/Y6FGqgC7OxVEyFhxK7ufTzZJL95QkY=" + }, + "kotlin-stdlib-common-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.22/kotlin-stdlib-common-1.9.22.pom" + ], + "hash": "sha256-10k21oh1ZK63EOhCmLVCB/U+m88jpSrSv6IsIIZ3V2c=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.22": { + "kotlin-stdlib-jdk7-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.jar" + ], + "hash": "sha256-+R8kz606dWaIo1Ep5fM1SA0OtAjxVooX9wfCifh2m90=" + }, + "kotlin-stdlib-jdk7-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.pom" + ], + "hash": "sha256-SHnKgQKDPIraP0bHep/6+uGXDK/AvGIfUSAbatl0zp0=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.21": { + "kotlin-stdlib-jdk7-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.jar" + ], + "hash": "sha256-v+IfQkbIvKNQsYQEBv+803awXto36ypksBHeGMLKeBg=" + }, + "kotlin-stdlib-jdk7-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.pom" + ], + "hash": "sha256-AVFiDhh0XvJ2ECNw/GdHBPcN821kgsxBmh5S263Cg2I=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22": { + "kotlin-stdlib-jdk7-1.8.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.jar" + ], + "hash": "sha256-BV9cskKH+hBhAJlae0erkhJrgegy6HX1+izwvVVpPQs=" + }, + "kotlin-stdlib-jdk7-1.8.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.pom" + ], + "hash": "sha256-T5WKqZPVmE+PXr7UFGVipfOp9pW2BJyfKHOBN5ytqzM=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.22": { + "kotlin-stdlib-jdk8-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.jar" + ], + "hash": "sha256-RwRsPtwy/g2xo2v+PTgilYu1vkQRxbqA866JWj7CcpE=" + }, + "kotlin-stdlib-jdk8-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.pom" + ], + "hash": "sha256-yUBIJZxtAAdXi6r+tx74/3ut6wjy1ZQ3/DllHg+396s=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.21": { + "kotlin-stdlib-jdk8-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.jar" + ], + "hash": "sha256-BwLWS6qpDlxW5GdzeCTJvjreHlFWJHPBQ60DWByVUSc=" + }, + "kotlin-stdlib-jdk8-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.pom" + ], + "hash": "sha256-J79Q6ETwZc0emFT8m8K9pRIrh4ZOoDBL1pW7En0AMvQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22": { + "kotlin-stdlib-jdk8-1.8.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.jar" + ], + "hash": "sha256-QZiw6vCQpPJbb35aWVgfQxS6jJ9s0dE+6dNI5l7Y9wc=" + }, + "kotlin-stdlib-jdk8-1.8.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.pom" + ], + "hash": "sha256-ko8hhyF0djE8uBbUgHC8dlSqO5pa6B0/xfjCecyPjZ4=" + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core:1.9.22": { + "kotlin-tooling-core-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar" + ], + "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" + }, + "kotlin-tooling-core-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom" + ], + "hash": "sha256-FPx/NcY15fzRvqU3q0+kQxLoQyUtUzNRnjaxJeoImyE=" + } + }, + "org.jetbrains.kotlin:kotlin-util-io:1.9.22": { + "kotlin-util-io-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar" + ], + "hash": "sha256-9telhJGjeLCDrRvq1IikheEdFgsx52wYwa1SDx0o9Gs=" + }, + "kotlin-util-io-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom" + ], + "hash": "sha256-ZP1qINbsBAE7ttdWJ/ZYC7c2QdlIkJ1cFmTi53MQbe4=" + } + }, + "org.jetbrains.kotlin:kotlin-util-klib:1.9.22": { + "kotlin-util-klib-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar" + ], + "hash": "sha256-pnnuL1EPOrkmkYGN5etbCQLobYjJdnTn20TcTyJSxfk=" + }, + "kotlin-util-klib-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom" + ], + "hash": "sha256-Dep9//Cit0CIrJlwQ8vCQINdK/9Zs5/MiwysbqPrNpc=" + } + }, + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.9.22": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.9.22/org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom" + ], + "hash": "sha256-HLTsuTPJGbL7/XZe/KX+SQeghxLoyZQsM6IIsrFpsYw=" + } + }, + "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin:1.9.22": { + "org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.22/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom" + ], + "hash": "sha256-+9WDi7OolDJys/EfhJrIlDeJL9MJstA012QjjEVPoyI=" + } + }, + "org.jetbrains.kotlinx:atomicfu:0.23.1": { + "atomicfu-0.23.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.jar" + ], + "hash": "sha256-fbhmDr5LkbtHjts2FsTjpQulnAfcpRfR4ShMA/6GrFc=" + }, + "atomicfu-0.23.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.module" + ], + "hash": "sha256-Pokf5ja1UQgZIQD884saObzRwlM+I8Ri/AdkTur8sg8=" + }, + "atomicfu-0.23.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.pom" + ], + "hash": "sha256-aIt5ABn0F87APmldZWexc7o7skGJVBZi8U/2ZEG1Pas=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1": { + "kotlinx-coroutines-bom-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.1/kotlinx-coroutines-bom-1.8.1.pom" + ], + "hash": "sha256-Vj5Kop+o/gmm4XRtCltRMI98fe3EaNxaDKgQpIWHcDA=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0": { + "kotlinx-coroutines-bom-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.0/kotlinx-coroutines-bom-1.8.0.pom" + ], + "hash": "sha256-Ejnp2+E5fNWXE0KVayURvDrOe2QYQuQ3KgiNz6i5rVU=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.1": { + "kotlinx-coroutines-bom-1.7.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.7.1/kotlinx-coroutines-bom-1.7.1.pom" + ], + "hash": "sha256-uSWqmIxApceqDHeyE3P+sYw5QUkmvVHHbvRENPW66cI=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1": { + "kotlinx-coroutines-core-1.8.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.jar" + ], + "hash": "sha256-2vUPHJQEsiSh1t1Shvjo7n1j/oB/eOqY9xeVwYO2Al8=" + }, + "kotlinx-coroutines-core-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.module" + ], + "hash": "sha256-CMuvMyW1Tg+O+NqF5OtZb32Ub4Q+XRYAOFRj8yaKTvA=" + }, + "kotlinx-coroutines-core-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.pom" + ], + "hash": "sha256-+IkY2/qHh8TRcasCVToUrR3viqmwxcLCDMmUVdMkHiI=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0": { + "kotlinx-coroutines-core-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.jar" + ], + "hash": "sha256-IKpDS2qTDqZtLmGwDe764J/qPTL5ZA0uDCcTEogOCt0=" + }, + "kotlinx-coroutines-core-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.module" + ], + "hash": "sha256-FE7s1TZd4+MNe0YibAWAUeOZVbXBieMfpMfP+5nWILo=" + }, + "kotlinx-coroutines-core-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.pom" + ], + "hash": "sha256-yglaS/iLR0+trOgzLBCXC3nLgBu/XfBHo5Ov4Ql28yE=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.1": { + "kotlinx-coroutines-core-jvm-1.8.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.jar" + ], + "hash": "sha256-89T13hw5G7zCDzs0Ncy6wBNSHna2kC19WWNewVwfeX4=" + }, + "kotlinx-coroutines-core-jvm-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.module" + ], + "hash": "sha256-CbgcnRHC3uvxM62HtweSfB8ECZy2Ee8AjHcls+swgyk=" + }, + "kotlinx-coroutines-core-jvm-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.pom" + ], + "hash": "sha256-R8alCxQVHo+vfzUKlSNcN9EqvDi/sFW2aJdCkxctryw=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0": { + "kotlinx-coroutines-core-jvm-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.jar" + ], + "hash": "sha256-mGCQahk3SQv187BtLw4Q70UeZblbJp8i2vaKPR9QZcU=" + }, + "kotlinx-coroutines-core-jvm-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.module" + ], + "hash": "sha256-/2oi2kAECTh1HbCuIRd+dlF9vxJqdnlvVCZye/dsEig=" + }, + "kotlinx-coroutines-core-jvm-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.pom" + ], + "hash": "sha256-pWM6vVNGfOuRYi2B8umCCAh3FF4LduG3V4hxVDSIXQs=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.1": { + "kotlinx-coroutines-debug-1.8.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.jar" + ], + "hash": "sha256-JFUwMZoX18m8ShFSb0LpV1Dkqz/IZMlA2evo9UjqGHA=" + }, + "kotlinx-coroutines-debug-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.module" + ], + "hash": "sha256-CA+LzOocTvqCk+0p/5z3xKfR0s3ekBzIZKz3Ly6AdXI=" + }, + "kotlinx-coroutines-debug-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.pom" + ], + "hash": "sha256-x9+Ci/O0+ofumYH7ATaN1NwHmV0XzLqPpmEhcTwF69Q=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.0": { + "kotlinx-coroutines-debug-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.jar" + ], + "hash": "sha256-Zy1UU0UXCoyrgoeygZRL55DWdUWXK+vdVKor9MhsxT8=" + }, + "kotlinx-coroutines-debug-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.module" + ], + "hash": "sha256-piquUrrd+ncw5Wey6kHzYOoQqbN8FiJDqNIaWnySHGI=" + }, + "kotlinx-coroutines-debug-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.pom" + ], + "hash": "sha256-EZPR60nUsUgNqlrGIBctfcmZFidM2Ra+NpQVLA5vb3w=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1": { + "kotlinx-coroutines-jdk8-1.8.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.jar" + ], + "hash": "sha256-2M+0w2PJHHczU7EVvUprWgRgjnkW/iNdOp2H78uZbAE=" + }, + "kotlinx-coroutines-jdk8-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.module" + ], + "hash": "sha256-Ifl7EL6TJkGBfTULclRP+LoyQYf/uREMbo2IESdv2TM=" + }, + "kotlinx-coroutines-jdk8-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.pom" + ], + "hash": "sha256-3uCuamO2M1ETIAqW2eHHgJ32DQ1CS7/xy7tTsxQWWvk=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.0": { + "kotlinx-coroutines-jdk8-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.jar" + ], + "hash": "sha256-2EGf2zy6quxAfmKrFL5WQ20edrW/MyRMV2VWH8E/0Gs=" + }, + "kotlinx-coroutines-jdk8-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.module" + ], + "hash": "sha256-HKyxz+5adTBFR1rzCF+4DcnMzjA3VKnVIApB3/W+AOk=" + }, + "kotlinx-coroutines-jdk8-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.pom" + ], + "hash": "sha256-4ZIahLHW5/k6SUgCfRhUHXWjDi6KZNem5DEAMZVR8r0=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.7.1": { + "kotlinx-coroutines-jdk8-1.7.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.module" + ], + "hash": "sha256-sJV+aTzxwefUrWJGqm4weV2/S/t1jB5LMv25wkQJuXM=" + }, + "kotlinx-coroutines-jdk8-1.7.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.pom" + ], + "hash": "sha256-x3kWU2lOpaVLnN1HCAgtv7i9apeKX0IYSxFBz7SjDnU=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1": { + "kotlinx-coroutines-test-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.module" + ], + "hash": "sha256-oc7i2rKWwTt47BwGDhj+QDNKRAyKB36QzKbeclJ9jN4=" + }, + "kotlinx-coroutines-test-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.pom" + ], + "hash": "sha256-TyiEIOjObP+RUgyfq9bK9o0C2GtkCp8hKPh6TkZtwlg=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0": { + "kotlinx-coroutines-test-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.module" + ], + "hash": "sha256-DsPHX/2ZpqLfto8wfy8vcxQckz5Yt3sQTxyMrDr9U5Q=" + }, + "kotlinx-coroutines-test-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.pom" + ], + "hash": "sha256-NV8/pvBjDl6ZuHxywcQ4YgKin0lpFeOHWaOK3gsGkAQ=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.1": { + "kotlinx-coroutines-test-jvm-1.8.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.jar" + ], + "hash": "sha256-xO8d6zG+P4HtguzyNyIMyViGhop+xSekGFmd//FZ3ts=" + }, + "kotlinx-coroutines-test-jvm-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.module" + ], + "hash": "sha256-+wj8JXyQBDPS35l71sKeBJzZ979UHAt3YYDgmYJB9XY=" + }, + "kotlinx-coroutines-test-jvm-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.pom" + ], + "hash": "sha256-4qht+xaCAWeYuVoPAGy0tdAQRsVaAS6hs2vSAjLcVXQ=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0": { + "kotlinx-coroutines-test-jvm-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.jar" + ], + "hash": "sha256-FTXMH0MjXYVm+NW8bRwR8HBBF+TlY/Ls5+aqPmhpXyA=" + }, + "kotlinx-coroutines-test-jvm-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.module" + ], + "hash": "sha256-HS0Zc6L0GowMEmPmCyXneS9ji4xV18ocbQZztkvlfac=" + }, + "kotlinx-coroutines-test-jvm-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.pom" + ], + "hash": "sha256-BtHlPqNm5to7FxkwV1+RYnzxnkUqTnqfDeMNLwQdZFE=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3": { + "kotlinx-serialization-bom-1.6.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.3/kotlinx-serialization-bom-1.6.3.pom" + ], + "hash": "sha256-KdaYQrt9RJviqkreakp85qpVgn0KsT0Wh0X+bZVzkzI=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.2": { + "kotlinx-serialization-bom-1.6.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.2/kotlinx-serialization-bom-1.6.2.pom" + ], + "hash": "sha256-ew4dde6GIUmc+VQwyhL9qjL0p/kg1cMBv+lfoYfyczc=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3": { + "kotlinx-serialization-core-1.6.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.jar" + ], + "hash": "sha256-L6Ba/w8zpw2oc8CaD/ZrXVTM3BXjnnykuCYz5wx5LzQ=" + }, + "kotlinx-serialization-core-1.6.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.module" + ], + "hash": "sha256-Nh6eMetylhdLdAhaxJ7dhKTzkAupQxpOQM0cI952oyg=" + }, + "kotlinx-serialization-core-1.6.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.pom" + ], + "hash": "sha256-0tv2/BU2TIlp1qq24+zMdROZU/LMBXtzDjUmdGWztX4=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2": { + "kotlinx-serialization-core-1.6.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.module" + ], + "hash": "sha256-arz0gTrJTfA3AS4xZzaKNEUHD9+OqyHQjYhtTtnC+2c=" + }, + "kotlinx-serialization-core-1.6.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.pom" + ], + "hash": "sha256-BibddZLIUwKToOPoHgiBltNRh3o422hHaTY3S6ZJ+S8=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3": { + "kotlinx-serialization-core-jvm-1.6.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.jar" + ], + "hash": "sha256-KcghqNTiXL/k8s6WzdRSb2H49OaaE1+WEqNKgdk7ZfE=" + }, + "kotlinx-serialization-core-jvm-1.6.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.module" + ], + "hash": "sha256-MpEE29NOS96QVhHUJ8dYTlPD+MQRg2+59pmsnbpbqmw=" + }, + "kotlinx-serialization-core-jvm-1.6.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.pom" + ], + "hash": "sha256-K0qolJn8AbMNHBB1lmmOCvQ0BBLVQBnFAdm6ayk7oro=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3": { + "kotlinx-serialization-json-1.6.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.jar" + ], + "hash": "sha256-jAAWiQp5q1mA3VIKWrGmc4AjwpqjtkN8SC4OX9wG2rE=" + }, + "kotlinx-serialization-json-1.6.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.module" + ], + "hash": "sha256-gNHYf6CmO/+Dleo5EL2oDQnw9YNQTd6o7QB7x6hrTNQ=" + }, + "kotlinx-serialization-json-1.6.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.pom" + ], + "hash": "sha256-KcIhdhjlMdfYMsyICupu0aj0B3PkN/WkHXC9FUaNPOM=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.3": { + "kotlinx-serialization-json-jvm-1.6.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.jar" + ], + "hash": "sha256-0yNBebz/GIbVPWfBHspH9/PPe2PDSdFpZfbbUbfz3Zo=" + }, + "kotlinx-serialization-json-jvm-1.6.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.module" + ], + "hash": "sha256-InoqmtOMAQsQe8gFjNYVF32lqqhts399WNSdnJt/l9A=" + }, + "kotlinx-serialization-json-jvm-1.6.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.pom" + ], + "hash": "sha256-eN9n0GTTuq8a9Ohi6YFGl3YpfGyHi7e/G0Ljky9vr48=" + } + }, + "org.junit:junit-bom:5.9.1": { + "junit-bom-5.9.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.module" + ], + "hash": "sha256-kCbBZWaQ+hRa117Og2dCEaoSrYkwqRsQfC9c3s4vGxw=" + }, + "junit-bom-5.9.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.pom" + ], + "hash": "sha256-sWPBz8j8H9WLRXoA1YbATEbphtdZBOnKVMA6l9ZbSWw=" + } + }, + "org.junit:junit-bom:5.8.2": { + "junit-bom-5.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.module" + ], + "hash": "sha256-QM+tmT+nDs3yr3TQxW2hSE7iIJZL6Pkyz+YyvponM/o=" + }, + "junit-bom-5.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom" + ], + "hash": "sha256-g2Bpyp6O48VuSDdiItopEmPxN70/0W2E/dR+/MPyhuI=" + } + }, + "org.junit:junit-bom:5.7.2": { + "junit-bom-5.7.2.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.module" + ], + "hash": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=" + }, + "junit-bom-5.7.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.pom" + ], + "hash": "sha256-zRSqqGmZH4ICHFhdVw0x/zQry6WLtEIztwGTdxuWSHs=" + } + }, + "org.junit.jupiter:junit-jupiter-api:5.8.2": { + "junit-jupiter-api-5.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar" + ], + "hash": "sha256-GAjuh+D3GM1uJfO3WvwXlWrIo+3EjH6bq58Z+aeeOAE=" + }, + "junit-jupiter-api-5.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.module" + ], + "hash": "sha256-fpr03/9iZ6zd0VfZ4Rug1dyRszL6dLxMZZOeRReht3A=" + }, + "junit-jupiter-api-5.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.pom" + ], + "hash": "sha256-yb3jYieVswp3NTHoXFgy+NyKp37N0xPu4jXJg8v9Anc=" + } + }, + "org.junit.platform:junit-platform-commons:1.8.2": { + "junit-platform-commons-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar" + ], + "hash": "sha256-0uAV/KcTDnmvL0YI3FRBXksQtZLXczPey0saJ0wYUFA=" + }, + "junit-platform-commons-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.module" + ], + "hash": "sha256-NChH0wRv6kNVlWkttPBdXwOeDh0eIE9NV1WQJVcIJiY=" + }, + "junit-platform-commons-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.pom" + ], + "hash": "sha256-zoUuNMahhKpsgO6N8EcXE6dAgTQTTwjjwcPdh8a1mrc=" + } + }, + "org.junit.platform:junit-platform-engine:1.8.2": { + "junit-platform-engine-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar" + ], + "hash": "sha256-C30AD4w+jl99a4GWSZNue5k4MU6HyPmDgFIY6ldWflk=" + }, + "junit-platform-engine-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.module" + ], + "hash": "sha256-66d7Nu/fdaZ/RkODM4JfnkSPVQ1SHnJJ2VA1hYDuY2s=" + }, + "junit-platform-engine-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.pom" + ], + "hash": "sha256-AWhkMmYGDtko71qBgjAD7PrnmpqMC7/Xb0IBxsnXccU=" + } + }, + "org.junit.platform:junit-platform-launcher:1.8.2": { + "junit-platform-launcher-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar" + ], + "hash": "sha256-giFWQJ/YPmguTFGZs0YAVCmbU4oFjCxtD1ybalvbdZQ=" + }, + "junit-platform-launcher-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.module" + ], + "hash": "sha256-4XQA7HvnYIwfiI1yG0MAHpc2wVDUD5jIoLzalWPYyus=" + }, + "junit-platform-launcher-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.pom" + ], + "hash": "sha256-tfancaautzyJpud/Vtcp9LqOta/dDxD0TbRNaq25UJU=" + } + }, + "org.junit.platform:junit-platform-suite-api:1.8.2": { + "junit-platform-suite-api-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.jar" + ], + "hash": "sha256-lO80OwW4dbsuTvlKfMYuYQ4bnNeCR+Ky7EPtYYoe0Kc=" + }, + "junit-platform-suite-api-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.module" + ], + "hash": "sha256-kwagU4n8QNetnQsSigFEMOXRyldKGErujXhns+iRC3o=" + }, + "junit-platform-suite-api-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.pom" + ], + "hash": "sha256-QB/ZdNa5RmRSS+y3z4B8TUfXxXSy+vGxMeukiUn+mJg=" + } + }, + "org.opentest4j:opentest4j:1.3.0": { + "opentest4j-1.3.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar" + ], + "hash": "sha256-SOLfY2yrZWPO1k3N/4q7I1VifLI27wvzdZhoLd90Lxs=" + }, + "opentest4j-1.3.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.module" + ], + "hash": "sha256-SL8dbItdyU90ZSvReQD2VN63FDUCSM9ej8onuQkMjg0=" + }, + "opentest4j-1.3.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.pom" + ], + "hash": "sha256-m/fP/EEPPoNywlIleN+cpW2dQ72TfjCUhwbCMqlDs1U=" + } + }, + "org.opentest4j:opentest4j:1.2.0": { + "opentest4j-1.2.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" + ], + "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" + }, + "opentest4j-1.2.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" + ], + "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" + } + }, + "org.ow2:ow2:1.5.1": { + "ow2-1.5.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/ow2/1.5.1/ow2-1.5.1.pom" + ], + "hash": "sha256-Mh3bt+5v5PU96mtM1tt0FU1r+kI5HB92OzYbn0hazwU=" + } + }, + "org.ow2.asm:asm:9.4": { + "asm-9.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.jar" + ], + "hash": "sha256-OdDis9xFr2Wgmwl5RXUKlKEm4FLhJPk0aEQ6HQ4V84E=" + }, + "asm-9.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.pom" + ], + "hash": "sha256-SDdR5I+y0fQ8Ya06sA/6Rm7cAzPY/C/bWibpXTKYI5Q=" + } + }, + "org.ow2.asm:asm-commons:9.4": { + "asm-commons-9.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.jar" + ], + "hash": "sha256-DBKKnsPzPJiVknL20WzxQke1CPWJUVdLzb0rVtYyY2Q=" + }, + "asm-commons-9.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.pom" + ], + "hash": "sha256-tCyiq8+IEXdqXdwCkPIQbX8xP4LHiw3czVzOTGOjUXk=" + } + }, + "org.ow2.asm:asm-tree:9.4": { + "asm-tree-9.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.jar" + ], + "hash": "sha256-xC1HnPJFZqIesgr37q7vToa9tKiGMGz3L0g7ZedbKs8=" + }, + "asm-tree-9.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.pom" + ], + "hash": "sha256-x+nvk73YqzYwMs5TgvzGTQAtbFicF1IzI2zSmOUaPBY=" + } + }, + "org.slf4j:slf4j-api:2.1.0-alpha1": { + "slf4j-api-2.1.0-alpha1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.jar" + ], + "hash": "sha256-mrf/pkYgK0mdBZlaPsgvMbzLelA0XBUU2MtC7IzOo1M=" + }, + "slf4j-api-2.1.0-alpha1.pom": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.pom", + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.pom" + ], + "hash": "sha256-QirqW+u6gwWzxhT6Zo7SKePJYQkw7PQvhzOO4F4minU=" + } + }, + "org.slf4j:slf4j-bom:2.1.0-alpha1": { + "slf4j-bom-2.1.0-alpha1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-bom/2.1.0-alpha1/slf4j-bom-2.1.0-alpha1.pom" + ], + "hash": "sha256-qOgTiZePRAcJJBuYPTHvp4cRO+EbgYwsa82e0wlv1IU=" + } + }, + "org.slf4j:slf4j-parent:2.1.0-alpha1": { + "slf4j-parent-2.1.0-alpha1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.1.0-alpha1/slf4j-parent-2.1.0-alpha1.pom" + ], + "hash": "sha256-zkc1sfnIId4Lkrjb5AsHHG6jIHMuWTVZxupt+WX4c48=" + } + }, + "org.slf4j:slf4j-simple:2.1.0-alpha1": { + "slf4j-simple-2.1.0-alpha1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.jar" + ], + "hash": "sha256-AU/trHoyKI7W+PcqEAfn+zKuxb/tsnFGfkluCVNIL3U=" + }, + "slf4j-simple-2.1.0-alpha1.pom": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.pom", + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.pom" + ], + "hash": "sha256-RgReG+EA94JLUITh83eCxoBJcEeKRXPejEmgfQOpSGM=" + } + }, + "org.sonatype.oss:oss-parent:9": { + "oss-parent-9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom" + ], + "hash": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno=" + } + }, + "org.sonatype.oss:oss-parent:7": { + "oss-parent-7.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" + ], + "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" + } + }, + "org.springframework:spring-framework-bom:5.3.24": { + "spring-framework-bom-5.3.24.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.module" + ], + "hash": "sha256-GZbh9hfLA/p26hGFD+Kh4gsOMKEEa6bV2zvbv0QRP84=" + }, + "spring-framework-bom-5.3.24.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.pom" + ], + "hash": "sha256-U1ITVmu77+Jjag1OjdGnOt5hLiQwyP/TENzCo7O5ukE=" + } + }, + "org.vafer:jdependency:2.8.0": { + "jdependency-2.8.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.jar" + ], + "hash": "sha256-v9LMfhv8eKqDtEwKVL8s3jikOC7CRyivaD2Y3GvngZI=" + }, + "jdependency-2.8.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.pom" + ], + "hash": "sha256-EBhn8/npJlei74mjELYE1D0JDJuQqj4LBS3NFqO78y0=" } } } \ No newline at end of file diff --git a/gradle-env.nix b/gradle-env.nix index 23e5185..9aa69c6 100644 --- a/gradle-env.nix +++ b/gradle-env.nix @@ -25,6 +25,7 @@ , fetchs3 , fetchurl , gradleGen +, maven , runCommandLocal , symlinkJoin , writeText @@ -32,7 +33,7 @@ }: { -# Path to the environment spec generated by gradle2nix (e.g. gradle-env.json). + # Path to the environment spec generated by gradle2nix (e.g. gradle-env.json). envSpec , pname ? "project" , version ? null @@ -70,12 +71,12 @@ let inherit (builtins) - attrValues concatStringsSep elemAt filter fromJSON getAttr head match + attrValues concatStringsSep elemAt filter fromJSON getAttr hasAttr head length match replaceStrings sort; inherit (lib) - assertMsg concatMapStringsSep groupBy' hasSuffix hasPrefix last mapAttrs - mapAttrsToList optionalString readFile removeSuffix unique versionAtLeast + assertMsg concatMapStringsSep foldl' groupBy' hasSuffix hasPrefix last mapAttrs + mapAttrsToList optionalAttrs optionalString readFile removeSuffix unique versionAtLeast versionOlder; inherit (lib.strings) sanitizeDerivationName; @@ -88,6 +89,31 @@ let module = elemAt coords 2; }; + parseVersion = version: + let + parts = builtins.split ":" version; + base = elemAt parts 0; + in + { + inherit base; + exact = base; + } + // optionalAttrs (length parts >= 2) ( + let + snapshot = elemAt parts 2; + exact = replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base; + parts = builtins.split "-" timestamp; + timestamp = findFirst (match "[0-9]{8}\.[0-9]{6}") parts; + buildNumber = let lastPart = last parts; in if match "[0-9]+" lastPart then lastPart else null; + in + { inherit snapshot exact timestamp buildNumber; } + ); + + snapshotVersion = { revision, snapshot ? null, ... }: + if snapshot == null + then revision + else replaceStrings ["SNAPSHOT"] [snapshot] revision; + fetchers' = { http = fetchurl; https = fetchurl; @@ -105,14 +131,63 @@ let in fetch' { urls = urls'; inherit hash; }; - mkDep = id: version: artifacts: + mkModuleMetadata = deps: + let + metadata = group: module: versions: + let + latest = foldl' + (l: v: if l == null || versionOlder l v then v else l) + null + versions; + + release = foldl' + (l: v: if !(hasSuffix "-SNAPSHOT" v) && (l == null || versionOlder l v) then v else l) + null + versions; + + path = "${replaceStrings ["."] ["/"] group}/${module}/maven-metadata.xml"; + + in + writeTextDir path '' + + + ${group} + ${module} + + ${optionalString (latest != null) "${latest}"} + ${optionalString (release != null) "${release}"} + + ${concatMapStringsSep "\n " (v: "${v}") versions} + + + + ''; + + groupedModules = groupBy + ({ organisation, module, ... }: "${organisation}:${module}") + (mapAttrsToList (_: dep: dep.attrs) deps); + + in + map + + + # mkSnapshotMetadata = { group, module }: version: artifacts: + # let + # versions' = filter (hasAttr "timestamp") versions; + + + # in + # map ({ base, exact, snapshot, timestamp, buildNumber }: + + # ) versions'; + + mkModule = { attrs, artifacts }: let - coords = toCoordinates id; - modulePath = "${replaceStrings ["."] ["/"] coords.group}/${coords.module}/${version}"; + modulePath = "${replaceStrings ["."] ["/"] attrs.orgPath}/${attrs.module}/${attrs.revision}"; in stdenv.mkDerivation { - pname = "${coords.group}-${coords.module}"; - version = version; + pname = "${attrs.group}-${attrs.module}"; + version = snapshotVersion attrs.revision; srcs = mapAttrsToList fetch artifacts; @@ -136,55 +211,8 @@ let allowSubstitutes = false; }; - mkModule = id: versions: - mapAttrsToList (version: artifacts: mkDep id version artifacts) versions; - - mkModuleMetadata = id: versions: - let - - modules = groupBy' - (meta: id: - let - isNewer = versionOlder meta.latest id.version; - isNewerRelease = - !(hasSuffix "-SNAPSHOT" id.version) && - versionOlder meta.release id.version; - in { - groupId = id.group; - artifactId = id.name; - latest = if isNewer then id.version else meta.latest; - release = if isNewerRelease then id.version else meta.release; - versions = meta.versions ++ [id.version]; - } - ) - { - latest = ""; - release = ""; - versions = []; - } - (id: "${replaceStrings ["."] ["/"] id.group}/${id.name}/maven-metadata.xml") - ids; - - in - attrValues (mapAttrs (path: meta: - let - versions' = sort versionOlder (unique meta.versions); - in - with meta; writeTextDir path '' - - - ${groupId} - ${artifactId} - - ${optionalString (latest != "") "${latest}"} - ${optionalString (release != "") "${release}"} - - ${concatMapStringsSep "\n " (v: "${v}") versions'} - - - - '' - ) modules); + mkModules = deps: + mapAttrsToList (_: m: mkModule m) deps; # mkSnapshotMetadata = deps: # let @@ -254,9 +282,8 @@ let # ) modules); mkRepo = name: deps: symlinkJoin { - name = "${name}-gradle-env"; - # paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps; - paths = mapAttrsToList mkModule deps; + name = "${name}-gradle-repo"; + paths = mkModules deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps; }; mkInitScript = projectSpec: gradle: @@ -396,31 +423,31 @@ let buildRootProject = buildProject projectEnv gradleFlags; -# in stdenv.mkDerivation (args // { + # in stdenv.mkDerivation (args // { -# inherit pname version; + # inherit pname version; -# nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ projectEnv.gradle ]; + # nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ projectEnv.gradle ]; -# buildPhase = args.buildPhase or '' -# runHook preBuild + # buildPhase = args.buildPhase or '' + # runHook preBuild -# ( -# set -eux + # ( + # set -eux -# # Work around https://github.com/gradle/gradle/issues/1055 -# TMPHOME="$(mktemp -d)" -# mkdir -p "$TMPHOME/init.d" -# export GRADLE_USER_HOME="$TMPHOME" + # # Work around https://github.com/gradle/gradle/issues/1055 + # TMPHOME="$(mktemp -d)" + # mkdir -p "$TMPHOME/init.d" + # export GRADLE_USER_HOME="$TMPHOME" -# ${buildIncludedProjects} -# ${buildRootProject} -# ) + # ${buildIncludedProjects} + # ${buildRootProject} + # ) -# runHook postBuild -# ''; + # runHook postBuild + # ''; -# dontStrip = true; -# }) + # dontStrip = true; + # }) in mkRepo pname (fromJSON (readFile envSpec)) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c95b0a0..35f2d24 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,7 @@ [versions] -gradle = "8.5" -kotlin = "1.9.21" +gradle = "8.7" +kotlin = "1.9.22" +ktor = "2.3.11" [libraries] clikt = "com.github.ajalt:clikt:+" @@ -11,8 +12,11 @@ junit-jupiter-params = "org.junit.jupiter:junit-jupiter-params:+" junit-platformLauncher = "org.junit.platform:junit-platform-launcher:+" kotest-runner = "io.kotest:kotest-runner-junit5:+" kotest-assertions = "io.kotest:kotest-assertions-core:+" +kotlinx-coroutines-core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:+" +ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor" } +ktor-server-netty = { module = "io.ktor:ktor-server-netty", version.ref = "ktor" } okio = "com.squareup.okio:okio:+" -serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:+" +serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3" slf4j-api = "org.slf4j:slf4j-api:+" slf4j-simple = "org.slf4j:slf4j-simple:+" xmlutil = "io.github.pdvrieze.xmlutil:serialization-jvm:+" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7f93135c49b765f8051ef9d0a6055ff8e46073d8..e6441136f3d4ba8a0da8d277868979cfbc8ad796 100644 GIT binary patch literal 43453 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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
NnX)EH+Nua)3Y(c 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鯊%1Et zwk~hMkhq;MOw^Q5`7oC{CUUyTw9x>^%*FHx^qJw(LB+E0WBX@{Ghw;)6aA-KyYg8p z7XDveQOpEr;B4je@2~usI5BlFadedX^ma{b{ypd|RNYqo#~d*mj&y`^iojR}s%~vF z(H!u`yx68D1Tj(3(m;Q+Ma}s2n#;O~bcB1`lYk%Irx60&-nWIUBr2x&@}@76+*zJ5 ze&4?q8?m%L9c6h=J$WBzbiTf1Z-0Eb5$IZs>lvm$>1n_Mezp*qw_pr8<8$6f)5f<@ zyV#tzMCs51nTv_5ca`x`yfE5YA^*%O_H?;tWYdM_kHPubA%vy47i=9>Bq) zRQ&0UwLQHeswmB1yP)+BiR;S+Vc-5TX84KUA;8VY9}yEj0eESSO`7HQ4lO z4(CyA8y1G7_C;6kd4U3K-aNOK!sHE}KL_-^EDl(vB42P$2Km7$WGqNy=%fqB+ zSLdrlcbEH=T@W8V4(TgoXZ*G1_aq$K^@ek=TVhoKRjw;HyI&coln|uRr5mMOy2GXP zwr*F^Y|!Sjr2YQXX(Fp^*`Wk905K%$bd03R4(igl0&7IIm*#f`A!DCarW9$h$z`kYk9MjjqN&5-DsH@8xh63!fTNPxWsFQhNv z#|3RjnP$Thdb#Ys7M+v|>AHm0BVTw)EH}>x@_f4zca&3tXJhTZ8pO}aN?(dHo)44Z z_5j+YP=jMlFqwvf3lq!57-SAuRV2_gJ*wsR_!Y4Z(trO}0wmB9%f#jNDHPdQGHFR; zZXzS-$`;7DQ5vF~oSgP3bNV$6Z(rwo6W(U07b1n3UHqml>{=6&-4PALATsH@Bh^W? z)ob%oAPaiw{?9HfMzpGb)@Kys^J$CN{uf*HX?)z=g`J(uK1YO^8~s1(ZIbG%Et(|q z$D@_QqltVZu9Py4R0Ld8!U|#`5~^M=b>fnHthzKBRr=i+w@0Vr^l|W;=zFT#PJ?*a zbC}G#It}rQP^Ait^W&aa6B;+0gNvz4cWUMzpv(1gvfw-X4xJ2Sv;mt;zb2Tsn|kSS zo*U9N?I{=-;a-OybL4r;PolCfiaL=y@o9{%`>+&FI#D^uy#>)R@b^1ue&AKKwuI*` zx%+6r48EIX6nF4o;>)zhV_8(IEX})NGU6Vs(yslrx{5fII}o3SMHW7wGtK9oIO4OM&@@ECtXSICLcPXoS|{;=_yj>hh*%hP27yZwOmj4&Lh z*Nd@OMkd!aKReoqNOkp5cW*lC)&C$P?+H3*%8)6HcpBg&IhGP^77XPZpc%WKYLX$T zsSQ$|ntaVVOoRat$6lvZO(G-QM5s#N4j*|N_;8cc2v_k4n6zx9c1L4JL*83F-C1Cn zaJhd;>rHXB%%ZN=3_o3&Qd2YOxrK~&?1=UuN9QhL$~OY-Qyg&})#ez*8NpQW_*a&kD&ANjedxT0Ar z<6r{eaVz3`d~+N~vkMaV8{F?RBVemN(jD@S8qO~L{rUw#=2a$V(7rLE+kGUZ<%pdr z?$DP|Vg#gZ9S}w((O2NbxzQ^zTot=89!0^~hE{|c9q1hVzv0?YC5s42Yx($;hAp*E zyoGuRyphQY{Q2ee0Xx`1&lv(l-SeC$NEyS~8iil3_aNlnqF_G|;zt#F%1;J)jnPT& z@iU0S;wHJ2$f!juqEzPZeZkjcQ+Pa@eERSLKsWf=`{R@yv7AuRh&ALRTAy z8=g&nxsSJCe!QLchJ=}6|LshnXIK)SNd zRkJNiqHwKK{SO;N5m5wdL&qK`v|d?5<4!(FAsDxR>Ky#0#t$8XCMptvNo?|SY?d8b z`*8dVBlXTUanlh6n)!EHf2&PDG8sXNAt6~u-_1EjPI1|<=33T8 zEnA00E!`4Ave0d&VVh0e>)Dc}=FfAFxpsC1u9ATfQ`-Cu;mhc8Z>2;uyXtqpLb7(P zd2F9<3cXS} znMg?{&8_YFTGRQZEPU-XPq55%51}RJpw@LO_|)CFAt62-_!u_Uq$csc+7|3+TV_!h z+2a7Yh^5AA{q^m|=KSJL+w-EWDBc&I_I1vOr^}P8i?cKMhGy$CP0XKrQzCheG$}G# zuglf8*PAFO8%xop7KSwI8||liTaQ9NCAFarr~psQt)g*pC@9bORZ>m`_GA`_K@~&% zijH0z;T$fd;-Liw8%EKZas>BH8nYTqsK7F;>>@YsE=Rqo?_8}UO-S#|6~CAW0Oz1} z3F(1=+#wrBJh4H)9jTQ_$~@#9|Bc1Pd3rAIA_&vOpvvbgDJOM(yNPhJJq2%PCcMaI zrbe~toYzvkZYQ{ea(Wiyu#4WB#RRN%bMe=SOk!CbJZv^m?Flo5p{W8|0i3`hI3Np# zvCZqY%o258CI=SGb+A3yJe~JH^i{uU`#U#fvSC~rWTq+K`E%J@ zasU07&pB6A4w3b?d?q}2=0rA#SA7D`X+zg@&zm^iA*HVi z009#PUH<%lk4z~p^l0S{lCJk1Uxi=F4e_DwlfHA`X`rv(|JqWKAA5nH+u4Da+E_p+ zVmH@lg^n4ixs~*@gm_dgQ&eDmE1mnw5wBz9Yg?QdZwF|an67Xd*x!He)Gc8&2!urh z4_uXzbYz-aX)X1>&iUjGp;P1u8&7TID0bTH-jCL&Xk8b&;;6p2op_=y^m@Nq*0{#o!!A;wNAFG@0%Z9rHo zcJs?Th>Ny6+hI`+1XoU*ED$Yf@9f91m9Y=#N(HJP^Y@ZEYR6I?oM{>&Wq4|v0IB(p zqX#Z<_3X(&{H+{3Tr|sFy}~=bv+l=P;|sBz$wk-n^R`G3p0(p>p=5ahpaD7>r|>pm zv;V`_IR@tvZreIuv2EM7ZQHhO+qUgw#kOs%*ekY^n|=1#x9&c;Ro&I~{rG-#_3ZB1 z?|9}IFdbP}^DneP*T-JaoYHt~r@EfvnPE5EKUwIxjPbsr$% zfWW83pgWST7*B(o=kmo)74$8UU)v0{@4DI+ci&%=#90}!CZz|rnH+Mz=HN~97G3~@ z;v5(9_2%eca(9iu@J@aqaMS6*$TMw!S>H(b z4(*B!|H|8&EuB%mITr~O?vVEf%(Gr)6E=>H~1VR z&1YOXluJSG1!?TnT)_*YmJ*o_Q@om~(GdrhI{$Fsx_zrkupc#y{DK1WOUR>tk>ZE) ziOLoBkhZZ?0Uf}cm>GsA>Rd6V8@JF)J*EQlQ<=JD@m<)hyElXR0`pTku*3MU`HJn| zIf7$)RlK^pW-$87U;431;Ye4Ie+l~_B3*bH1>*yKzn23cH0u(i5pXV! z4K?{3oF7ZavmmtTq((wtml)m6i)8X6ot_mrE-QJCW}Yn!(3~aUHYG=^fA<^~`e3yc z-NWTb{gR;DOUcK#zPbN^D*e=2eR^_!(!RKkiwMW@@yYtEoOp4XjOGgzi`;=8 zi3`Ccw1%L*y(FDj=C7Ro-V?q)-%p?Ob2ZElu`eZ99n14-ZkEV#y5C+{Pq87Gu3&>g zFy~Wk7^6v*)4pF3@F@rE__k3ikx(hzN3@e*^0=KNA6|jC^B5nf(XaoQaZN?Xi}Rn3 z$8&m*KmWvPaUQ(V<#J+S&zO|8P-#!f%7G+n_%sXp9=J%Z4&9OkWXeuZN}ssgQ#Tcj z8p6ErJQJWZ+fXLCco=RN8D{W%+*kko*2-LEb))xcHwNl~Xmir>kmAxW?eW50Osw3# zki8Fl$#fvw*7rqd?%E?}ZX4`c5-R&w!Y0#EBbelVXSng+kUfeUiqofPehl}$ormli zg%r)}?%=?_pHb9`Cq9Z|B`L8b>(!+8HSX?`5+5mm81AFXfnAt1*R3F z%b2RPIacKAddx%JfQ8l{3U|vK@W7KB$CdLqn@wP^?azRks@x8z59#$Q*7q!KilY-P zHUbs(IFYRGG1{~@RF;Lqyho$~7^hNC`NL3kn^Td%A7dRgr_&`2k=t+}D-o9&C!y^? z6MsQ=tc3g0xkK(O%DzR9nbNB(r@L;1zQrs8mzx&4dz}?3KNYozOW5;=w18U6$G4U2 z#2^qRLT*Mo4bV1Oeo1PKQ2WQS2Y-hv&S|C7`xh6=Pj7MNLC5K-zokZ67S)C;(F0Dd zloDK2_o1$Fmza>EMj3X9je7e%Q`$39Dk~GoOj89-6q9|_WJlSl!!+*{R=tGp z8u|MuSwm^t7K^nUe+^0G3dkGZr3@(X+TL5eah)K^Tn zXEtHmR9UIaEYgD5Nhh(s*fcG_lh-mfy5iUF3xxpRZ0q3nZ=1qAtUa?(LnT9I&~uxX z`pV?+=|-Gl(kz?w!zIieXT}o}7@`QO>;u$Z!QB${a08_bW0_o@&9cjJUXzVyNGCm8 zm=W+$H!;_Kzp6WQqxUI;JlPY&`V}9C$8HZ^m?NvI*JT@~BM=()T()Ii#+*$y@lTZBkmMMda>7s#O(1YZR+zTG@&}!EXFG{ zEWPSDI5bFi;NT>Yj*FjH((=oe%t%xYmE~AGaOc4#9K_XsVpl<4SP@E!TgC0qpe1oi zNpxU2b0(lEMcoibQ-G^cxO?ySVW26HoBNa;n0}CWL*{k)oBu1>F18X061$SP{Gu67 z-v-Fa=Fl^u3lnGY^o5v)Bux}bNZ~ z5pL+7F_Esoun8^5>z8NFoIdb$sNS&xT8_|`GTe8zSXQzs4r^g0kZjg(b0bJvz`g<70u9Z3fQILX1Lj@;@+##bP|FAOl)U^9U>0rx zGi)M1(Hce)LAvQO-pW!MN$;#ZMX?VE(22lTlJrk#pB0FJNqVwC+*%${Gt#r_tH9I_ z;+#)#8cWAl?d@R+O+}@1A^hAR1s3UcW{G+>;X4utD2d9X(jF555}!TVN-hByV6t+A zdFR^aE@GNNgSxxixS2p=on4(+*+f<8xrwAObC)D5)4!z7)}mTpb7&ofF3u&9&wPS< zB62WHLGMhmrmOAgmJ+|c>qEWTD#jd~lHNgT0?t-p{T=~#EMcB| z=AoDKOL+qXCfk~F)-Rv**V}}gWFl>liXOl7Uec_8v)(S#av99PX1sQIVZ9eNLkhq$ zt|qu0b?GW_uo}TbU8!jYn8iJeIP)r@;!Ze_7mj{AUV$GEz6bDSDO=D!&C9!M@*S2! zfGyA|EPlXGMjkH6x7OMF?gKL7{GvGfED=Jte^p=91FpCu)#{whAMw`vSLa`K#atdN zThnL+7!ZNmP{rc=Z>%$meH;Qi1=m1E3Lq2D_O1-X5C;!I0L>zur@tPAC9*7Jeh)`;eec}1`nkRP(%iv-`N zZ@ip-g|7l6Hz%j%gcAM}6-nrC8oA$BkOTz^?dakvX?`^=ZkYh%vUE z9+&)K1UTK=ahYiaNn&G5nHUY5niLGus@p5E2@RwZufRvF{@$hW{;{3QhjvEHMvduO z#Wf-@oYU4ht?#uP{N3utVzV49mEc9>*TV_W2TVC`6+oI)zAjy$KJrr=*q##&kobiQ z1vNbya&OVjK`2pdRrM?LuK6BgrLN7H_3m z!qpNKg~87XgCwb#I=Q&0rI*l$wM!qTkXrx1ko5q-f;=R2fImRMwt5Qs{P*p^z@9ex z`2#v(qE&F%MXlHpdO#QEZyZftn4f05ab^f2vjxuFaat2}jke{j?5GrF=WYBR?gS(^ z9SBiNi}anzBDBRc+QqizTTQuJrzm^bNA~A{j%ugXP7McZqJ}65l10({wk++$=e8O{ zxWjG!Qp#5OmI#XRQQM?n6?1ztl6^D40hDJr?4$Wc&O_{*OfMfxe)V0=e{|N?J#fgE>j9jAajze$iN!*yeF%jJU#G1c@@rm zolGW!j?W6Q8pP=lkctNFdfgUMg92wlM4E$aks1??M$~WQfzzzXtS)wKrr2sJeCN4X zY(X^H_c^PzfcO8Bq(Q*p4c_v@F$Y8cHLrH$`pJ2}=#*8%JYdqsqnGqEdBQMpl!Ot04tUGSXTQdsX&GDtjbWD=prcCT9(+ z&UM%lW%Q3yrl1yiYs;LxzIy>2G}EPY6|sBhL&X&RAQrSAV4Tlh2nITR?{6xO9ujGu zr*)^E`>o!c=gT*_@6S&>0POxcXYNQd&HMw6<|#{eSute2C3{&h?Ah|cw56-AP^f8l zT^kvZY$YiH8j)sk7_=;gx)vx-PW`hbSBXJGCTkpt;ap(}G2GY=2bbjABU5)ty%G#x zAi07{Bjhv}>OD#5zh#$0w;-vvC@^}F! z#X$@)zIs1L^E;2xDAwEjaXhTBw2<{&JkF*`;c3<1U@A4MaLPe{M5DGGkL}#{cHL%* zYMG+-Fm0#qzPL#V)TvQVI|?_M>=zVJr9>(6ib*#z8q@mYKXDP`k&A4A};xMK0h=yrMp~JW{L?mE~ph&1Y1a#4%SO)@{ zK2juwynUOC)U*hVlJU17%llUxAJFuKZh3K0gU`aP)pc~bE~mM!i1mi!~LTf>1Wp< zuG+ahp^gH8g8-M$u{HUWh0m^9Rg@cQ{&DAO{PTMudV6c?ka7+AO& z746QylZ&Oj`1aqfu?l&zGtJnpEQOt;OAFq19MXTcI~`ZcoZmyMrIKDFRIDi`FH)w; z8+*8tdevMDv*VtQi|e}CnB_JWs>fhLOH-+Os2Lh!&)Oh2utl{*AwR)QVLS49iTp{6 z;|172Jl!Ml17unF+pd+Ff@jIE-{Oxv)5|pOm@CkHW?{l}b@1>Pe!l}VccX#xp@xgJ zyE<&ep$=*vT=}7vtvif0B?9xw_3Gej7mN*dOHdQPtW5kA5_zGD zpA4tV2*0E^OUimSsV#?Tg#oiQ>%4D@1F5@AHwT8Kgen$bSMHD3sXCkq8^(uo7CWk`mT zuslYq`6Yz;L%wJh$3l1%SZv#QnG3=NZ=BK4yzk#HAPbqXa92;3K5?0kn4TQ`%E%X} z&>Lbt!!QclYKd6+J7Nl@xv!uD%)*bY-;p`y^ZCC<%LEHUi$l5biu!sT3TGGSTPA21 zT8@B&a0lJHVn1I$I3I1I{W9fJAYc+8 zVj8>HvD}&O`TqU2AAb={?eT;0hyL(R{|h23=4fDSZKC32;wWxsVj`P z3J3{M$PwdH!ro*Cn!D&=jnFR>BNGR<<|I8CI@+@658Dy(lhqbhXfPTVecY@L8%`3Q z1Fux2w?2C3th60jI~%OC9BtpNF$QPqcG+Pz96qZJ71_`0o0w_q7|h&O>`6U+^BA&5 zXd5Zp1Xkw~>M%RixTm&OqpNl8Q+ue=92Op_>T~_9UON?ZM2c0aGm=^A4ejrXj3dV9 zhh_bCt-b9`uOX#cFLj!vhZ#lS8Tc47OH>*)y#{O9?AT~KR9LntM|#l#Dlm^8{nZdk zjMl#>ZM%#^nK2TPzLcKxqx24P7R1FPlBy7LSBrRvx>fE$9AJ;7{PQm~^LBX^k#6Zq zw*Z(zJC|`!6_)EFR}8|n8&&Rbj8y028~P~sFXBFRt+tmqH-S3<%N;C&WGH!f3{7cm zy_fCAb9@HqaXa1Y5vFbxWf%#zg6SI$C+Uz5=CTO}e|2fjWkZ;Dx|84Ow~bkI=LW+U zuq;KSv9VMboRvs9)}2PAO|b(JCEC_A0wq{uEj|3x@}*=bOd zwr{TgeCGG>HT<@Zeq8y}vTpwDg#UBvD)BEs@1KP$^3$sh&_joQPn{hjBXmLPJ{tC) z*HS`*2+VtJO{|e$mM^|qv1R*8i(m1`%)}g=SU#T#0KlTM2RSvYUc1fP+va|4;5}Bfz98UvDCpq7}+SMV&;nX zQw~N6qOX{P55{#LQkrZk(e5YGzr|(B;Q;ju;2a`q+S9bsEH@i1{_Y0;hWYn1-79jl z5c&bytD*k)GqrVcHn6t-7kinadiD>B{Tl`ZY@`g|b~pvHh5!gKP4({rp?D0aFd_cN zhHRo4dd5^S6ViN(>(28qZT6E>??aRhc($kP`>@<+lIKS5HdhjVU;>f7<4))E*5|g{ z&d1}D|vpuV^eRj5j|xx9nwaCxXFG?Qbjn~_WSy=N}P0W>MP zG-F%70lX5Xr$a)2i6?i|iMyM|;Jtf*hO?=Jxj12oz&>P=1#h~lf%#fc73M2_(SUM- zf&qnjS80|_Y0lDgl&I?*eMumUklLe_=Td!9G@eR*tcPOgIShJipp3{A10u(4eT~DY zHezEj8V+7m!knn7)W!-5QI3=IvC^as5+TW1@Ern@yX| z7Nn~xVx&fGSr+L%4iohtS3w^{-H1A_5=r&x8}R!YZvp<2T^YFvj8G_vm}5q;^UOJf ztl=X3iL;;^^a#`t{Ae-%5Oq{?M#s6Npj+L(n-*LMI-yMR{)qki!~{5z{&`-iL}lgW zxo+tnvICK=lImjV$Z|O_cYj_PlEYCzu-XBz&XC-JVxUh9;6*z4fuBG+H{voCC;`~GYV|hj%j_&I zDZCj>Q_0RCwFauYoVMiUSB+*Mx`tg)bWmM^SwMA+?lBg12QUF_x2b)b?qb88K-YUd z0dO}3k#QirBV<5%jL$#wlf!60dizu;tsp(7XLdI=eQs?P`tOZYMjVq&jE)qK*6B^$ zBe>VvH5TO>s>izhwJJ$<`a8fakTL!yM^Zfr2hV9`f}}VVUXK39p@G|xYRz{fTI+Yq z20d=)iwjuG9RB$%$^&8#(c0_j0t_C~^|n+c`Apu|x7~;#cS-s=X1|C*YxX3ailhg_|0`g!E&GZJEr?bh#Tpb8siR=JxWKc{#w7g zWznLwi;zLFmM1g8V5-P#RsM@iX>TK$xsWuujcsVR^7TQ@!+vCD<>Bk9tdCo7Mzgq5 zv8d>dK9x8C@Qoh01u@3h0X_`SZluTb@5o;{4{{eF!-4405x8X7hewZWpz z2qEi4UTiXTvsa(0X7kQH{3VMF>W|6;6iTrrYD2fMggFA&-CBEfSqPlQDxqsa>{e2M z(R5PJ7uOooFc|9GU0ELA%m4&4Ja#cQpNw8i8ACAoK6?-px+oBl_yKmenZut#Xumjz zk8p^OV2KY&?5MUwGrBOo?ki`Sxo#?-Q4gw*Sh0k`@ zFTaYK2;}%Zk-68`#5DXU$2#=%YL#S&MTN8bF+!J2VT6x^XBci6O)Q#JfW{YMz) zOBM>t2rSj)n#0a3cjvu}r|k3od6W(SN}V-cL?bi*Iz-8uOcCcsX0L>ZXjLqk zZu2uHq5B|Kt>e+=pPKu=1P@1r9WLgYFq_TNV1p9pu0erHGd!+bBp!qGi+~4A(RsYN@CyXNrC&hxGmW)u5m35OmWwX`I+0yByglO`}HC4nGE^_HUs^&A(uaM zKPj^=qI{&ayOq#z=p&pnx@@k&I1JI>cttJcu@Ihljt?6p^6{|ds`0MoQwp+I{3l6` zB<9S((RpLG^>=Kic`1LnhpW2=Gu!x`m~=y;A`Qk!-w`IN;S8S930#vBVMv2vCKi}u z6<-VPrU0AnE&vzwV(CFC0gnZYcpa-l5T0ZS$P6(?9AM;`Aj~XDvt;Jua=jIgF=Fm? zdp=M$>`phx%+Gu};;-&7T|B1AcC#L4@mW5SV_^1BRbo6;2PWe$r+npRV`yc;T1mo& z+~_?7rA+(Um&o@Tddl zL_hxvWk~a)yY}%j`Y+200D%9$bWHy&;(yj{jpi?Rtz{J66ANw)UyPOm;t6FzY3$hx zcn)Ir79nhFvNa7^a{SHN7XH*|Vlsx`CddPnA&Qvh8aNhEA;mPVv;Ah=k<*u!Zq^7 z<=xs*iQTQOMMcg|(NA_auh@x`3#_LFt=)}%SQppP{E>mu_LgquAWvh<>L7tf9+~rO znwUDS52u)OtY<~!d$;m9+87aO+&`#2ICl@Y>&F{jI=H(K+@3M1$rr=*H^dye#~TyD z!){#Pyfn+|ugUu}G;a~!&&0aqQ59U@UT3|_JuBlYUpT$2+11;}JBJ`{+lQN9T@QFY z5+`t;6(TS0F?OlBTE!@7D`8#URDNqx2t6`GZ{ZgXeS@v%-eJzZOHz18aS|svxII$a zZeFjrJ*$IwX$f-Rzr_G>xbu@euGl)B7pC&S+CmDJBg$BoV~jxSO#>y z33`bupN#LDoW0feZe0%q8un0rYN|eRAnwDHQ6e_)xBTbtoZtTA=Fvk){q}9Os~6mQ zKB80VI_&6iSq`LnK7*kfHZoeX6?WE}8yjuDn=2#JG$+;-TOA1%^=DnXx%w{b=w}tS zQbU3XxtOI8E(!%`64r2`zog;5<0b4i)xBmGP^jiDZ2%HNSxIf3@wKs~uk4%3Mxz;~ zts_S~E4>W+YwI<-*-$U8*^HKDEa8oLbmqGg?3vewnaNg%Mm)W=)lcC_J+1ov^u*N3 zXJ?!BrH-+wGYziJq2Y#vyry6Z>NPgkEk+Ke`^DvNRdb>Q2Nlr#v%O@<5hbflI6EKE z9dWc0-ORk^T}jP!nkJ1imyjdVX@GrjOs%cpgA8-c&FH&$(4od#x6Y&=LiJZPINVyW z0snY$8JW@>tc2}DlrD3StQmA0Twck~@>8dSix9CyQOALcREdxoM$Sw*l!}bXKq9&r zysMWR@%OY24@e`?+#xV2bk{T^C_xSo8v2ZI=lBI*l{RciPwuE>L5@uhz@{!l)rtVlWC>)6(G)1~n=Q|S!{E9~6*fdpa*n z!()-8EpTdj=zr_Lswi;#{TxbtH$8*G=UM`I+icz7sr_SdnHXrv=?iEOF1UL+*6O;% zPw>t^kbW9X@oEXx<97%lBm-9?O_7L!DeD)Me#rwE54t~UBu9VZ zl_I1tBB~>jm@bw0Aljz8! zXBB6ATG6iByKIxs!qr%pz%wgqbg(l{65DP4#v(vqhhL{0b#0C8mq`bnqZ1OwFV z7mlZZJFMACm>h9v^2J9+^_zc1=JjL#qM5ZHaThH&n zXPTsR8(+)cj&>Un{6v*z?@VTLr{TmZ@-fY%*o2G}*G}#!bmqpoo*Ay@U!JI^Q@7gj;Kg-HIrLj4}#ec4~D2~X6vo;ghep-@&yOivYP zC19L0D`jjKy1Yi-SGPAn94(768Tcf$urAf{)1)9W58P`6MA{YG%O?|07!g9(b`8PXG1B1Sh0?HQmeJtP0M$O$hI z{5G`&9XzYhh|y@qsF1GnHN|~^ru~HVf#)lOTSrv=S@DyR$UKQk zjdEPFDz{uHM&UM;=mG!xKvp;xAGHOBo~>_=WFTmh$chpC7c`~7?36h)7$fF~Ii}8q zF|YXxH-Z?d+Q+27Rs3X9S&K3N+)OBxMHn1u(vlrUC6ckBY@@jl+mgr#KQUKo#VeFm zFwNYgv0<%~Wn}KeLeD9e1$S>jhOq&(e*I@L<=I5b(?G(zpqI*WBqf|Zge0&aoDUsC zngMRA_Kt0>La+Erl=Uv_J^p(z=!?XHpenzn$%EA`JIq#yYF?JLDMYiPfM(&Csr#f{ zdd+LJL1by?xz|D8+(fgzRs~(N1k9DSyK@LJygwaYX8dZl0W!I&c^K?7)z{2is;OkE zd$VK-(uH#AUaZrp=1z;O*n=b?QJkxu`Xsw&7yrX0?(CX=I-C#T;yi8a<{E~?vr3W> zQrpPqOW2M+AnZ&p{hqmHZU-;Q(7?- zP8L|Q0RM~sB0w1w53f&Kd*y}ofx@c z5Y6B8qGel+uT1JMot$nT1!Tim6{>oZzJXdyA+4euOLME?5Fd_85Uk%#E*ln%y{u8Q z$|?|R@Hpb~yTVK-Yr_S#%NUy7EBfYGAg>b({J|5b+j-PBpPy$Ns`PaJin4JdRfOaS zE|<HjH%NuJgsd2wOlv>~y=np%=2)$M9LS|>P)zJ+Fei5vYo_N~B0XCn+GM76 z)Xz3tg*FRVFgIl9zpESgdpWAavvVViGlU8|UFY{{gVJskg*I!ZjWyk~OW-Td4(mZ6 zB&SQreAAMqwp}rjy`HsG({l2&q5Y52<@AULVAu~rWI$UbFuZs>Sc*x+XI<+ez%$U)|a^unjpiW0l0 zj1!K0(b6$8LOjzRqQ~K&dfbMIE=TF}XFAi)$+h}5SD3lo z%%Qd>p9se=VtQG{kQ;N`sI)G^u|DN#7{aoEd zkksYP%_X$Rq08);-s6o>CGJ<}v`qs%eYf+J%DQ^2k68C%nvikRsN?$ap--f+vCS`K z#&~)f7!N^;sdUXu54gl3L=LN>FB^tuK=y2e#|hWiWUls__n@L|>xH{%8lIJTd5`w? zSwZbnS;W~DawT4OwSJVdAylbY+u5S+ZH{4hAi2&}Iv~W(UvHg(1GTZRPz`@{SOqzy z(8g&Dz=$PfRV=6FgxN~zo+G8OoPI&d-thcGVR*_^(R8COTM@bq?fDwY{}WhsQS1AK zF6R1t8!RdFmfocpJ6?9Yv~;WYi~XPgs(|>{5})j!AR!voO7y9&cMPo#80A(`za@t>cx<0;qxM@S*m(jYP)dMXr*?q0E`oL;12}VAep179uEr8c<=D zr5?A*C{eJ`z9Ee;E$8)MECqatHkbHH z&Y+ho0B$31MIB-xm&;xyaFCtg<{m~M-QDbY)fQ>Q*Xibb~8ytxZQ?QMf9!%cV zU0_X1@b4d+Pg#R!`OJ~DOrQz3@cpiGy~XSKjZQQ|^4J1puvwKeScrH8o{bscBsowomu z^f12kTvje`yEI3eEXDHJ6L+O{Jv$HVj%IKb|J{IvD*l6IG8WUgDJ*UGz z3!C%>?=dlfSJ>4U88)V+`U-!9r^@AxJBx8R;)J4Fn@`~k>8>v0M9xp90OJElWP&R5 zM#v*vtT}*Gm1^)Bv!s72T3PB0yVIjJW)H7a)ilkAvoaH?)jjb`MP>2z{%Y?}83 zUIwBKn`-MSg)=?R)1Q0z3b>dHE^)D8LFs}6ASG1|daDly_^lOSy&zIIhm*HXm1?VS=_iacG);_I9c zUQH1>i#*?oPIwBMJkzi_*>HoUe}_4o>2(SHWzqQ=;TyhAHS;Enr7!#8;sdlty&(>d zl%5cjri8`2X^Ds`jnw7>A`X|bl=U8n+3LKLy(1dAu8`g@9=5iw$R0qk)w8Vh_Dt^U zIglK}sn^)W7aB(Q>HvrX=rxB z+*L)3DiqpQ_%~|m=44LcD4-bxO3OO*LPjsh%p(k?&jvLp0py57oMH|*IMa(<|{m1(0S|x)?R-mqJ=I;_YUZA>J z62v*eSK;5w!h8J+6Z2~oyGdZ68waWfy09?4fU&m7%u~zi?YPHPgK6LDwphgaYu%0j zurtw)AYOpYKgHBrkX189mlJ`q)w-f|6>IER{5Lk97%P~a-JyCRFjejW@L>n4vt6#hq;!|m;hNE||LK3nw1{bJOy+eBJjK=QqNjI;Q6;Rp5 z&035pZDUZ#%Oa;&_7x0T<7!RW`#YBOj}F380Bq?MjjEhrvlCATPdkCTTl+2efTX$k zH&0zR1n^`C3ef~^sXzJK-)52(T}uTG%OF8yDhT76L~|^+hZ2hiSM*QA9*D5odI1>& z9kV9jC~twA5MwyOx(lsGD_ggYmztXPD`2=_V|ks_FOx!_J8!zM zTzh^cc+=VNZ&(OdN=y4Juw)@8-85lwf_#VMN!Ed(eQiRiLB2^2e`4dp286h@v@`O%_b)Y~A; zv}r6U?zs&@uD_+(_4bwoy7*uozNvp?bXFoB8?l8yG0qsm1JYzIvB_OH4_2G*IIOwT zVl%HX1562vLVcxM_RG*~w_`FbIc!(T=3>r528#%mwwMK}uEhJ()3MEby zQQjzqjWkwfI~;Fuj(Lj=Ug0y`>~C7`w&wzjK(rPw+Hpd~EvQ-ufQOiB4OMpyUKJhw zqEt~jle9d7S~LI~$6Z->J~QJ{Vdn3!c}g9}*KG^Kzr^(7VI5Gk(mHLL{itj_hG?&K4Ws0+T4gLfi3eu$N=`s36geNC?c zm!~}vG6lx9Uf^5M;bWntF<-{p^bruy~f?sk9 zcETAPQZLoJ8JzMMg<-=ju4keY@SY%Wo?u9Gx=j&dfa6LIAB|IrbORLV1-H==Z1zCM zeZcOYpm5>U2fU7V*h;%n`8 zN95QhfD994={1*<2vKLCNF)feKOGk`R#K~G=;rfq}|)s20&MCa65 zUM?xF5!&e0lF%|U!#rD@I{~OsS_?=;s_MQ_b_s=PuWdC)q|UQ&ea)DMRh5>fpQjXe z%9#*x=7{iRCtBKT#H>#v%>77|{4_slZ)XCY{s3j_r{tdpvb#|r|sbS^dU1x70$eJMU!h{Y7Kd{dl}9&vxQl6Jt1a` zHQZrWyY0?!vqf@u-fxU_@+}u(%Wm>0I#KP48tiAPYY!TdW(o|KtVI|EUB9V`CBBNaBLVih7+yMVF|GSoIQD0Jfb{ z!OXq;(>Z?O`1gap(L~bUcp>Lc@Jl-})^=6P%<~~9ywY=$iu8pJ0m*hOPzr~q`23eX zgbs;VOxxENe0UMVeN*>uCn9Gk!4siN-e>x)pIKAbQz!G)TcqIJ0`JBBaX>1-4_XO_-HCS^vr2vjv#7KltDZdyQ{tlWh4$Gm zB>|O1cBDC)yG(sbnc*@w6e%e}r*|IhpXckx&;sQCwGdKH+3oSG-2)Bf#x`@<4ETAr z0My%7RFh6ZLiZ_;X6Mu1YmXx7C$lSZ^}1h;j`EZd6@%JNUe=btBE z%s=Xmo1Ps?8G`}9+6>iaB8bgjUdXT?=trMu|4yLX^m0Dg{m7rpKNJey|EwHI+nN1e zL^>qN%5Fg)dGs4DO~uwIdXImN)QJ*Jhpj7$fq_^`{3fwpztL@WBB}OwQ#Epo-mqMO zsM$UgpFiG&d#)lzEQ{3Q;)&zTw;SzGOah-Dpm{!q7<8*)Ti_;xvV2TYXa}=faXZy? z3y?~GY@kl)>G&EvEijk9y1S`*=zBJSB1iet>0;x1Ai)*`^{pj0JMs)KAM=@UyOGtO z3y0BouW$N&TnwU6!%zS%nIrnANvZF&vB1~P5_d`x-giHuG zPJ;>XkVoghm#kZXRf>qxxEix;2;D1CC~NrbO6NBX!`&_$iXwP~P*c($EVV|669kDO zKoTLZNF4Cskh!Jz5ga9uZ`3o%7Pv`d^;a=cXI|>y;zC3rYPFLQkF*nv(r>SQvD*## z(Vo%^9g`%XwS0t#94zPq;mYGLKu4LU3;txF26?V~A0xZbU4Lmy`)>SoQX^m7fd^*E z+%{R4eN!rIk~K)M&UEzxp9dbY;_I^c} zOc{wlIrN_P(PPqi51k_$>Lt|X6A^|CGYgKAmoI#Li?;Wq%q~q*L7ehZkUrMxW67Jl zhsb~+U?33QS>eqyN{(odAkbopo=Q$Az?L+NZW>j;#~@wCDX?=L5SI|OxI~7!Pli;e zELMFcZtJY3!|=Gr2L4>z8yQ-{To>(f80*#;6`4IAiqUw`=Pg$%C?#1 z_g@hIGerILSU>=P>z{gM|DS91A4cT@PEIB^hSop!uhMo#2G;+tQSpDO_6nOnPWSLU zS;a9m^DFMXR4?*X=}d7l;nXuHk&0|m`NQn%d?8|Ab3A9l9Jh5s120ibWBdB z$5YwsK3;wvp!Kn@)Qae{ef`0#NwlRpQ}k^r>yos_Ne1;xyKLO?4)t_G4eK~wkUS2A&@_;)K0-03XGBzU+5f+uMDxC z(s8!8!RvdC#@`~fx$r)TKdLD6fWEVdEYtV#{ncT-ZMX~eI#UeQ-+H(Z43vVn%Yj9X zLdu9>o%wnWdvzA-#d6Z~vzj-}V3FQ5;axDIZ;i(95IIU=GQ4WuU{tl-{gk!5{l4_d zvvb&uE{%!iFwpymz{wh?bKr1*qzeZb5f6e6m_ozRF&zux2mlK=v_(_s^R6b5lu?_W4W3#<$zeG~Pd)^!4tzhs}-Sx$FJP>)ZGF(hVTH|C3(U zs0PO&*h_ zNA-&qZpTP$$LtIgfiCn07}XDbK#HIXdmv8zdz4TY;ifNIH-0jy(gMSByG2EF~Th#eb_TueZC` zE?3I>UTMpKQ})=C;6p!?G)M6w^u*A57bD?2X`m3X^6;&4%i_m(uGJ3Z5h`nwxM<)H z$I5m?wN>O~8`BGnZ=y^p6;0+%_0K}Dcg|K;+fEi|qoBqvHj(M&aHGqNF48~XqhtU? z^ogwBzRlOfpAJ+Rw7IED8lRbTdBdyEK$gPUpUG}j-M42xDj_&qEAQEtbs>D#dRd7Y z<&TpSZ(quQDHiCFn&0xsrz~4`4tz!CdL8m~HxZM_agu@IrBpyeL1Ft}V$HX_ZqDPm z-f89)pjuEzGdq-PRu`b1m+qBGY{zr_>{6Ss>F|xHZlJj9dt5HD$u`1*WZe)qEIuDSR)%z+|n zatVlhQ?$w#XRS7xUrFE;Y8vMGhQS5*T{ZnY=q1P?w5g$OKJ#M&e??tAmPWHMj3xhS ziGxapy?kn@$~2%ZY;M8Bc@%$pkl%Rvj!?o%agBvpQ-Q61n9kznC4ttrRNQ4%GFR5u zyv%Yo9~yxQJWJSfj z?#HY$y=O~F|2pZs22pu|_&Ajd+D(Mt!nPUG{|1nlvP`=R#kKH zO*s$r_%ss5h1YO7k0bHJ2CXN)Yd6CHn~W!R=SqkWe=&nAZu(Q1G!xgcUilM@YVei@2@a`8he z9@pM`)VB*=e7-MWgLlXlc)t;fF&-AwM{E-EX}pViFn0I0CNw2bNEnN2dj!^4(^zS3 zobUm1uQnpqk_4q{pl*n06=TfK_C>UgurKFjRXsK_LEn};=79`TB12tv6KzwSu*-C8 z;=~ohDLZylHQ|Mpx-?yql>|e=vI1Z!epyUpAcDCp4T|*RV&X`Q$0ogNwy6mFALo^@ z9=&(9txO8V@E!@6^(W0{*~CT>+-MA~vnJULBxCTUW>X5>r7*eXYUT0B6+w@lzw%n> z_VjJ<2qf|(d6jYq2(x$(ZDf!yVkfnbvNmb5c|hhZ^2TV_LBz`9w!e_V*W_(MiA7|= z&EeIIkw*+$Xd!)j8<@_<}A5;~A_>3JT*kX^@}cDoLd>Qj<`Se^wdUa(j0dp+Tl8EptwBm{9OGsdFEq zM`!pjf(Lm(`$e3FLOjqA5LnN5o!}z{ zNf}rJuZh@yUtq&ErjHeGzX4(!luV!jB&;FAP|!R_QHYw#^Z1LwTePAKJ6X&IDNO#; z)#I@Xnnzyij~C@UH~X51JCgQeF0&hTXnuoElz#m{heZRexWc0k4<>0+ClX7%0 zEBqCCld1tD9Zwkr4{?Nor19#E5-YKfB8d?qgR82-Ow2^AuNevly2*tHA|sK!ybYkX zm-sLQH72P&{vEAW6+z~O5d0qd=xW~rua~5a?ymYFSD@8&gV)E5@RNNBAj^C99+Z5Z zR@Pq55mbCQbz+Mn$d_CMW<-+?TU960agEk1J<>d>0K=pF19yN))a~4>m^G&tc*xR+yMD*S=yip-q=H zIlredHpsJV8H(32@Zxc@bX6a21dUV95Th--8pE6C&3F>pk=yv$yd6@Haw;$v4+Fcb zRwn{Qo@0`7aPa2LQOP}j9v>sjOo5Kqvn|`FLizX zB+@-u4Lw|jsvz{p^>n8Vo8H2peIqJJnMN}A)q6%$Tmig7eu^}K2 zrh$X?T|ZMsoh{6pdw1G$_T<`Ds-G=jc;qcGdK4{?dN2-XxjDNbb(7pk|3JUVCU4y; z)?LXR>f+AAu)JEiti_Zy#z5{RgsC}R(@jl%9YZ>zu~hKQ*AxbvhC378-I@{~#%Y`Z zy=a=9YpewPIC+gkEUUwtUL7|RU7=!^Aa}Mk^6uxOgRGA#JXjWLsjFUnix|Mau{hDT z7mn*z1m5g`vP(#tjT0Zy4eAY(br&!RiiXE=ZI!{sE1#^#%x^Z7t1U)b<;%Y}Q9=5v z;wpDCEZ@OE36TWT=|gxigT@VaW9BvHS05;_P(#s z8zI4XFQys}q)<`tkX$WnSarn{3e!s}4(J!=Yf>+Y>cP3f;vr63f2{|S^`_pWc)^5_!R z*(x-fuBxL51@xe!lnDBKi}Br$c$BMZ3%f2Sa6kLabiBS{pq*yj;q|k(86x`PiC{p6 z_bxCW{>Q2BA8~Ggz&0jkrcU+-$ANBsOop*ms>34K9lNYil@}jC;?cYP(m^P}nR6FV zk(M%48Z&%2Rx$A&FhOEirEhY0(dn;-k(qkTU)sFQ`+-ih+s@A8g?r8Pw+}2;35WYf zi}VO`jS`p(tc)$X$a>-#WXoW!phhatC*$}|rk>|wUU71eUJG^$c6_jwX?iSHM@6__ zvV|6%U*$sSXJu9SX?2%M^kK|}a2QJ8AhF{fuXrHZxXsI~O zGKX45!K7p*MCPEQ=gp?eu&#AW*pR{lhQR##P_*{c_DjMGL|3T3-bSJ(o$|M{ytU}> zAV>wq*uE*qFo9KvnA^@juy{x<-u*#2NvkV={Ly}ysKYB-k`K3@K#^S1Bb$8Y#0L0# z`6IkSG&|Z$ODy|VLS+y5pFJx&8tvPmMd8c9FhCyiU8~k6FwkakUd^(_ml8`rnl>JS zZV){9G*)xBqPz^LDqRwyS6w86#D^~xP4($150M)SOZRe9sn=>V#aG0Iy(_^YcPpIz8QYM-#s+n% z@Jd?xQq?Xk6=<3xSY7XYP$$yd&Spu{A#uafiIfy8gRC`o0nk{ezEDjb=q_qRAlR1d zFq^*9Gn)yTG4b}R{!+3hWQ+u3GT~8nwl2S1lpw`s0X_qpxv)g+JIkVKl${sYf_nV~B>Em>M;RlqGb5WVil(89 zs=ld@|#;dq1*vQGz=7--Br-|l) zZ%Xh@v8>B7P?~}?Cg$q9_={59l%m~O&*a6TKsCMAzG&vD>k2WDzJ6!tc!V)+oxF;h zJH;apM=wO?r_+*#;ulohuP=E>^zon}a$NnlcQ{1$SO*i=jnGVcQa^>QOILc)e6;eNTI>os=eaJ{*^DE+~jc zS}TYeOykDmJ=6O%>m`i*>&pO_S;qMySJIyP=}4E&J%#1zju$RpVAkZbEl+p%?ZP^C z*$$2b4t%a(e+%>a>d_f_<JjxI#J1x;=hPd1zFPx=6T$;;X1TD*2(edZ3f46zaAoW>L53vS_J*N8TMB|n+;LD| zC=GkQPpyDY#Am4l49chDv*gojhRj_?63&&8#doW`INATAo(qY#{q}%nf@eTIXmtU< zdB<7YWfyCmBs|c)cK>1)v&M#!yNj#4d$~pVfDWQc_ke1?fw{T1Nce_b`v|Vp5ig(H zJvRD^+ps46^hLX;=e2!2e;w9y1D@!D$c@Jc&%%%IL=+xzw55&2?darw=9g~>P z9>?Kdc$r?6c$m%x2S$sdpPl>GQZ{rC9mPS63*qjCVa?OIBj!fW zm|g?>CVfGXNjOfcyqImXR_(tXS(F{FcoNzKvG5R$IgGaxC@)i(e+$ME}vPVIhd|mx2IIE+f zM?9opQHIVgBWu)^A|RzXw!^??S!x)SZOwZaJkGjc<_}2l^eSBm!eAJG9T>EC6I_sy z?bxzDIAn&K5*mX)$RQzDA?s)-no-XF(g*yl4%+GBf`##bDXJ==AQk*xmnatI;SsLp zP9XTHq5mmS=iWu~9ES>b%Q=1aMa|ya^vj$@qz9S!ih{T8_PD%Sf_QrNKwgrXw9ldm zHRVR98*{C?_XNpJn{abA!oix_mowRMu^2lV-LPi;0+?-F(>^5#OHX-fPED zCu^l7u3E%STI}c4{J2!)9SUlGP_@!d?5W^QJXOI-Ea`hFMKjR7TluLvzC-ozCPn1`Tpy z!vlv@_Z58ILX6>nDjTp-1LlFMx~-%GA`aJvG$?8*Ihn;mH37eK**rmOEwqegf-Ccx zrIX4;{c~RK>XuTXxYo5kMiWMy)!IC{*DHG@E$hx?RwP@+wuad(P1{@%tRkyJRqD)3 zMHHHZ4boqDn>-=DgR5VlhQTpfVy182Gk;A_S8A1-;U1RR>+$62>(MUx@Nox$vTjHq z%QR=j!6Gdyb5wu7y(YUktwMuW5<@jl?m4cv4BODiT5o8qVdC0MBqGr@-YBIwnpZAY znX9(_uQjP}JJ=!~Ve9#5I~rUnN|P_3D$LqZcvBnywYhjlMSFHm`;u9GPla{5QD7(7*6Tb3Svr8;(nuAd81q$*uq6HC_&~je*Ca7hP4sJp0av{M8480wF zxASi7Qv+~@2U%Nu1Ud;s-G4CTVWIPyx!sg&8ZG0Wq zG_}i3C(6_1>q3w!EH7$Kwq8uBp2F2N7}l65mk1p*9v0&+;th=_E-W)E;w}P(j⁢ zv5o9#E7!G0XmdzfsS{efPNi`1b44~SZ4Z8fuX!I}#8g+(wxzQwUT#Xb2(tbY1+EUhGKoT@KEU9Ktl>_0 z%bjDJg;#*gtJZv!-Zs`?^}v5eKmnbjqlvnSzE@_SP|LG_PJ6CYU+6zY6>92%E+ z=j@TZf-iW4(%U{lnYxQA;7Q!b;^brF8n0D>)`q5>|WDDXLrqYU_tKN2>=#@~OE7grMnNh?UOz-O~6 z6%rHy{#h9K0AT+lDC7q4{hw^|q6*Ry;;L%Q@)Ga}$60_q%D)rv(CtS$CQbpq9|y1e zRSrN4;$Jyl{m5bZw`$8TGvb}(LpY{-cQ)fcyJv7l3S52TLXVDsphtv&aPuDk1OzCA z4A^QtC(!11`IsNx_HnSy?>EKpHJWT^wmS~hc^p^zIIh@9f6U@I2 zC=Mve{j2^)mS#U$e{@Q?SO6%LDsXz@SY+=cK_QMmXBIU)j!$ajc-zLx3V60EXJ!qC zi<%2x8Q24YN+&8U@CIlN zrZkcT9yh%LrlGS9`G)KdP(@9Eo-AQz@8GEFWcb7U=a0H^ZVbLmz{+&M7W(nXJ4sN8 zJLR7eeK(K8`2-}j(T7JsO`L!+CvbueT%izanm-^A1Dn{`1Nw`9P?cq;7no+XfC`K(GO9?O^5zNIt4M+M8LM0=7Gz8UA@Z0N+lg+cX)NfazRu z5D)~HA^(u%w^cz+@2@_#S|u>GpB+j4KzQ^&Wcl9f z&hG#bCA(Yk0D&t&aJE^xME^&E-&xGHhXn%}psEIj641H+Nl-}boj;)Zt*t(4wZ5DN z@GXF$bL=&pBq-#vkTkh>7hl%K5|3 z{`Vn9b$iR-SoGENp}bn4;fR3>9sA%X2@1L3aE9yTra;Wb#_`xWwLSLdfu+PAu+o3| zGVnpzPr=ch{uuoHjtw7+_!L_2;knQ!DuDl0R`|%jr+}jFzXtrHIKc323?JO{l&;VF z*L1+}JU7%QJOg|5|Tc|D8fN zJORAg=_vsy{ak|o);@)Yh8Lkcg@$FG3k@ep36BRa^>~UmnRPziS>Z=`Jb2x*Q#`%A zU*i3&Vg?TluO@X0O;r2Jl6LKLUOVhSqg1*qOt^|8*c7 zo(298@+r$k_wQNGHv{|$tW(T8L+4_`FQ{kEW5Jgg{yf7ey4ss_(SNKfz(N9lx&a;< je(UuV8hP?p&}TPdm1I$XmG#(RzlD&B2izSj9sl%y5~4qc diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e6aba25..e7646de 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 0adc8e1..1aa94a4 100755 --- a/gradlew +++ b/gradlew @@ -145,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -153,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -202,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 6689b85..7101f8e 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/model/build.gradle.kts b/model/build.gradle.kts index 8946155..7317d66 100644 --- a/model/build.gradle.kts +++ b/model/build.gradle.kts @@ -2,11 +2,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id("org.jetbrains.kotlin.jvm") - id("org.jetbrains.kotlin.plugin.serialization") -} - -dependencies { - implementation(libs.serialization.json) } java { diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt index b5bc83f..25f0cc1 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt @@ -1,62 +1,33 @@ package org.nixos.gradle2nix.model -import kotlinx.serialization.KSerializer -import kotlinx.serialization.Serializable -import kotlinx.serialization.descriptors.PrimitiveKind -import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder - -@Serializable(DependencyCoordinates.Serializer::class) -data class DependencyCoordinates( - val group: String, - val module: String, - val version: String, - val timestamp: String? = null -) : Comparable { - - override fun toString(): String = if (timestamp != null) { - "$group:$module:$version:$timestamp" +import java.io.Serializable + +interface DependencyCoordinates : Serializable { + val group: String + val artifact: String + + /** + * For normal dependencies, the dependency version (e.g. "2.0.2"). + * + * For Maven snapshot dependencies, the snapshot version (e.g. "2.0.2-SNAPSHOT"). + */ + val version: String + + /** + * For Maven snapshot dependencies, the snapshot timestamp (e.g. "20070310.18163-3"). + * + * For normal dependencies, this is null. + */ + val timestamp: String? + + val id: String get() = if (timestamp != null) { + "$group:$artifact:$version:$timestamp" } else { - "$group:$module:$version" + "$group:$artifact:$version" } - val artifactVersion: String get() = - timestamp?.let { version.replace("SNAPSHOT", it) } ?: version - - override fun compareTo(other: DependencyCoordinates): Int = comparator.compare(this, other) - - object Serializer : KSerializer { - override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor( - DependencyCoordinates::class.qualifiedName!!, - PrimitiveKind.STRING - ) - - override fun deserialize(decoder: Decoder): DependencyCoordinates { - val encoded = decoder.decodeString() - return parse(encoded) - } + val timestampedCoordinates: DependencyCoordinates - override fun serialize(encoder: Encoder, value: DependencyCoordinates) { - encoder.encodeString(value.toString()) - } - } - - companion object { - val comparator = compareBy { it.group } - .thenBy { it.module } - .thenByDescending { it.artifactVersion } - - fun parse(id: String): DependencyCoordinates { - val parts = id.split(":") - return when (parts.size) { - 3 -> DependencyCoordinates(parts[0], parts[1], parts[2]) - 4 -> DependencyCoordinates(parts[0], parts[1], parts[2], parts[3]) - else -> throw IllegalStateException( - "couldn't parse dependency coordinates: '$id'" - ) - } - } - } + val timestampedVersion: String get() = + timestamp?.let { version.replace("-SNAPSHOT", "-$it") } ?: version } diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySet.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySet.kt new file mode 100644 index 0000000..4688ea5 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySet.kt @@ -0,0 +1,8 @@ +package org.nixos.gradle2nix.model + +import java.io.Serializable +import org.nixos.gradle2nix.model.impl.DefaultRepository + +interface DependencySet : Serializable { + val dependencies: List +} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySource.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySource.kt deleted file mode 100644 index 5ec991e..0000000 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySource.kt +++ /dev/null @@ -1,26 +0,0 @@ -package org.nixos.gradle2nix.model - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -/** - * The source of a dependency declaration, representing where the direct dependency is declared, - * or where the parent dependency is declared for transitive dependencies. - * In most cases, this will be the project component that declares the dependency, - * but may also be a Version Catalog or the build as a whole. - * We attempt to map this to an actual source file location when building a dependency report. - */ -@Serializable -data class DependencySource( - val targetType: ConfigurationTarget, - val targetPath: String, - val buildPath: String, -) - -@Serializable -enum class ConfigurationTarget { - @SerialName("gradle") GRADLE, - @SerialName("settings") SETTINGS, - @SerialName("buildscript") BUILDSCRIPT, - @SerialName("project") PROJECT, -} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt index 94fea89..51f6157 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt @@ -1,7 +1,4 @@ package org.nixos.gradle2nix.model -const val PARAM_INCLUDE_PROJECTS = "NIX_INCLUDE_PROJECTS" -const val PARAM_INCLUDE_CONFIGURATIONS = "NIX_INCLUDE_CONFIGURATIONS" -const val PARAM_REPORT_DIR = "NIX_REPORT_DIR" const val RESOLVE_PROJECT_TASK = "resolveProjectDependencies" const val RESOLVE_ALL_TASK = "resolveAllDependencies" diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt index da622cc..c994e69 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt @@ -1,20 +1,16 @@ package org.nixos.gradle2nix.model -import kotlinx.serialization.Serializable +import java.io.Serializable + +interface Repository : Serializable { + val id: String + val type: Type + val metadataSources: List + val metadataResources: List + val artifactResources: List -@Serializable -data class Repository( - val id: String, - val type: Type, - val name: String, - val m2Compatible: Boolean, - val metadataSources: List, - val metadataResources: List, - val artifactResources: List, -) { enum class Type { MAVEN, IVY, - FLAT_DIR } } diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt index d023082..d75e381 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt @@ -1,16 +1,9 @@ package org.nixos.gradle2nix.model -import kotlinx.serialization.Serializable +import java.io.Serializable -@Serializable -data class ResolvedArtifact( - val type: Type?, - val file: String, -) { - enum class Type { - SOURCES, - JAVADOC, - IVY_DESCRIPTOR, - MAVEN_POM, - } +interface ResolvedArtifact : Serializable { + val name: String + val filename: String + val urls: List } diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt deleted file mode 100644 index 72ec576..0000000 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedConfiguration.kt +++ /dev/null @@ -1,19 +0,0 @@ -package org.nixos.gradle2nix.model - -import kotlinx.serialization.Serializable - -@Serializable -data class ResolvedConfiguration( - val rootSource: DependencySource, - val configurationName: String, - val repositories: List = emptyList(), - val allDependencies: MutableList = mutableListOf() -) { - fun addDependency(component: ResolvedDependency) { - allDependencies.add(component) - } - - fun hasDependency(componentId: DependencyCoordinates): Boolean { - return allDependencies.any { it.id == componentId } - } -} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt index f219359..46a2881 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedDependency.kt @@ -1,12 +1,8 @@ package org.nixos.gradle2nix.model -import kotlinx.serialization.Serializable +import java.io.Serializable -@Serializable -data class ResolvedDependency( - val id: DependencyCoordinates, - val source: DependencySource, - val direct: Boolean, - val repository: String?, - val dependencies: List = emptyList(), -) +interface ResolvedDependency : Serializable { + val coordinates: DependencyCoordinates + val artifacts: List +} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedMetadata.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedMetadata.kt deleted file mode 100644 index 52b9c1f..0000000 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedMetadata.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.nixos.gradle2nix.model - -import kotlinx.serialization.Serializable - -@Serializable -data class ResolvedMetadata( - val moduleId: String, - val uri: String -) diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencyCoordinates.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencyCoordinates.kt new file mode 100644 index 0000000..98bc0c9 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencyCoordinates.kt @@ -0,0 +1,29 @@ +package org.nixos.gradle2nix.model.impl + +import org.nixos.gradle2nix.model.DependencyCoordinates + +data class DefaultDependencyCoordinates( + override val group: String, + override val artifact: String, + override val version: String, + override val timestamp: String? = null +) : DependencyCoordinates { + + override val timestampedCoordinates: DependencyCoordinates + get() = DefaultDependencyCoordinates(group, artifact, timestampedVersion) + + override fun toString(): String = id + + companion object { + fun parse(id: String): DependencyCoordinates { + val parts = id.split(":") + return when (parts.size) { + 3 -> DefaultDependencyCoordinates(parts[0], parts[1], parts[2]) + 4 -> DefaultDependencyCoordinates(parts[0], parts[1], parts[2], parts[3]) + else -> throw IllegalStateException( + "couldn't parse dependency coordinates: '$id'" + ) + } + } + } +} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencySet.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencySet.kt new file mode 100644 index 0000000..1606888 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencySet.kt @@ -0,0 +1,8 @@ +package org.nixos.gradle2nix.model.impl + +import org.nixos.gradle2nix.model.DependencySet +import org.nixos.gradle2nix.model.ResolvedDependency + +data class DefaultDependencySet( + override val dependencies: List +) : DependencySet diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultRepository.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultRepository.kt new file mode 100644 index 0000000..2cbd508 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultRepository.kt @@ -0,0 +1,11 @@ +package org.nixos.gradle2nix.model.impl + +import org.nixos.gradle2nix.model.Repository + +data class DefaultRepository( + override val id: String, + override val type: Repository.Type, + override val metadataSources: List, + override val metadataResources: List, + override val artifactResources: List, +) : Repository diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedArtifact.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedArtifact.kt new file mode 100644 index 0000000..7d659b0 --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedArtifact.kt @@ -0,0 +1,9 @@ +package org.nixos.gradle2nix.model.impl + +import org.nixos.gradle2nix.model.ResolvedArtifact + +data class DefaultResolvedArtifact( + override val name: String, + override val filename: String, + override val urls: List +) : ResolvedArtifact diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedDependency.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedDependency.kt new file mode 100644 index 0000000..96fee8d --- /dev/null +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedDependency.kt @@ -0,0 +1,10 @@ +package org.nixos.gradle2nix.model.impl + +import org.nixos.gradle2nix.model.DependencyCoordinates +import org.nixos.gradle2nix.model.ResolvedArtifact +import org.nixos.gradle2nix.model.ResolvedDependency + +data class DefaultResolvedDependency( + override val coordinates: DependencyCoordinates, + override val artifacts: List, +) : ResolvedDependency diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 726e2de..c153d98 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -7,10 +7,11 @@ plugins { } dependencies { - compileOnly(kotlin("stdlib-jdk8")) - compileOnly(kotlin("reflect")) + shadow(kotlin("stdlib-jdk8")) + shadow(kotlin("reflect")) implementation(project(":model")) - implementation(libs.serialization.json) + testImplementation(libs.kotest.assertions) + testImplementation(libs.kotest.runner) } java { @@ -47,8 +48,6 @@ tasks { shadowJar { archiveClassifier.set("") relocate("kotlin", "${project.group}.shadow.kotlin") - relocate("kotlinx.serialization", "${project.group}.shadow.serialization") - relocate("net.swiftzer.semver", "${project.group}.shadow.semver") relocate("org.intellij", "${project.group}.shadow.intellij") relocate("org.jetbrains", "${project.group}.shadow.jetbrains") } @@ -56,4 +55,11 @@ tasks { validatePlugins { enableStricterValidation.set(true) } + + withType { + useJUnitPlatform() + testLogging { + events("passed", "skipped", "failed") + } + } } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt index 1fe170c..fbf4158 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt @@ -2,23 +2,48 @@ package org.nixos.gradle2nix +import javax.inject.Inject import org.gradle.api.Plugin +import org.gradle.api.Project import org.gradle.api.invocation.Gradle -import org.nixos.gradle2nix.dependencygraph.AbstractDependencyExtractorPlugin +import org.gradle.tooling.provider.model.ToolingModelBuilder +import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry +import org.nixos.gradle2nix.dependencygraph.DependencyExtractor import org.nixos.gradle2nix.forceresolve.ForceDependencyResolutionPlugin +import org.nixos.gradle2nix.model.DependencySet +import org.nixos.gradle2nix.util.buildOperationAncestryTracker +import org.nixos.gradle2nix.util.buildOperationListenerManager +import org.nixos.gradle2nix.util.service -@Suppress("unused") -class Gradle2NixPlugin : Plugin { +abstract class Gradle2NixPlugin @Inject constructor( + private val toolingModelBuilderRegistry: ToolingModelBuilderRegistry +): Plugin { override fun apply(gradle: Gradle) { - // Only apply the dependency extractor to the root build - if (gradle.parent == null) { - gradle.pluginManager.apply(NixDependencyExtractorPlugin::class.java) + val dependencyExtractor = DependencyExtractor( + gradle.buildOperationAncestryTracker, + ) + toolingModelBuilderRegistry.register(DependencySetModelBuilder(dependencyExtractor)) + + gradle.buildOperationListenerManager.addListener(dependencyExtractor) + + // Configuration caching is not enabled with dependency verification so this is fine for now. + // Gradle 9.x might remove this though. + @Suppress("DEPRECATION") + gradle.buildFinished { + gradle.buildOperationListenerManager.removeListener(dependencyExtractor) } + gradle.pluginManager.apply(ForceDependencyResolutionPlugin::class.java) } +} + +internal class DependencySetModelBuilder( + private val dependencyExtractor: DependencyExtractor, +) : ToolingModelBuilder { + + override fun canBuild(modelName: String): Boolean = modelName == DependencySet::class.qualifiedName - class NixDependencyExtractorPlugin : AbstractDependencyExtractorPlugin() { - override fun getRendererClassName(): String = - NixDependencyGraphRenderer::class.java.name + override fun buildAll(modelName: String, project: Project): DependencySet { + return dependencyExtractor.buildDependencySet() } } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt deleted file mode 100644 index 153b756..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt +++ /dev/null @@ -1,27 +0,0 @@ -package org.nixos.gradle2nix - -import java.io.File -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.encodeToStream -import org.nixos.gradle2nix.dependencygraph.DependencyGraphRenderer -import org.nixos.gradle2nix.model.ResolvedConfiguration - -@OptIn(ExperimentalSerializationApi::class) -private val json = Json { - prettyPrint = true - prettyPrintIndent = " " -} - -class NixDependencyGraphRenderer : DependencyGraphRenderer { - @OptIn(ExperimentalSerializationApi::class) - override fun outputDependencyGraph( - resolvedConfigurations: List, - outputDirectory: File - ) { - val graphOutputFile = File(outputDirectory, "dependency-graph.json") - graphOutputFile.outputStream().buffered().use { output -> - json.encodeToStream(resolvedConfigurations, output) - } - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt deleted file mode 100644 index 35921eb..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt +++ /dev/null @@ -1,148 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph - -import org.gradle.api.Plugin -import org.gradle.api.internal.GradleInternal -import org.gradle.api.internal.project.DefaultProjectRegistry -import org.gradle.api.internal.project.ProjectInternal -import org.gradle.api.internal.project.ProjectRegistry -import org.gradle.api.invocation.Gradle -import org.gradle.api.logging.Logging -import org.gradle.api.provider.Provider -import org.gradle.api.services.internal.RegisteredBuildServiceProvider -import org.gradle.internal.build.BuildProjectRegistry -import org.gradle.internal.build.event.BuildEventListenerRegistryInternal -import org.gradle.internal.composite.IncludedBuildInternal -import org.gradle.internal.operations.BuildOperationAncestryTracker -import org.gradle.internal.operations.BuildOperationListenerManager -import org.gradle.util.GradleVersion -import org.nixos.gradle2nix.dependencygraph.extractor.DependencyExtractor -import org.nixos.gradle2nix.dependencygraph.extractor.DependencyExtractorBuildService -import org.nixos.gradle2nix.dependencygraph.extractor.LegacyDependencyExtractor -import org.nixos.gradle2nix.dependencygraph.util.buildDirCompat -import org.nixos.gradle2nix.dependencygraph.util.service -import org.nixos.gradle2nix.model.ConfigurationTarget - -abstract class AbstractDependencyExtractorPlugin : Plugin { - // Register extension functions on `Gradle` type - private companion object : org.nixos.gradle2nix.dependencygraph.util.GradleExtensions() - - /** - * The name of an accessible class that implements `org.gradle.dependencygraph.DependencyGraphRenderer`. - */ - abstract fun getRendererClassName(): String - - internal lateinit var dependencyExtractorProvider: Provider - - override fun apply(gradle: Gradle) { - val gradleVersion = GradleVersion.current() - // Create the adapter based upon the version of Gradle - val applicatorStrategy = when { - gradleVersion < GradleVersion.version("8.0") -> PluginApplicatorStrategy.LegacyPluginApplicatorStrategy - else -> PluginApplicatorStrategy.DefaultPluginApplicatorStrategy - } - - // Create the service - dependencyExtractorProvider = applicatorStrategy.createExtractorService(gradle, getRendererClassName()) - - gradle.rootProject { project -> - dependencyExtractorProvider - .get() - .rootProjectBuildDirectory = project.buildDirCompat - } - - val logger = Logging.getLogger(AbstractDependencyExtractorPlugin::class.java.name) - - gradle.projectsLoaded { - (gradle as GradleInternal).let { g -> - logger.lifecycle("all projects: ${g.owner.projects.allProjects}") - logger.lifecycle("included projects: ${g.includedBuilds().flatMap { it.target.projects.allProjects }.joinToString { it.identityPath.path }}") - } - } - - // Register the service to listen for Build Events - applicatorStrategy.registerExtractorListener(gradle, dependencyExtractorProvider) - - // Register the shutdown hook that should execute at the completion of the Gradle build. - applicatorStrategy.registerExtractorServiceShutdown(gradle, dependencyExtractorProvider) - } - - /** - * Adapters for creating the [DependencyExtractor] and installing it into [Gradle] based upon the Gradle version. - */ - private interface PluginApplicatorStrategy { - - fun createExtractorService( - gradle: Gradle, - rendererClassName: String - ): Provider - - fun registerExtractorListener( - gradle: Gradle, - extractorServiceProvider: Provider - ) - - fun registerExtractorServiceShutdown( - gradle: Gradle, - extractorServiceProvider: Provider - ) - - @Suppress("DEPRECATION") - object LegacyPluginApplicatorStrategy : PluginApplicatorStrategy { - - override fun createExtractorService( - gradle: Gradle, - rendererClassName: String - ): Provider { - val dependencyExtractor = LegacyDependencyExtractor(rendererClassName) - return gradle.providerFactory.provider { dependencyExtractor } - } - - override fun registerExtractorListener( - gradle: Gradle, - extractorServiceProvider: Provider - ) { - gradle.buildOperationListenerManager - .addListener(extractorServiceProvider.get()) - } - - override fun registerExtractorServiceShutdown( - gradle: Gradle, - extractorServiceProvider: Provider - ) { - gradle.buildFinished { - extractorServiceProvider.get().close() - gradle.buildOperationListenerManager - .removeListener(extractorServiceProvider.get()) - } - } - } - - object DefaultPluginApplicatorStrategy : PluginApplicatorStrategy { - private const val SERVICE_NAME = "dependencyExtractorService" - - override fun createExtractorService( - gradle: Gradle, - rendererClassName: String - ): Provider { - return gradle.sharedServices.registerIfAbsent( - SERVICE_NAME, - DependencyExtractorBuildService::class.java - ) { it.parameters.rendererClassName.set(rendererClassName) } - } - - override fun registerExtractorListener( - gradle: Gradle, - extractorServiceProvider: Provider - ) { - gradle.service() - .onOperationCompletion(extractorServiceProvider) - } - - override fun registerExtractorServiceShutdown( - gradle: Gradle, - extractorServiceProvider: Provider - ) { - } - } - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt new file mode 100644 index 0000000..d7f4e17 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt @@ -0,0 +1,252 @@ +package org.nixos.gradle2nix.dependencygraph + +import java.net.URI +import java.util.Collections +import java.util.concurrent.ConcurrentHashMap +import kotlin.jvm.optionals.getOrNull +import org.gradle.api.internal.artifacts.DownloadArtifactBuildOperationType +import org.gradle.api.internal.artifacts.configurations.ResolveConfigurationDependenciesBuildOperationType +import org.gradle.api.logging.Logging +import org.gradle.internal.operations.BuildOperationAncestryTracker +import org.gradle.internal.operations.BuildOperationDescriptor +import org.gradle.internal.operations.BuildOperationListener +import org.gradle.internal.operations.OperationFinishEvent +import org.gradle.internal.operations.OperationIdentifier +import org.gradle.internal.operations.OperationProgressEvent +import org.gradle.internal.operations.OperationStartEvent +import org.gradle.internal.resource.ExternalResourceReadMetadataBuildOperationType +import org.nixos.gradle2nix.model.DependencyCoordinates +import org.nixos.gradle2nix.model.DependencySet +import org.nixos.gradle2nix.model.Repository +import org.nixos.gradle2nix.model.impl.DefaultDependencyCoordinates +import org.nixos.gradle2nix.model.impl.DefaultDependencySet +import org.nixos.gradle2nix.model.impl.DefaultRepository +import org.nixos.gradle2nix.model.impl.DefaultResolvedArtifact +import org.nixos.gradle2nix.model.impl.DefaultResolvedDependency + +class DependencyExtractor( + private val ancestryTracker: BuildOperationAncestryTracker, +) : BuildOperationListener { + + // Repositories by ID + private val repositories: MutableMap = ConcurrentHashMap() + + private val thrownExceptions = Collections.synchronizedList(mutableListOf()) + + private val artifacts: MutableMap< + OperationIdentifier, + DownloadArtifactBuildOperationType.Details + > = ConcurrentHashMap() + + private val files: MutableMap< + OperationIdentifier, + ExternalResourceReadMetadataBuildOperationType.Details + > = ConcurrentHashMap() + + private val fileArtifacts: MutableMap = ConcurrentHashMap() + + fun buildDependencySet(): DependencySet { + println("DependencyExtractor: buildDependencySet (wtf)") + + val repoList = repositories.values.toList() + + val dependencies = buildMap>>>> { + for ((fileId, file) in files) { + val filename = file.location.substringAfterLast("/").substringBefore('#').substringBefore('?') + if (filename == "maven-metadata.xml") { + // Skip Maven metadata, we don't need it for the local repository + continue + } + + val artifactOperationId = fileArtifacts[fileId] + val artifact = artifactOperationId?.let { artifacts[it] } + val artifactIdentifier = artifact?.artifactIdentifier?.let(::parseArtifactIdentifier) + var coords = artifactIdentifier?.first + var name = artifactIdentifier?.second + + if (coords == null || name == null) { + val parsed = parseComponent(repoList, file.location) + if (parsed == null) { + LOGGER.info("Couldn't parse location for ${artifactIdentifier?.first?.toString() ?: name}: ${file.location}") + continue + } + coords = coords ?: parsed.first + name = name ?: parseArtifact(parsed.second, coords, file.location) + } + + getOrPut(coords) { mutableMapOf() } + .getOrPut(name) { mutableSetOf() } + .run { + val existing = find { it.first == filename } + if (existing != null) { + existing.second.add(file.location) + } else { + add(filename to mutableSetOf(file.location)) + } + } + } + } + + return DefaultDependencySet( + dependencies = dependencies.map { (coords, artifacts) -> + DefaultResolvedDependency( + coords, + artifacts.flatMap { (name, files) -> + files.map { (filename, urls) -> + DefaultResolvedArtifact(name, filename, urls.toList()) + } + } + ) + } + ) + } + + override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) { + val id = buildOperation.id ?: return + + when (val details = buildOperation.details) { + is ResolveConfigurationDependenciesBuildOperationType.Details -> { + for (repository in details.repositories.orEmpty()) { + addRepository(repository) + } + } + + is DownloadArtifactBuildOperationType.Details -> { + artifacts[id] = details + } + + is ExternalResourceReadMetadataBuildOperationType.Details -> { + files[id] = details + + ancestryTracker.findClosestMatchingAncestor(id) { it in artifacts }.getOrNull()?.let { + fileArtifacts[id] = it + } + } + } + } + + override fun progress(operationIdentifier: OperationIdentifier, progressEvent: OperationProgressEvent) {} + + override fun finished(buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent) {} + + private fun addRepository( + repository: ResolveConfigurationDependenciesBuildOperationType.Repository + ): DefaultRepository { + @Suppress("UNCHECKED_CAST") + val candidate = DefaultRepository( + id = repository.id, + type = enumValueOf(repository.type), + metadataSources = (repository.properties["METADATA_SOURCES"] as? List) ?: emptyList(), + metadataResources = metadataResources(repository), + artifactResources = artifactResources(repository), + ) + + // Repository IDs are not unique across the entire build, unfortunately. + val existing = repositories.values.find { + it.type == candidate.type && + it.metadataSources == candidate.metadataSources && + it.metadataResources == candidate.metadataResources && + it.artifactResources == candidate.artifactResources + } + + if (existing != null) return existing + var inc = 0 + fun incId() = if (inc > 0) "${candidate.id}[$inc]" else candidate.id + while (incId() in repositories) inc++ + + val added = if (inc > 0) candidate else candidate.copy(id = incId()) + repositories[added.id] = added + return added + } + + companion object { + private val LOGGER = Logging.getLogger(DependencyExtractor::class.java) + + internal const val M2_PATTERN = + "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" + + private const val IVY_ARTIFACT_PATTERN = "[organisation]/[module]/[revision]/[type]s/[artifact](.[ext])"; + + private fun resources(urls: List, patterns: List): List { + if (urls.isEmpty()) { + return patterns + } + if (patterns.isEmpty()) { + return urls.map { it.toString() } + } + return mutableListOf().apply { + for (pattern in patterns) { + for (url in urls) { + add( + url.toString() + .removeSuffix("/") + .plus("/") + .plus(pattern.removePrefix("/")) + ) + } + } + } + } + + private fun metadataResources( + repository: ResolveConfigurationDependenciesBuildOperationType.Repository + ): List { + return when (repository.type) { + Repository.Type.MAVEN.name -> { + resources( + listOfNotNull(repository.properties["URL"] as? URI), + listOf(M2_PATTERN) + ) + } + Repository.Type.IVY.name -> { + @Suppress("UNCHECKED_CAST") + val patterns = repository.properties["IVY_PATTERNS"] as? List + ?: listOf(IVY_ARTIFACT_PATTERN) + + resources( + listOfNotNull(repository.properties["URL"] as? URI), + patterns + ) + } + else -> emptyList() + } + } + + private fun artifactResources( + repository: ResolveConfigurationDependenciesBuildOperationType.Repository + ): List { + return when (repository.type) { + Repository.Type.MAVEN.name -> { + @Suppress("UNCHECKED_CAST") + (resources( + listOfNotNull(repository.properties["URL"] as? URI) + .plus(repository.properties["ARTIFACT_URLS"] as? List ?: emptyList()), + listOf(M2_PATTERN) + )) + } + Repository.Type.IVY.name -> { + @Suppress("UNCHECKED_CAST") + val patterns = repository.properties["ARTIFACT_PATTERNS"] as? List + ?: listOf(IVY_ARTIFACT_PATTERN) + + resources( + listOfNotNull(repository.properties["URL"] as? URI), + patterns + ) + } + else -> emptyList() + } + } + + private val artifactRegex = Regex("(?\\S+) \\((?\\S+)\\)") + + private fun parseArtifactIdentifier(input: String): Pair? { + val groups = artifactRegex.matchEntire(input)?.groups ?: return null.also { + LOGGER.warn("artifact regex didn't match $input") + } + val coords = groups["coordinates"]?.value?.let(DefaultDependencyCoordinates::parse) ?: return null + val name = groups["name"]?.value ?: return null + return coords to name + } + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt deleted file mode 100644 index 7b6252a..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyGraphRenderer.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph - -import java.io.File -import org.nixos.gradle2nix.model.ResolvedConfiguration - -interface DependencyGraphRenderer { - fun outputDependencyGraph( - resolvedConfigurations: List, - outputDirectory: File - ) -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParser.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParser.kt new file mode 100644 index 0000000..1f137b2 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParser.kt @@ -0,0 +1,158 @@ +package org.nixos.gradle2nix.dependencygraph + +import java.util.concurrent.ConcurrentHashMap +import org.nixos.gradle2nix.model.DependencyCoordinates +import org.nixos.gradle2nix.model.Repository +import org.nixos.gradle2nix.model.impl.DefaultDependencyCoordinates + + +private val partRegex = Regex("\\[(?[^]]+)]|\\((?([^)]+))\\)") + +private fun StringBuilder.appendPattern( + input: String, + seen: MutableList, +) { + var literalStart = 0 + partRegex.findAll(input).forEach { match -> + val literal = input.substring(literalStart, match.range.first) + if (literal.isNotEmpty()) { + append(Regex.escape(literal)) + } + literalStart = match.range.last + 1 + + val optionalValue = match.groups["optional"]?.value + val attrValue = match.groups["attr"]?.value + if (optionalValue != null) { + append("(") + appendPattern(optionalValue, seen) + append(")?") + } else if (attrValue != null) { + if (attrValue !in seen) { + seen.add(attrValue) + append("(?<$attrValue>[^/]+)") + } else { + append("\\k<$attrValue>") + } + } + } + val tail = input.substring(literalStart) + if (tail.isNotEmpty()) { + append(Regex.escape(input.substring(literalStart))) + } +} + +private fun String.replaceAttrs( + attrs: Map +): String { + return partRegex.replace(this) { match -> + val optionalValue = match.groups["optional"]?.value + val attrValue = match.groups["attr"]?.value + if (optionalValue != null) { + val replaced = optionalValue.replaceAttrs(attrs) + if (replaced != optionalValue) replaced else match.value + } else if (attrValue != null) { + attrs[attrValue] ?: match.value + } else { + match.value + } + } +} + + +private fun interface ArtifactMatcher { + fun match(url: String): Map? +} + +private fun regexMatcher(regex: Regex, attrs: List): ArtifactMatcher { + return ArtifactMatcher { url -> + regex.matchEntire(url)?.groups?.let { groups -> + buildMap { + for (attr in attrs) { + groups[attr]?.let { put(attr, it.value) } + } + } + } + } +} + +private fun patternMatcher(pattern: String): ArtifactMatcher { + val attrs = mutableListOf() + val exp = buildString { appendPattern(pattern, attrs) }.toRegex() + return regexMatcher(exp, attrs) +} + +private fun mavenMatcher(pattern: String): ArtifactMatcher { + val attrs = mutableListOf() + val exp = buildString { appendPattern(pattern.replaceAfterLast("/", ""), attrs) } + .replace("[^/]+", ".+") + .plus("[^/]+") + .toRegex() + return regexMatcher(exp, attrs) +} + +private val matcherCache: MutableMap = ConcurrentHashMap() + +private fun matcher( + pattern: String, +): ArtifactMatcher = matcherCache.getOrPut(pattern) { + if (pattern.endsWith(DependencyExtractor.M2_PATTERN)) mavenMatcher(pattern) else patternMatcher(pattern) +} + +fun parseComponent( + repositories: List, + url: String, +): Pair? { + for (repository in repositories) { + for (pattern in (repository.metadataResources + repository.artifactResources).distinct()) { + val matcher = matcher(pattern) + val attrs = matcher.match(url) + if (attrs != null) { + val group = attrs["organisation"]?.replace('/', '.') ?: continue + val artifact = attrs["module"] ?: continue + val revision = attrs["revision"] ?: continue + return DefaultDependencyCoordinates(group, artifact, revision) to pattern.replaceAttrs(attrs) + } + } + } + return null +} + +fun parseArtifact( + resource: String, + component: DependencyCoordinates, + url: String +): String { + val attrs = mutableListOf() + var pattern = buildString { appendPattern(resource, attrs) } + if (component.version.endsWith("-SNAPSHOT")) { + val base = component.version.substringBeforeLast("-SNAPSHOT", "") + pattern = pattern.replace("\\Q-${component.version}\\E", "\\Q-$base-\\E(?:.+)") + } + + val values = regexMatcher(pattern.toRegex(), attrs).match(url) + val artifact = values?.get("artifact") + val classifier = values?.get("classifier") + val ext = values?.get("ext") + + if (artifact == null) return artifactFromFilename( + url.substringAfterLast('/').substringBefore('#').substringBefore('?'), + component.version, + classifier + ) + + return buildString { + append("$artifact-${component.version}") + if (classifier != null) append("-$classifier") + if (ext != null) append(".$ext") + } +} + +private fun artifactFromFilename(filename: String, version: String, classifier: String?): String { + val name = filename.substringBeforeLast('.') + val extension = filename.substringAfterLast('.', "") + return buildString { + append("$name-$version") + if (classifier != null) append("-$classifier") + if (extension.isNotEmpty()) append(".$extension") + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt deleted file mode 100644 index c9ddea7..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractor.kt +++ /dev/null @@ -1,428 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph.extractor - -import java.io.File -import java.net.URI -import java.util.Collections -import java.util.concurrent.ConcurrentHashMap -import org.gradle.api.GradleException -import org.gradle.api.artifacts.DependencyResolutionListener -import org.gradle.api.artifacts.ResolvableDependencies -import org.gradle.api.artifacts.component.BuildIdentifier -import org.gradle.api.artifacts.component.ModuleComponentIdentifier -import org.gradle.api.artifacts.query.ArtifactResolutionQuery -import org.gradle.api.artifacts.result.ResolvedArtifactResult -import org.gradle.api.artifacts.result.ResolvedComponentResult -import org.gradle.api.artifacts.result.ResolvedDependencyResult -import org.gradle.api.component.Artifact -import org.gradle.api.internal.artifacts.DefaultModuleVersionIdentifier -import org.gradle.api.internal.artifacts.DefaultProjectComponentIdentifier -import org.gradle.api.internal.artifacts.configurations.ResolveConfigurationDependenciesBuildOperationType -import org.gradle.api.internal.artifacts.repositories.resolver.MavenUniqueSnapshotComponentIdentifier -import org.gradle.api.logging.Logging -import org.gradle.configuration.ApplyScriptPluginBuildOperationType -import org.gradle.configuration.ConfigurationTargetIdentifier -import org.gradle.initialization.LoadBuildBuildOperationType -import org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier -import org.gradle.internal.component.external.model.ModuleComponentArtifactIdentifier -import org.gradle.internal.exceptions.DefaultMultiCauseException -import org.gradle.internal.operations.BuildOperationDescriptor -import org.gradle.internal.operations.BuildOperationListener -import org.gradle.internal.operations.OperationFinishEvent -import org.gradle.internal.operations.OperationIdentifier -import org.gradle.internal.operations.OperationProgressEvent -import org.gradle.internal.operations.OperationStartEvent -import org.gradle.ivy.IvyDescriptorArtifact -import org.gradle.jvm.JvmLibrary -import org.gradle.language.base.artifact.SourcesArtifact -import org.gradle.language.java.artifact.JavadocArtifact -import org.gradle.maven.MavenPomArtifact -import org.gradle.util.GradleVersion -import org.nixos.gradle2nix.dependencygraph.DependencyGraphRenderer -import org.nixos.gradle2nix.dependencygraph.util.BuildOperationTracker -import org.nixos.gradle2nix.dependencygraph.util.loadOptionalParam -import org.nixos.gradle2nix.model.ConfigurationTarget -import org.nixos.gradle2nix.model.DependencyCoordinates -import org.nixos.gradle2nix.model.DependencySource -import org.nixos.gradle2nix.model.PARAM_INCLUDE_CONFIGURATIONS -import org.nixos.gradle2nix.model.PARAM_INCLUDE_PROJECTS -import org.nixos.gradle2nix.model.PARAM_REPORT_DIR -import org.nixos.gradle2nix.model.Repository -import org.nixos.gradle2nix.model.ResolvedArtifact -import org.nixos.gradle2nix.model.ResolvedConfiguration -import org.nixos.gradle2nix.model.ResolvedDependency - -abstract class DependencyExtractor : - BuildOperationListener, - AutoCloseable { - - private val configurations = - ConcurrentHashMap< - OperationIdentifier, - Pair>() - - private val resolvedConfigurations = Collections.synchronizedList(mutableListOf()) - - private val thrownExceptions = Collections.synchronizedList(mutableListOf()) - - var rootProjectBuildDirectory: File? = null - - private val operationTracker = BuildOperationTracker() - - // Properties are lazily initialized so that System Properties are initialized by the time - // the values are used. This is required due to a bug in older Gradle versions. (https://github.com/gradle/gradle/issues/6825) - private val configurationFilter by lazy { - ResolvedConfigurationFilter( - loadOptionalParam(PARAM_INCLUDE_PROJECTS), - loadOptionalParam(PARAM_INCLUDE_CONFIGURATIONS) - ) - } - - private val dependencyGraphReportDir by lazy { - loadOptionalParam(PARAM_REPORT_DIR) - } - - abstract fun getRendererClassName(): String - - override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) {} - - override fun progress(operationIdentifier: OperationIdentifier, progressEvent: OperationProgressEvent) {} - - override fun finished(buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent) { - operationTracker.finished(buildOperation, finishEvent) - - handleFinishBuildOperationType< - ResolveConfigurationDependenciesBuildOperationType.Details, - ResolveConfigurationDependenciesBuildOperationType.Result - >(buildOperation, finishEvent) { details, result -> - buildOperation.id?.let { operationId -> - configurations[operationId] = details to result - } - } - } - - private inline fun handleFinishBuildOperationType( - buildOperation: BuildOperationDescriptor, - finishEvent: OperationFinishEvent, - handler: (details: D, result: R) -> Unit - ) { - try { - handleFinishBuildOperationTypeRaw(buildOperation, finishEvent, handler) - } catch (e: Throwable) { - thrownExceptions.add(e) - throw e - } - } - - private inline fun handleFinishBuildOperationTypeRaw( - buildOperation: BuildOperationDescriptor, - finishEvent: OperationFinishEvent, - handler: (details: D, result: R) -> Unit - ) { - val details: D? = buildOperation.details.let { - if (it is D) it else null - } - val result: R? = finishEvent.result.let { - if (it is R) it else null - } - if (details == null && result == null) { - return - } else if (details == null || result == null) { - throw IllegalStateException("buildOperation.details & finishedEvent.result were unexpected types") - } - handler(details, result) - } - - // This returns null for the root build, because the build operation won't complete until after close() is called. - private fun findBuildDetails(buildOperationId: OperationIdentifier?): LoadBuildBuildOperationType.Details? { - return operationTracker.findParent(buildOperationId) { - it.details as? LoadBuildBuildOperationType.Details - } - } - - private fun processConfigurations() { - for ((operationId, data) in configurations) { - val (details, result) = data - extractConfigurationDependencies(operationId, details, result) - } - } - - private fun extractConfigurationDependencies( - operationId: OperationIdentifier, - details: ResolveConfigurationDependenciesBuildOperationType.Details, - result: ResolveConfigurationDependenciesBuildOperationType.Result - ) { - val repositories = details.repositories?.mapNotNull { - @Suppress("UNCHECKED_CAST") - (Repository( - id = it.id, - type = enumValueOf(it.type), - name = it.name, - m2Compatible = it.type == "MAVEN" || (it.properties["M2_COMPATIBLE"] as? Boolean) ?: false, - metadataSources = (it.properties["METADATA_SOURCES"] as? List) ?: emptyList(), - metadataResources = metadataResources(it), - artifactResources = artifactResources(it), - )) - } ?: emptyList() - - if (repositories.isEmpty()) { - return - } - - val rootComponent = result.rootComponent - - if (rootComponent.dependencies.isEmpty()) { - // No dependencies to extract: can safely ignore - return - } - - val source: DependencySource = when { - details.isScriptConfiguration -> { - val parent = operationTracker.findParent(operationId) { - it.details as? ApplyScriptPluginBuildOperationType.Details - } ?: throw IllegalStateException("Couldn't find parent script operation for ${details.configurationName}") - DependencySource( - targetType = when (parent.targetType) { - ConfigurationTargetIdentifier.Type.GRADLE.label -> ConfigurationTarget.GRADLE - ConfigurationTargetIdentifier.Type.SETTINGS.label -> ConfigurationTarget.SETTINGS - ConfigurationTargetIdentifier.Type.PROJECT.label -> ConfigurationTarget.BUILDSCRIPT - else -> throw IllegalStateException("Unknown configuration target type: ${parent.targetType}") - }, - targetPath = parent.targetPath ?: ":", - buildPath = parent.buildPath!! - ) - } - else -> { - DependencySource( - targetType = ConfigurationTarget.PROJECT, - targetPath = details.projectPath!!, - buildPath = details.buildPath - ) - } - } - - - val resolvedConfiguration = ResolvedConfiguration(source, details.configurationName, repositories) - - for (directDependency in getResolvedDependencies(rootComponent)) { - val coordinates = (directDependency.id as? ModuleComponentIdentifier)?.let(::coordinates) - if (coordinates != null) { - val directDep = createComponentNode( - coordinates, - source, - true, - directDependency, - result.getRepositoryId(directDependency) - ) - resolvedConfiguration.addDependency(directDep) - - walkComponentDependencies(result, directDependency, directDep.source, resolvedConfiguration) - } - } - - resolvedConfigurations.add(resolvedConfiguration) - } - - private fun walkComponentDependencies( - result: ResolveConfigurationDependenciesBuildOperationType.Result, - component: ResolvedComponentResult, - parentSource: DependencySource, - resolvedConfiguration: ResolvedConfiguration - ) { - val componentSource = getSource(component, parentSource) - val direct = componentSource != parentSource - - val dependencyComponents = getResolvedDependencies(component) - for (dependencyComponent in dependencyComponents) { - val coordinates = (dependencyComponent.id as? ModuleComponentIdentifier)?.let(::coordinates) - ?: continue - if (!resolvedConfiguration.hasDependency(coordinates)) { - val dependencyNode = createComponentNode( - coordinates, - componentSource, - direct, - dependencyComponent, - result.getRepositoryId(component) - ) - resolvedConfiguration.addDependency(dependencyNode) - walkComponentDependencies(result, dependencyComponent, componentSource, resolvedConfiguration) - } - } - } - - private fun getSource(component: ResolvedComponentResult, source: DependencySource): DependencySource { - val componentId = component.id - if (componentId is DefaultProjectComponentIdentifier) { - return DependencySource( - ConfigurationTarget.PROJECT, - componentId.projectPath, - componentId.build.buildPathCompat - ) - } - return source - } - - private val BuildIdentifier.buildPathCompat: String - @Suppress("DEPRECATION") - get() = if (GradleVersion.current() < GradleVersion.version("8.2")) name else buildPath - - private fun getResolvedDependencies(component: ResolvedComponentResult): List { - return component.dependencies.filterIsInstance().map { it.selected }.filter { it != component } - } - - private fun createComponentNode( - coordinates: DependencyCoordinates, - source: DependencySource, - direct: Boolean, - component: ResolvedComponentResult, - repositoryId: String? - ): ResolvedDependency { - val componentDependencies = - component.dependencies.filterIsInstance().map { componentId(it.selected) } - return ResolvedDependency( - coordinates, - source, - direct, - repositoryId, - componentDependencies, - ) - } - - private fun componentId(component: ResolvedComponentResult): String { - return component.id.displayName - } - - private fun coordinates(componentId: ModuleComponentIdentifier): DependencyCoordinates { - return DependencyCoordinates( - componentId.group, - componentId.module, - componentId.version, - (componentId as? MavenUniqueSnapshotComponentIdentifier)?.timestamp - ) - } - - private fun writeDependencyGraph() { - val outputDirectory = getOutputDir() - outputDirectory.mkdirs() - createRenderer().outputDependencyGraph(resolvedConfigurations, outputDirectory) - LOGGER.info("Wrote dependency graph to ${getOutputDir()}") - } - - private fun createRenderer(): DependencyGraphRenderer { - LOGGER.info("Constructing renderer: ${getRendererClassName()}") - return Class.forName(getRendererClassName()).getDeclaredConstructor().newInstance() as DependencyGraphRenderer - } - - private fun getOutputDir(): File { - if (dependencyGraphReportDir != null) { - return File(dependencyGraphReportDir!!) - } - - if (rootProjectBuildDirectory == null) { - throw RuntimeException("Cannot determine report file location") - } - return File( - rootProjectBuildDirectory, - "reports/nix-dependency-graph" - ) - } - - override fun close() { - LOGGER.lifecycle("DependencyExtractor: CLOSE") - - if (thrownExceptions.isNotEmpty()) { - throw DefaultMultiCauseException( - "The Gradle2Nix plugin encountered errors while extracting dependencies. " + - "Please report this issue at: https://github.com/tadfisher/gradle2nix/issues", - thrownExceptions - ) - } - try { - processConfigurations() - - LOGGER.lifecycle("Resolved ${resolvedConfigurations.size} configurations.") - - writeDependencyGraph() - } catch (e: RuntimeException) { - throw GradleException( - "The Gradle2Nix plugin encountered errors while writing the dependency snapshot json file. " + - "Please report this issue at: https://github.com/tadfisher/gradle2nix/issues", - e - ) - } - } - - companion object { - private val LOGGER = Logging.getLogger(DependencyExtractor::class.java) - - private const val M2_PATTERN = - "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier])(.[ext])" - - private const val IVY_ARTIFACT_PATTERN = "[organisation]/[module]/[revision]/[type]s/[artifact](.[ext])"; - - private fun resources(urls: List, patterns: List): List { - if (urls.isEmpty()) { - return patterns - } - if (patterns.isEmpty()) { - return urls.map { it.toString() } - } - return mutableListOf().apply { - for (pattern in patterns) { - for (url in urls) { - add( - url.toString() - .removeSuffix("/") - .plus("/") - .plus(pattern.removePrefix("/")) - ) - } - } - } - } - - private fun metadataResources( - repository: ResolveConfigurationDependenciesBuildOperationType.Repository - ): List { - return when (repository.type) { - Repository.Type.MAVEN.name -> { - resources( - listOfNotNull(repository.properties["URL"] as? URI), - listOf(M2_PATTERN) - ) - } - Repository.Type.IVY.name -> { - @Suppress("UNCHECKED_CAST") - resources( - listOfNotNull(repository.properties["URL"] as? URI), - repository.properties["IVY_PATTERNS"] as? List ?: listOf(IVY_ARTIFACT_PATTERN) - ) - } - else -> emptyList() - } - } - - private fun artifactResources( - repository: ResolveConfigurationDependenciesBuildOperationType.Repository - ): List { - return when (repository.type) { - Repository.Type.MAVEN.name -> { - @Suppress("UNCHECKED_CAST") - resources( - listOfNotNull(repository.properties["URL"] as? URI) - .plus(repository.properties["ARTIFACT_URLS"] as? List ?: emptyList()), - listOf(M2_PATTERN) - ) - } - Repository.Type.IVY.name -> { - @Suppress("UNCHECKED_CAST") - resources( - listOfNotNull(repository.properties["URL"] as? URI), - repository.properties["ARTIFACT_PATTERNS"] as? List ?: listOf(IVY_ARTIFACT_PATTERN) - ) - } - else -> emptyList() - } - } - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt deleted file mode 100644 index 8f49dbd..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/DependencyExtractorBuildService.kt +++ /dev/null @@ -1,18 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph.extractor - -import org.gradle.api.provider.Property -import org.gradle.api.services.BuildService -import org.gradle.api.services.BuildServiceParameters - -abstract class DependencyExtractorBuildService : - DependencyExtractor(), - BuildService -{ - internal interface Params : BuildServiceParameters { - val rendererClassName: Property - } - - override fun getRendererClassName(): String { - return parameters.rendererClassName.get() - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/LegacyDependencyExtractor.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/LegacyDependencyExtractor.kt deleted file mode 100644 index 92dd5ea..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/LegacyDependencyExtractor.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph.extractor - -open class LegacyDependencyExtractor( - private val rendererClassName: String -) : DependencyExtractor() { - - override fun getRendererClassName(): String { - return rendererClassName - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/ResolvedConfigurationFilter.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/ResolvedConfigurationFilter.kt deleted file mode 100644 index 5cbd4af..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/extractor/ResolvedConfigurationFilter.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph.extractor - -class ResolvedConfigurationFilter(projectFilter: String?, configurationFilter: String?) { - val projectRegex = projectFilter?.toRegex() - val configurationRegex = configurationFilter?.toRegex() - - fun include(projectPath: String, configurationName: String): Boolean { - if (projectRegex != null && !projectRegex.matches(projectPath)) { - return false - } - if (configurationRegex != null && !configurationRegex.matches(configurationName)) { - return false - } - return true - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/BuildOperationTracker.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/BuildOperationTracker.kt deleted file mode 100644 index 2a833e0..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/BuildOperationTracker.kt +++ /dev/null @@ -1,64 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph.util - -import java.util.concurrent.ConcurrentHashMap -import org.gradle.api.logging.Logging -import org.gradle.internal.operations.BuildOperation -import org.gradle.internal.operations.BuildOperationDescriptor -import org.gradle.internal.operations.BuildOperationListener -import org.gradle.internal.operations.OperationFinishEvent -import org.gradle.internal.operations.OperationIdentifier -import org.gradle.internal.operations.OperationProgressEvent -import org.gradle.internal.operations.OperationStartEvent - -class BuildOperationTracker : BuildOperationListener { - private val _parents: MutableMap = ConcurrentHashMap() - private val _operations: MutableMap = ConcurrentHashMap() - private val _results: MutableMap = ConcurrentHashMap() - - val parents: Map get() = _parents - val operations: Map get() = _operations - val results: Map get() = _results - - override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) { - } - - override fun progress(operationIdentifier: OperationIdentifier, progressEvent: OperationProgressEvent) { - } - - override fun finished(buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent) { - val id = buildOperation.id ?: return - _parents[id] = buildOperation.parentId - _operations[id] = buildOperation - } - - tailrec fun findParent(id: OperationIdentifier?, block: (BuildOperationDescriptor) -> T?): T? { - if (id == null) return null - val operation = _operations[id] ?: return null.also { - LOGGER.lifecycle("no operation for $id") - } - return block(operation) ?: findParent(operation.parentId, block) - } - - fun findChild(id: OperationIdentifier?, block: (BuildOperationDescriptor) -> T?): T? { - if (id == null) return null - val operation = operations[id] ?: return null - block(operation)?.let { return it } - return children(id).firstNotNullOfOrNull { findChild(it, block) } - } - - fun children(id: OperationIdentifier): Set { - return parents.filterValues { it == id }.keys - } - - inline fun getDetails(id: OperationIdentifier): T? { - return operations[id]?.details as? T - } - - inline fun getResult(id: OperationIdentifier): T? { - return results[id] as? T - } - - companion object { - private val LOGGER = Logging.getLogger(BuildOperationTracker::class.qualifiedName!!) - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt deleted file mode 100644 index c9d65ef..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt +++ /dev/null @@ -1,30 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph.util - -import java.io.File -import org.gradle.api.Project -import org.gradle.api.internal.GradleInternal -import org.gradle.api.invocation.Gradle -import org.gradle.api.model.ObjectFactory -import org.gradle.api.provider.ProviderFactory -import org.gradle.internal.operations.BuildOperationListenerManager -import org.gradle.util.GradleVersion - -internal abstract class GradleExtensions { - - inline val Gradle.providerFactory: ProviderFactory - get() = service() - - inline val Gradle.buildOperationListenerManager: BuildOperationListenerManager - get() = service() -} - -internal inline fun Gradle.service(): T = - (this as GradleInternal).services.get(T::class.java) - -internal val Project.buildDirCompat: File - get() = if (GradleVersion.current() < GradleVersion.version("8.3")) { - @Suppress("DEPRECATION") - buildDir - } else { - layout.buildDirectory.asFile.get() - } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/PluginParameters.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/PluginParameters.kt deleted file mode 100644 index a889f56..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/PluginParameters.kt +++ /dev/null @@ -1,6 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph.util - -internal fun loadOptionalParam(envName: String): String? { - return System.getProperty(envName) - ?: System.getenv()[envName] -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/AbstractResolveProjectDependenciesTask.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/AbstractResolveProjectDependenciesTask.kt new file mode 100644 index 0000000..9e05333 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/AbstractResolveProjectDependenciesTask.kt @@ -0,0 +1,15 @@ +package org.nixos.gradle2nix.forceresolve + +import org.gradle.api.DefaultTask +import org.gradle.api.artifacts.Configuration +import org.gradle.api.tasks.Internal +import org.gradle.work.DisableCachingByDefault +import org.nixos.gradle2nix.util.canSafelyBeResolved + +@DisableCachingByDefault(because = "Not worth caching") +abstract class AbstractResolveProjectDependenciesTask : DefaultTask() { + @Internal + protected fun getReportableConfigurations(): List { + return project.configurations.filter { it.canSafelyBeResolved() } + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt index 2c11c1b..73f358f 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt @@ -23,9 +23,7 @@ class ForceDependencyResolutionPlugin : Plugin { gradle.allprojects { project -> val projectTaskFactory = getResolveProjectDependenciesTaskFactory() val resolveProjectDeps = projectTaskFactory.create(project) - resolveAllDeps.configure { - it.dependsOn(resolveProjectDeps) - } + resolveAllDeps.configure { it.dependsOn(resolveProjectDeps) } } // Depend on all 'resolveBuildDependencies' task in each included build @@ -51,7 +49,7 @@ class ForceDependencyResolutionPlugin : Plugin { fun create(project: Project): TaskProvider data object Current : ResolveProjectDependenciesTaskFactory { - override fun create(project: Project): TaskProvider { + override fun create(project: Project): TaskProvider { return project.tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTask::class.java) } } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt index cae57d0..598f342 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt @@ -6,11 +6,7 @@ import org.gradle.api.tasks.TaskAction import org.gradle.work.DisableCachingByDefault @DisableCachingByDefault(because = "Not worth caching") -abstract class LegacyResolveProjectDependenciesTask: DefaultTask() { - private fun getReportableConfigurations(): List { - return project.configurations.filter { it.isCanBeResolved } - } - +abstract class LegacyResolveProjectDependenciesTask : AbstractResolveProjectDependenciesTask() { @TaskAction fun action() { for (configuration in getReportableConfigurations()) { diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt index 5747b21..f35af26 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt @@ -1,31 +1,31 @@ package org.nixos.gradle2nix.forceresolve -import org.gradle.api.DefaultTask -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.result.ResolvedComponentResult -import org.gradle.api.provider.Provider +import javax.inject.Inject +import org.gradle.api.artifacts.component.ModuleComponentIdentifier +import org.gradle.api.file.FileCollection +import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.TaskAction import org.gradle.internal.serialization.Cached import org.gradle.work.DisableCachingByDefault @DisableCachingByDefault(because = "Not worth caching") -abstract class ResolveProjectDependenciesTask: DefaultTask() { - private val configurationResolvers = Cached.of { createConfigurationResolvers() } +abstract class ResolveProjectDependenciesTask @Inject constructor( + private val objects: ObjectFactory +): AbstractResolveProjectDependenciesTask() { + private val artifactFiles = Cached.of { artifactFiles() } - private fun createConfigurationResolvers(): List> { - return getReportableConfigurations().map { - it.incoming.resolutionResult.rootComponent - } - } - - private fun getReportableConfigurations(): List { - return project.configurations.filter { it.isCanBeResolved } + private fun artifactFiles(): FileCollection { + return objects.fileCollection().from( + getReportableConfigurations().map { configuration -> + configuration.incoming.artifactView { viewConfiguration -> + viewConfiguration.componentFilter { it is ModuleComponentIdentifier } + }.files + } + ) } @TaskAction fun action() { - for (configuration in configurationResolvers.get()) { - configuration.get() - } + artifactFiles.get().count() } } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt new file mode 100644 index 0000000..32b2503 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt @@ -0,0 +1,27 @@ +package org.nixos.gradle2nix.util + +import java.lang.reflect.Method +import org.gradle.api.artifacts.Configuration +import org.gradle.api.internal.GradleInternal +import org.gradle.api.invocation.Gradle +import org.gradle.internal.operations.BuildOperationAncestryTracker +import org.gradle.internal.operations.BuildOperationListenerManager + +internal inline val Gradle.buildOperationAncestryTracker: BuildOperationAncestryTracker + get() = service() + +internal inline val Gradle.buildOperationListenerManager: BuildOperationListenerManager + get() = service() + +internal inline fun Gradle.service(): T = + (this as GradleInternal).services.get(T::class.java) + +private val canSafelyBeResolvedMethod: Method? = try { + val dc = Class.forName("org.gradle.internal.deprecation.DeprecatableConfiguration") + dc.getMethod("canSafelyBeResolved") +} catch (e: ReflectiveOperationException) { + null +} + +internal fun Configuration.canSafelyBeResolved(): Boolean = + canSafelyBeResolvedMethod?.invoke(this) as? Boolean ?: isCanBeResolved diff --git a/plugin/src/test/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParserTest.kt b/plugin/src/test/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParserTest.kt new file mode 100644 index 0000000..f4ebe8e --- /dev/null +++ b/plugin/src/test/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParserTest.kt @@ -0,0 +1,58 @@ +package org.nixos.gradle2nix.dependencygraph + +import io.kotest.core.spec.style.FunSpec +import io.kotest.matchers.nulls.shouldNotBeNull +import io.kotest.matchers.shouldBe +import org.nixos.gradle2nix.model.Repository +import org.nixos.gradle2nix.model.impl.DefaultDependencyCoordinates +import org.nixos.gradle2nix.model.impl.DefaultRepository + +class DependencyUrlParserTest : FunSpec({ + val mavenCentral = DefaultRepository( + "MavenRepo", + Repository.Type.MAVEN, + metadataSources = listOf("mavenPom"), + metadataResources = listOf("https://repo.maven.apache.org/maven2/${DependencyExtractor.M2_PATTERN}"), + artifactResources = listOf("https://repo.maven.apache.org/maven2/${DependencyExtractor.M2_PATTERN}") + ) + + test("parses maven url") { + val url = "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.jar" + val (coords, pattern) = parseComponent(listOf(mavenCentral), url).shouldNotBeNull() + coords shouldBe DefaultDependencyCoordinates("com.github.ajalt", "clikt-metadata", "2.8.0") + parseArtifact(pattern, coords, url) shouldBe "clikt-metadata-2.8.0.jar" + } + + test("parses maven snapshot url") { + val url = "https://repo.maven.apache.org/maven2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" + val (coords, pattern) = parseComponent(listOf(mavenCentral), url).shouldNotBeNull() + coords shouldBe DefaultDependencyCoordinates("org.apache", "test-SNAPSHOT2", "2.0.2-SNAPSHOT") + parseArtifact(pattern, coords, url) shouldBe "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" + } + + test("parses maven timestamped snapshot url") { + val url = "https://repo.maven.apache.org/maven2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar" + val (coords, pattern) = parseComponent(listOf(mavenCentral), url).shouldNotBeNull() + coords shouldBe DefaultDependencyCoordinates("org.apache", "test-SNAPSHOT1", "2.0.2-SNAPSHOT") + parseArtifact(pattern, coords, url) shouldBe "test-SNAPSHOT1-2.0.2-SNAPSHOT.jar" + } + + test("parses ivy descriptor url") { + val url = "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" + val (coords, pattern) = parseComponent( + listOf( + DefaultRepository( + "ivy", + Repository.Type.IVY, + metadataSources = listOf("ivyDescriptor"), + metadataResources = listOf("https://asset.opendof.org/ivy2/[organisation]/[module]/[revision]/ivy(.[platform]).xml"), + artifactResources = listOf("https://asset.opendof.org/artifact/[organisation]/[module]/[revision](/[platform])(/[type]s)/[artifact]-[revision](-[classifier]).[ext]") + ) + ), + url + ).shouldNotBeNull() + + coords shouldBe DefaultDependencyCoordinates("org.opendof.core-java", "dof-cipher-sms4", "1.0") + parseArtifact(pattern, coords, url) shouldBe "ivy-1.0.xml" + } +}) diff --git a/settings.gradle.kts b/settings.gradle.kts index dd7323f..ff2556c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,7 +3,6 @@ dependencyResolutionManagement { repositories { mavenCentral() - gradlePluginPortal() maven { url = uri("https://repo.gradle.org/gradle/libs-releases") } } repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) From f24e295fc062035cfe07fb68452f323f4aff5f24 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 17 May 2024 17:50:06 -0700 Subject: [PATCH 11/34] Dogfood v2 --- app/build.gradle.kts | 1 - app/src/dist/share/gradle.nix | 292 ++ .../main/kotlin/org/nixos/gradle2nix/Main.kt | 49 +- default.nix | 11 +- flake.lock | 27 +- flake.nix | 17 +- gradle-env.nix | 453 --- gradle.lock | 3292 +++++++++++++++++ gradle.nix | 292 ++ gradle/libs.versions.toml | 16 +- gradle2nix.nix | 41 + 11 files changed, 3992 insertions(+), 499 deletions(-) create mode 100644 app/src/dist/share/gradle.nix delete mode 100644 gradle-env.nix create mode 100644 gradle.lock create mode 100644 gradle.nix create mode 100644 gradle2nix.nix diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d3a29e1..3140c14 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,7 +21,6 @@ dependencies { isTransitive = false } - //testRuntimeOnly(kotlin("reflect")) testImplementation(libs.kotest.assertions) testImplementation(libs.kotest.runner) testImplementation(libs.ktor.server.core) diff --git a/app/src/dist/share/gradle.nix b/app/src/dist/share/gradle.nix new file mode 100644 index 0000000..dba9916 --- /dev/null +++ b/app/src/dist/share/gradle.nix @@ -0,0 +1,292 @@ +# This file is generated by gradle2nix. +# +# Example usage (e.g. in default.nix): +# +# with (import {}); +# let +# buildGradle = callPackage ./gradle.nix {}; +# in +# buildGradle { +# lockFile = ./gradle.lock; +# +# src = ./.; +# +# gradleFlags = [ "installDist" ]; +# +# installPhase = '' +# mkdir -p $out +# cp -r app/build/install/myproject $out +# ''; +# } + +{ lib +, stdenv +, buildEnv +, fetchs3 +, fetchurl +, gradle +, maven +, runCommandLocal +, symlinkJoin +, writeText +, writeTextDir +}: + +{ + # Path to the lockfile generated by gradle2nix (e.g. gradle.lock). + lockFile +, pname ? "project" +, version ? null +, enableParallelBuilding ? true +# Arguments to Gradle used to build the project in buildPhase. +, gradleFlags ? [ "build" ] +# Enable debugging for the Gradle build; this will cause Gradle to run a debug server +# and wait for a JVM debugging client to attach. +, enableDebug ? false +# Additional code to run in the Gradle init script (init.gradle). +, extraInit ? "" +# Override the default JDK used to run Gradle itself. +, buildJdk ? null +# Override functions which fetch dependency artifacts. +# Keys in this set are URL schemes such as "https" or "s3". +# Values are functions which take a dependency in the form +# `{ urls, hash }` and fetch into the Nix store. For example: +# +# { +# s3 = { name, urls, hash }: fetchs3 { +# s3url = builtins.head urls; +# # TODO This doesn't work without patching fetchs3 to accept SRI hashes +# inherit name hash; +# region = "us-west-2"; +# credentials = { +# access_key_id = "foo"; +# secret_access_key = "bar"; +# }; +# }; +# } +, fetchers ? { } +, ... } @ args: + +let + inherit (builtins) + attrValues concatStringsSep elemAt filter fromJSON getAttr hasAttr head length match + removeAttrs replaceStrings sort; + + inherit (lib) + assertMsg concatMapStringsSep findFirst foldl' groupBy' hasSuffix hasPrefix last mapAttrs + mapAttrsToList optionalAttrs optionalString readFile removeSuffix unique versionAtLeast + versionOlder; + + inherit (lib.strings) sanitizeDerivationName; + + lockedDeps = fromJSON (readFile lockFile); + + toCoordinates = id: + let + coords = builtins.split ":" id; + in rec { + group = elemAt coords 0; + module = elemAt coords 2; + version = elemAt coords 4; + versionParts = parseVersion version; + }; + + parseVersion = version: + let + parts = builtins.split ":" version; + base = elemAt parts 0; + in + { + inherit base; + exact = base; + } + // optionalAttrs (length parts >= 2) ( + let + snapshot = elemAt parts 2; + exact = replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base; + parts = builtins.split "-" timestamp; + timestamp = findFirst (match "[0-9]{8}\.[0-9]{6}") parts; + buildNumber = let lastPart = last parts; in if match "[0-9]+" lastPart then lastPart else null; + in + { inherit snapshot exact timestamp buildNumber; } + ); + + fetchers' = { + http = fetchurl; + https = fetchurl; + } // fetchers; + + # Fetch urls using the scheme for the first entry only; there isn't a + # straightforward way to tell Nix to try multiple fetchers in turn + # and short-circuit on the first successful fetch. + fetch = name: { urls, hash }: + let + first = head urls; + scheme = head (builtins.match "([a-z0-9+.-]+)://.*" first); + fetch' = getAttr scheme fetchers'; + urls' = filter (hasPrefix scheme) urls; + in + fetch' { urls = urls'; inherit hash; }; + + mkModule = id: artifacts: + let + coords = toCoordinates id; + modulePath = "${replaceStrings ["."] ["/"] coords.group}/${coords.module}/${coords.version}"; + in + stdenv.mkDerivation { + pname = sanitizeDerivationName "${coords.group}-${coords.module}"; + version = coords.versionParts.exact; + + srcs = mapAttrsToList fetch artifacts; + + dontPatch = true; + dontConfigure = true; + dontBuild = true; + dontFixup = true; + dontInstall = true; + + preUnpack = '' + mkdir -p "$out/${modulePath}" + ''; + + unpackCmd = '' + cp "$curSrc" "$out/${modulePath}/$(stripHash "$curSrc")" + ''; + + sourceRoot = "."; + + preferLocalBuild = true; + allowSubstitutes = false; + }; + + offlineRepo = symlinkJoin { + name = if version != null then "${pname}-${version}-gradle-repo" else "${pname}-gradle-repo"; + paths = mapAttrsToList mkModule lockedDeps; + }; + + initScript = + let + inSettings = pred: script: + optionalString pred ( + if versionAtLeast gradle.version "6.0" then '' + gradle.beforeSettings { + ${script} + } + '' else '' + gradle.settingsEvaluated { + ${script} + } + '' + ); + in + writeText "init.gradle" '' + static def offlineRepo(RepositoryHandler repositories) { + repositories.clear() + repositories.mavenLocal { + url 'file:${offlineRepo}' + metadataSources { + gradleMetadata() + mavenPom() + artifact() + } + } + } + + ${inSettings (versionAtLeast gradle.version "6.0") '' + offlineRepo(it.buildscript.repositories) + ''} + + ${inSettings true '' + offlineRepo(it.pluginManagement.repositories) + ''} + + gradle.projectsLoaded { + allprojects { + buildscript { + offlineRepo(repositories) + } + } + } + + ${if versionAtLeast gradle.version "6.8" + then '' + gradle.beforeSettings { + it.dependencyResolutionManagement { + offlineRepo(repositories) + repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) + } + } + '' + else '' + gradle.projectsLoaded { + allprojects { + offlineRepo(repositories) + } + } + '' + } + + ${extraInit} + ''; + + buildProject = flags: '' + gradle --offline --no-daemon --no-build-cache \ + --info --full-stacktrace --warning-mode=all \ + --no-configuration-cache \ + -Dmaven.repo.local=${offlineRepo} \ + ${optionalString enableParallelBuilding "--parallel"} \ + ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ + ${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \ + --init-script ${initScript} \ + ${concatStringsSep " " flags} + ''; + +in stdenv.mkDerivation ({ + + dontStrip = true; + + nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ gradle ]; + + buildPhase = args.buildPhase or '' + runHook preBuild + + ( + set -eux + + ${optionalString (versionOlder gradle.version "8.0") '' + # Work around https://github.com/gradle/gradle/issues/1055 + TMPHOME="$(mktemp -d)" + mkdir -p "$TMPHOME/init.d" + export GRADLE_USER_HOME="$TMPHOME" + cp ${initScript} $TMPHOME/ + ''} + + gradle --offline --no-daemon --no-build-cache \ + --info --full-stacktrace --warning-mode=all \ + --no-configuration-cache --console=plain \ + -Dmaven.repo.local=${offlineRepo} \ + ${optionalString enableParallelBuilding "--parallel"} \ + ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ + ${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \ + --init-script ${initScript} \ + ${concatStringsSep " " gradleFlags} + ) + + runHook postBuild + ''; + + passthru = (args.passthru or {}) // { + inherit offlineRepo; + }; + +} // (removeAttrs args [ + "nativeBuildInputs" + "passthru" + "lockFile" + "gradleFlags" + "gradle" + "enableDebug" + "extraInit" + "buildJdk" + "fetchers" +])) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index 6e81f0a..c0074c0 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -2,7 +2,7 @@ package org.nixos.gradle2nix import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.core.context -import com.github.ajalt.clikt.output.CliktHelpFormatter +import com.github.ajalt.clikt.output.MordantHelpFormatter import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.arguments.multiple import com.github.ajalt.clikt.parameters.options.default @@ -10,7 +10,6 @@ import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.multiple import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.options.validate -import com.github.ajalt.clikt.parameters.types.choice import com.github.ajalt.clikt.parameters.types.enum import com.github.ajalt.clikt.parameters.types.file import java.io.File @@ -69,14 +68,20 @@ class Gradle2Nix : CliktCommand( help = "Path to write generated files (default: PROJECT-DIR)") .file(canBeFile = false, canBeDir = true) - val envFile: String by option( - "--env", "-e", + val lockFile: String by option( + "--lock-file", "-l", metavar = "FILENAME", - help = "Prefix for environment files (.json and .nix)") - .default("gradle-env") + help = "Name of the generated lock file" + ).default("gradle.lock") + + val nixFile: String by option( + "--nix-file", "-n", + metavar = "FILENAME", + help = "Name of the generated Nix file" + ).default("gradle.nix") private val logLevel: LogLevel by option( - "--log", "-l", + "--log", metavar = "LEVEL", help = "Print messages with priority of at least LEVEL") .enum() @@ -118,22 +123,20 @@ class Gradle2Nix : CliktCommand( init { context { - helpFormatter = CliktHelpFormatter(showDefaultValues = true) + helpFormatter = { MordantHelpFormatter(it, showDefaultValues = true) } } } @OptIn(ExperimentalSerializationApi::class) override fun run() { - val appHome = System.getProperty("org.nixos.gradle2nix.share") - if (appHome == null) { - System.err.println("Error: could not locate the /share directory in the gradle2nix installation") - } - val gradleHome = - System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") val logger = Logger(logLevel = logLevel, stacktrace = stacktrace) + val appHome = System.getProperty("org.nixos.gradle2nix.share")?.let(::File) + ?: error("could not locate the /share directory in the gradle2nix installation") + val gradleHome = + System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") val config = Config( - File(appHome), + appHome, gradleHome, gradleVersion, gradleJdk, @@ -156,6 +159,8 @@ class Gradle2Nix : CliktCommand( } else { metadata.deleteOnExit() } + } else { + metadata.deleteOnExit() } val buildSrcs = connect(config).use { connection -> @@ -187,11 +192,19 @@ class Gradle2Nix : CliktCommand( logger.error("dependency parsing failed", e) } - val json = config.outDir.resolve("$envFile.json") - logger.info("Writing environment to $json") - json.outputStream().buffered().use { output -> + config.outDir.mkdirs() + + val outLockFile = config.outDir.resolve(lockFile) + logger.info("Writing lock file to $outLockFile") + outLockFile.outputStream().buffered().use { output -> JsonFormat.encodeToStream(env, output) } + + val inNixFile = config.appHome.resolve("gradle.nix").takeIf { it.exists() } + ?: error("Couldn't locate gradle.nix in the the gradle2nix installation: ${config.appHome}") + val outNixFile = config.outDir.resolve(nixFile) + logger.info("Writing Nix builder to $outNixFile") + inNixFile.copyTo(outNixFile, overwrite = true) } } diff --git a/default.nix b/default.nix index 9371914..6e568fb 100644 --- a/default.nix +++ b/default.nix @@ -3,10 +3,12 @@ with pkgs; let - buildGradle = callPackage ./gradle-env.nix {}; + buildGradle = callPackage ./gradle.nix {}; gradle2nix = buildGradle { - envSpec = ./gradle-env.json; + pname = "gradle2nix"; + version = "2.0.0"; + lockFile = ./gradle.lock; src = lib.cleanSourceWith { filter = lib.cleanSourceFilter; @@ -35,7 +37,4 @@ let }; }; -in buildGradle { - envSpec = ./gradle-env.json; - pname = "gradle2nix"; -} +in gradle2nix diff --git a/flake.lock b/flake.lock index b754bf5..cda6dde 100644 --- a/flake.lock +++ b/flake.lock @@ -1,15 +1,29 @@ { "nodes": { + "flake-compat": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, "flake-utils": { "inputs": { "systems": "systems" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -20,11 +34,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1702855317, - "narHash": "sha256-5EXeUkoWvrfbZQQLVRn7Ebb9LOt3DkVm6T0M31/VhtM=", + "lastModified": 1715954240, + "narHash": "sha256-eC0zRYkazBc2cKz1VSzMLvCc9uHXlSQEr1Be+c5UV1w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3a16c6447466f4034c2d75fe7014477142c9513e", + "rev": "c2ea18b50a4c7fcb7c90402166769bf3b82b5aa9", "type": "github" }, "original": { @@ -36,6 +50,7 @@ }, "root": { "inputs": { + "flake-compat": "flake-compat", "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } diff --git a/flake.nix b/flake.nix index 38c1c52..23fbc87 100644 --- a/flake.nix +++ b/flake.nix @@ -2,20 +2,25 @@ description = "Wrap Gradle builds with Nix"; inputs = { + flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"; flake-utils.url = "github:numtide/flake-utils"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small"; }; - outputs = { self, flake-utils, nixpkgs }: + outputs = { self, flake-utils, nixpkgs, ... }: flake-utils.lib.eachDefaultSystem (system: - let pkgs = nixpkgs.legacyPackages.${system}; - in rec { - packages.gradle2nix = import ./default.nix { inherit pkgs; }; - defaultPackage = packages.gradle2nix; + let + pkgs = nixpkgs.legacyPackages.${system}; + buildGradle = pkgs.callPackage ./gradle.nix {}; + + in { + packages.default = pkgs.callPackage ./gradle2nix.nix { + inherit buildGradle; + }; apps.default = { type = "app"; - program = "${packages.gradle2nix}/bin/gradle2nix"; + program = "${self.packages.gradle2nix}/bin/gradle2nix"; }; }); } diff --git a/gradle-env.nix b/gradle-env.nix deleted file mode 100644 index 9aa69c6..0000000 --- a/gradle-env.nix +++ /dev/null @@ -1,453 +0,0 @@ -# This file is generated by gradle2nix. -# -# Example usage (e.g. in default.nix): -# -# with (import {}); -# let -# buildGradle = callPackage ./gradle-env.nix {}; -# in -# buildGradle { -# envSpec = ./gradle-env.json; -# -# src = ./.; -# -# gradleFlags = [ "installDist" ]; -# -# installPhase = '' -# mkdir -p $out -# cp -r app/build/install/myproject $out -# ''; -# } - -{ lib -, stdenv -, buildEnv -, fetchs3 -, fetchurl -, gradleGen -, maven -, runCommandLocal -, symlinkJoin -, writeText -, writeTextDir -}: - -{ - # Path to the environment spec generated by gradle2nix (e.g. gradle-env.json). - envSpec -, pname ? "project" -, version ? null -, enableParallelBuilding ? true -# Arguments to Gradle used to build the project in buildPhase. -, gradleFlags ? [ "build" ] -# Gradle package to use instead of the one generated by gradle2nix. -, gradlePackage ? null -# Enable debugging for the Gradle build; this will cause Gradle to run a debug server -# and wait for a JVM debugging client to attach. -, enableDebug ? false -# Additional code to run in the Gradle init script (init.gradle). -, extraInit ? "" -# Override the default JDK used to run Gradle itself. -, buildJdk ? null -# Override functions which fetch dependency artifacts. -# Keys in this set are URL schemes such as "https" or "s3". -# Values are functions which take a dependency in the form -# `{ urls, sha256 }` and fetch into the Nix store. For example: -# -# { -# s3 = { name, urls, hash }: fetchs3 { -# s3url = builtins.head urls; -# # TODO This doesn't work without patching fetchs3 to accept SRI hashes -# inherit name hash; -# region = "us-west-2"; -# credentials = { -# access_key_id = "foo"; -# secret_access_key = "bar"; -# }; -# }; -# } -, fetchers ? { } -, ... } @ args: - -let - inherit (builtins) - attrValues concatStringsSep elemAt filter fromJSON getAttr hasAttr head length match - replaceStrings sort; - - inherit (lib) - assertMsg concatMapStringsSep foldl' groupBy' hasSuffix hasPrefix last mapAttrs - mapAttrsToList optionalAttrs optionalString readFile removeSuffix unique versionAtLeast - versionOlder; - - inherit (lib.strings) sanitizeDerivationName; - - toCoordinates = id: - let - coords = builtins.split ":" id; - in { - group = elemAt coords 0; - module = elemAt coords 2; - }; - - parseVersion = version: - let - parts = builtins.split ":" version; - base = elemAt parts 0; - in - { - inherit base; - exact = base; - } - // optionalAttrs (length parts >= 2) ( - let - snapshot = elemAt parts 2; - exact = replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base; - parts = builtins.split "-" timestamp; - timestamp = findFirst (match "[0-9]{8}\.[0-9]{6}") parts; - buildNumber = let lastPart = last parts; in if match "[0-9]+" lastPart then lastPart else null; - in - { inherit snapshot exact timestamp buildNumber; } - ); - - snapshotVersion = { revision, snapshot ? null, ... }: - if snapshot == null - then revision - else replaceStrings ["SNAPSHOT"] [snapshot] revision; - - fetchers' = { - http = fetchurl; - https = fetchurl; - } // fetchers; - - # Fetch urls using the scheme for the first entry only; there isn't a - # straightforward way to tell Nix to try multiple fetchers in turn - # and short-circuit on the first successful fetch. - fetch = _: { urls, hash }: - let - first = head urls; - scheme = head (builtins.match "([a-z0-9+.-]+)://.*" first); - fetch' = getAttr scheme fetchers'; - urls' = filter (hasPrefix scheme) urls; - in - fetch' { urls = urls'; inherit hash; }; - - mkModuleMetadata = deps: - let - metadata = group: module: versions: - let - latest = foldl' - (l: v: if l == null || versionOlder l v then v else l) - null - versions; - - release = foldl' - (l: v: if !(hasSuffix "-SNAPSHOT" v) && (l == null || versionOlder l v) then v else l) - null - versions; - - path = "${replaceStrings ["."] ["/"] group}/${module}/maven-metadata.xml"; - - in - writeTextDir path '' - - - ${group} - ${module} - - ${optionalString (latest != null) "${latest}"} - ${optionalString (release != null) "${release}"} - - ${concatMapStringsSep "\n " (v: "${v}") versions} - - - - ''; - - groupedModules = groupBy - ({ organisation, module, ... }: "${organisation}:${module}") - (mapAttrsToList (_: dep: dep.attrs) deps); - - in - map - - - # mkSnapshotMetadata = { group, module }: version: artifacts: - # let - # versions' = filter (hasAttr "timestamp") versions; - - - # in - # map ({ base, exact, snapshot, timestamp, buildNumber }: - - # ) versions'; - - mkModule = { attrs, artifacts }: - let - modulePath = "${replaceStrings ["."] ["/"] attrs.orgPath}/${attrs.module}/${attrs.revision}"; - in - stdenv.mkDerivation { - pname = "${attrs.group}-${attrs.module}"; - version = snapshotVersion attrs.revision; - - srcs = mapAttrsToList fetch artifacts; - - dontPatch = true; - dontConfigure = true; - dontBuild = true; - dontFixup = true; - dontInstall = true; - - preUnpack = '' - mkdir -p "$out/${modulePath}" - ''; - - unpackCmd = '' - cp "$curSrc" "$out/${modulePath}/$(stripHash "$curSrc")" - ''; - - sourceRoot = "."; - - preferLocalBuild = true; - allowSubstitutes = false; - }; - - mkModules = deps: - mapAttrsToList (_: m: mkModule m) deps; - - # mkSnapshotMetadata = deps: - # let - # snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps; - - # modules = groupBy' - # (meta: dep: - # let - # id = dep.id; - # isNewer = dep.build > meta.buildNumber; - # # Timestamp values can be bogus, e.g. jitpack.io - # updated = if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null - # then replaceStrings ["."] [""] dep.timestamp - # else ""; - # in { - # groupId = id.group; - # artifactId = id.name; - # version = id.version; - # timestamp = if isNewer then dep.timestamp else meta.timestamp; - # buildNumber = if isNewer then dep.build else meta.buildNumber; - # lastUpdated = if isNewer then updated else meta.lastUpdated; - # versions = meta.versions or [] ++ [{ - # classifier = id.classifier or ""; - # extension = id.extension; - # value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}"; - # updated = updated; - # }]; - # } - # ) - # { - # timestamp = ""; - # buildNumber = -1; - # lastUpdated = ""; - # } - # (dep: "${replaceStrings ["."] ["/"] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml") - # snapshotDeps; - - # mkSnapshotVersion = version: '' - # - # ${optionalString (version.classifier != "") "${version.classifier}"} - # ${version.extension} - # ${version.value} - # ${optionalString (version.updated != "") "${version.updated}"} - # - # ''; - - # in - # attrValues (mapAttrs (path: meta: - # with meta; writeTextDir path '' - # - # - # ${groupId} - # ${artifactId} - # ${version} - # - # - # ${optionalString (timestamp != "") "${timestamp}"} - # ${optionalString (buildNumber != -1) "${toString buildNumber}"} - # - # ${optionalString (lastUpdated != "") "${lastUpdated}"} - # - # ${concatMapStringsSep "\n " mkSnapshotVersion versions} - # - # - # - # '' - # ) modules); - - mkRepo = name: deps: symlinkJoin { - name = "${name}-gradle-repo"; - paths = mkModules deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps; - }; - - mkInitScript = projectSpec: gradle: - let - repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies; - hasDependencies = mapAttrs (type: deps: deps != []) projectSpec.dependencies; - - inSettings = pred: script: - optionalString pred ( - if versionAtLeast gradle.version "6.0" then '' - gradle.beforeSettings { - ${script} - } - '' else '' - gradle.settingsEvaluated { - ${script} - } - '' - ); - in - assert (assertMsg (hasDependencies.settings -> versionAtLeast gradle.version "6.0") '' - Project `${projectSpec.name}' has settings script dependencies, such as settings - plugins, which are not supported by gradle2nix for Gradle versions prior to 6.0. - - Potential remedies: - - Pass `--gradle-version=' to the gradle2nix command. - - Patch the `settings.gradle[.kts]' file to remove script dependencies. - ''); - - writeText "init.gradle" '' - static def offlineRepo(RepositoryHandler repositories, String env, String path) { - repositories.clear() - repositories.maven { - name "Nix''${env.capitalize()}Offline" - url path - metadataSources { - it.gradleMetadata() - it.mavenPom() - it. - } - } - repositories.ivy { - name "Nix''${env.capitalize()}IvyOffline" - url path - layout "maven" - metadataSources { - it.gradleMetadata() - it.ivyDescriptor() - } - } - } - - ${inSettings (hasDependencies.settings && (versionAtLeast gradle.version "6.0")) '' - offlineRepo(it.buildscript.repositories, "settings", "${repos.settings}") - ''} - - ${inSettings (hasDependencies.plugin) '' - offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}") - ''} - - ${optionalString (hasDependencies.buildscript) '' - gradle.projectsLoaded { - allprojects { - buildscript { - offlineRepo(repositories, "buildscript", "${repos.buildscript}") - } - } - } - ''} - - ${optionalString (hasDependencies.project) ( - if versionAtLeast gradle.version "6.8" - then '' - gradle.beforeSettings { - it.dependencyResolutionManagement { - offlineRepo(repositories, "project", "${repos.project}") - repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) - } - } - '' - else '' - gradle.projectsLoaded { - allprojects { - offlineRepo(repositories, "project", "${repos.project}") - } - } - '' - )} - - ${extraInit} - ''; - - mkGradle = gradleSpec: - gradleGen.gradleGen { - inherit (gradleSpec) nativeVersion; - - name = "gradle-${gradleSpec.version}-${gradleSpec.type}"; - - src = fetchurl { - inherit (gradleSpec) url sha256; - }; - } // { - inherit (gradleSpec) version; - }; - - mkProjectEnv = projectSpec: rec { - inherit (projectSpec) name path version; - gradle = args.gradlePackage or mkGradle projectSpec.gradle; - initScript = mkInitScript projectSpec gradle; - }; - - gradleEnv = mapAttrs - (_: p: mkProjectEnv p) - (fromJSON (readFile envSpec)); - - projectEnv = gradleEnv.""; - pname = args.pname or projectEnv.name; - version = args.version or projectEnv.version; - - buildProject = env: flags: '' - cp ${env.initScript} "$GRADLE_USER_HOME/init.d" - - gradle --offline --no-daemon --no-build-cache \ - --info --full-stacktrace --warning-mode=all \ - ${optionalString enableParallelBuilding "--parallel"} \ - ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ - ${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \ - --init-script ${env.initScript} \ - ${optionalString (env.path != "") ''-p "${env.path}"''} \ - ${concatStringsSep " " flags} - ''; - - buildIncludedProjects = - concatStringsSep "\n" (mapAttrsToList - (_: env: buildProject env [ "build" ]) - (removeAttrs gradleEnv [ "" ])); - - buildRootProject = buildProject projectEnv gradleFlags; - - # in stdenv.mkDerivation (args // { - - # inherit pname version; - - # nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ projectEnv.gradle ]; - - # buildPhase = args.buildPhase or '' - # runHook preBuild - - # ( - # set -eux - - # # Work around https://github.com/gradle/gradle/issues/1055 - # TMPHOME="$(mktemp -d)" - # mkdir -p "$TMPHOME/init.d" - # export GRADLE_USER_HOME="$TMPHOME" - - # ${buildIncludedProjects} - # ${buildRootProject} - # ) - - # runHook postBuild - # ''; - - # dontStrip = true; - # }) - -in mkRepo pname (fromJSON (readFile envSpec)) diff --git a/gradle.lock b/gradle.lock new file mode 100644 index 0000000..0964060 --- /dev/null +++ b/gradle.lock @@ -0,0 +1,3292 @@ +{ + "com.fasterxml:oss-parent:48": { + "oss-parent-48.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/fasterxml/oss-parent/48/oss-parent-48.pom" + ], + "hash": "sha256-EbuiLYYxgW4JtiOiAHR0U9ZJGmbqyPXAicc9ordJAU8=" + } + }, + "com.fasterxml.jackson:jackson-bom:2.14.1": { + "jackson-bom-2.14.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.14.1/jackson-bom-2.14.1.pom" + ], + "hash": "sha256-eP35nlBQ/EhfQRfauMzL+2+mxoOF6184oJtlU3HUpsw=" + } + }, + "com.fasterxml.jackson:jackson-parent:2.14": { + "jackson-parent-2.14.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.14/jackson-parent-2.14.pom" + ], + "hash": "sha256-CQat2FWuOfkjV9Y/SFiJsI/KTEOl/kM1ItdTROB1exk=" + } + }, + "com.github.ajalt:colormath:1.2.0": { + "colormath-1.2.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.jar" + ], + "hash": "sha256-hqUffbsyq+QQ1UMx7GGsBoSlQ7JO6Xlnu6wKTmcp8DE=" + }, + "colormath-1.2.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.pom" + ], + "hash": "sha256-a3EKjQoQu+PgV5Xvf03ux3j9eQBbDBvA5cF4Ae5r3Z0=" + } + }, + "com.github.ajalt:mordant:1.2.1": { + "mordant-1.2.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.jar" + ], + "hash": "sha256-enFOuNJbTZun8lalTHVZzKh9heyQ1pQ98ZE8rUPbldY=" + }, + "mordant-1.2.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.pom" + ], + "hash": "sha256-8DLcV/gHnB9WJvvF8PZfz14SNA3ictgpsLVOkpeacro=" + } + }, + "com.github.ajalt.clikt:clikt:4.4.0": { + "clikt-4.4.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.module" + ], + "hash": "sha256-Z84+Rk1+r4GaBRQVd6IERrjkWbfk6RqCzoh7WKiOrWg=" + }, + "clikt-4.4.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.pom" + ], + "hash": "sha256-lrjYoujSS0misWTzN9LnAW3aiURAFFgNv/R4nilVZGk=" + } + }, + "com.github.ajalt.clikt:clikt-jvm:4.4.0": { + "clikt-jvm-4.4.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt-jvm/4.4.0/clikt-jvm-4.4.0.jar" + ], + "hash": "sha256-3UJMfEETwRTvwQPaP6uCzL7nSElwEpwHZKRXi1hnc3E=" + }, + "clikt-jvm-4.4.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt-jvm/4.4.0/clikt-jvm-4.4.0.module" + ], + "hash": "sha256-+7VuRAdirxrynHnd26lK40PX+e8ha6m57IjMkaxhoMs=" + }, + "clikt-jvm-4.4.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt-jvm/4.4.0/clikt-jvm-4.4.0.pom" + ], + "hash": "sha256-EsmrEMyQ/YPRPASDj5a8q/NksORNjdJ65V4VLGMxPA4=" + } + }, + "com.github.ajalt.colormath:colormath:3.5.0": { + "colormath-3.5.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.module" + ], + "hash": "sha256-WgMLkC+VqHlsIUX2sppgwpeNxmQR4I6miLT7eK6p7wk=" + }, + "colormath-3.5.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.pom" + ], + "hash": "sha256-HZZBrdkDXN1gex2qgJ7sFks8m6zFTysQOFHu1FHRefc=" + } + }, + "com.github.ajalt.colormath:colormath-jvm:3.5.0": { + "colormath-jvm-3.5.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.5.0/colormath-jvm-3.5.0.jar" + ], + "hash": "sha256-Q5NdsGVYtKrD3ZAKd1vj6JtUyfSIYBRX3yfSoXQxZ7A=" + }, + "colormath-jvm-3.5.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.5.0/colormath-jvm-3.5.0.module" + ], + "hash": "sha256-51pnwJ14NuUBlxvoNHiCxmFpsgcn3S4sQjmT8VLuAns=" + }, + "colormath-jvm-3.5.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.5.0/colormath-jvm-3.5.0.pom" + ], + "hash": "sha256-YGXSHOrrGuPcE0P00XWKWojHTj5hwg60TUknp8G3MtY=" + } + }, + "com.github.ajalt.mordant:mordant:2.5.0": { + "mordant-2.5.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.module" + ], + "hash": "sha256-KMoVBsOzOqA5GK9FWSHfiv49oLtN3O5sezdOAG3g4bY=" + }, + "mordant-2.5.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.pom" + ], + "hash": "sha256-CM7jeOmaKfiAw1DUfe6R2H1ypc75WfaoysEd2FYT4VU=" + } + }, + "com.github.ajalt.mordant:mordant-jvm:2.5.0": { + "mordant-jvm-2.5.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant-jvm/2.5.0/mordant-jvm-2.5.0.jar" + ], + "hash": "sha256-E9wdFUB0kM+j6bxUAQ8DHWpcUrc100FcxxRPC0aAqtc=" + }, + "mordant-jvm-2.5.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant-jvm/2.5.0/mordant-jvm-2.5.0.module" + ], + "hash": "sha256-HDNjczAEy0z54b/mT9xjIiW8dTXVbrhxApdGf8V7wK8=" + }, + "mordant-jvm-2.5.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant-jvm/2.5.0/mordant-jvm-2.5.0.pom" + ], + "hash": "sha256-095n7fFjX1ytZvkcVnXx+IfJDTuVlPfngQUgfxK04F0=" + } + }, + "com.github.johnrengelman:shadow:8.1.1": { + "shadow-8.1.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.jar" + ], + "hash": "sha256-CEGXVVWQpTuyG1lQijMwVZ9TbdtEjq/R7GdfVGIDb88=" + }, + "shadow-8.1.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.module" + ], + "hash": "sha256-nQ87SqpniYcj6vbF6c0nOHj5V03azWSqNwJDYgzgLko=" + }, + "shadow-8.1.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.pom" + ], + "hash": "sha256-Mu55f8hDI3xM5cSeX0FSxYoIlK/OCg6SY25qLU/JjDU=" + } + }, + "com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:8.1.1": { + "com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/8.1.1/com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom" + ], + "hash": "sha256-PLOIa5ffbgZvEIwxayGfJiyXw8st9tp4kn5kXetkPLA=" + } + }, + "com.gradle.plugin-publish:com.gradle.plugin-publish.gradle.plugin:1.2.1": { + "com.gradle.plugin-publish.gradle.plugin-1.2.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/plugin-publish/com.gradle.plugin-publish.gradle.plugin/1.2.1/com.gradle.plugin-publish.gradle.plugin-1.2.1.pom" + ], + "hash": "sha256-60lBRA8TGZbmT6SCDc264js95UhBi6ke9MY0pqcfVMs=" + } + }, + "com.gradle.publish:plugin-publish-plugin:1.2.1": { + "plugin-publish-plugin-1.2.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" + ], + "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" + }, + "plugin-publish-plugin-1.2.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" + ], + "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" + }, + "plugin-publish-plugin-1.2.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom" + ], + "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" + } + }, + "com.squareup.okio:okio:3.9.0": { + "okio-3.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar" + ], + "hash": "sha256-5RilmFYnOh/OGKx9E938aQ3vphItflzQDK4Zti0DR9k=" + }, + "okio-3.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.module" + ], + "hash": "sha256-aNHIef9liTHQKzrb6vu1EuFjwgqQyt8H2QyNvqfnYhA=" + }, + "okio-3.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.pom" + ], + "hash": "sha256-FPNR2puXtDaeP26PaWsK1ANtFNIbD9l6pcjG7BW+fZA=" + } + }, + "com.squareup.okio:okio-jvm:3.9.0": { + "okio-jvm-3.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.jar" + ], + "hash": "sha256-3cOG/xS9JdXJNBZxlur0WxjeTyjhxVpNs3rllMv9N+Q=" + }, + "okio-jvm-3.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.module" + ], + "hash": "sha256-z5coTsYbtR5t/Lx/K22VVsm3s+PLIswOLU8O7782GVs=" + }, + "okio-jvm-3.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.pom" + ], + "hash": "sha256-VEiNRUqsyvaPcZnz3l3Ns4CBblfUYJBJF06FZSAROH4=" + } + }, + "com.typesafe:config:1.4.3": { + "config-1.4.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.jar" + ], + "hash": "sha256-itpMGFznJBZxLWPgta/cXwCcDN9AXl8m7+zfFWql37Y=" + }, + "config-1.4.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.pom" + ], + "hash": "sha256-tn6vqd0iD/h9ANumiACDpSlqXgxsAxA/XUuOHaEDD/M=" + } + }, + "commons-io:commons-io:2.11.0": { + "commons-io-2.11.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar" + ], + "hash": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=" + }, + "commons-io-2.11.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.pom" + ], + "hash": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k=" + } + }, + "io.fabric8:kubernetes-client-bom:5.12.2": { + "kubernetes-client-bom-5.12.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/io/fabric8/kubernetes-client-bom/5.12.2/kubernetes-client-bom-5.12.2.pom" + ], + "hash": "sha256-6qA8FpVlaNVKa6Q31J1Ay/DdjpOXf5hDGCQldrZQvDs=" + } + }, + "io.github.classgraph:classgraph:4.8.172": { + "classgraph-4.8.172.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.jar" + ], + "hash": "sha256-wWseIxpziZL3KVC1Jc774FSkCP9kLsy7IcrdVHCgXyI=" + }, + "classgraph-4.8.172.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.pom" + ], + "hash": "sha256-gD2mlHTiB6oi/xnshXE3MGrU4ahz4V98Xv0sqer9W74=" + } + }, + "io.github.java-diff-utils:java-diff-utils:4.12": { + "java-diff-utils-4.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar" + ], + "hash": "sha256-mZCiA5d49rTMlHkBQcKGiGTqzuBiDGxFlFESGpAc1bU=" + }, + "java-diff-utils-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.pom" + ], + "hash": "sha256-wm4JftyOxoBdExmBfSPU5JbMEBXMVdxSAhEtj2qRZfw=" + } + }, + "io.github.java-diff-utils:java-diff-utils-parent:4.12": { + "java-diff-utils-parent-4.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.12/java-diff-utils-parent-4.12.pom" + ], + "hash": "sha256-2BHPnxGMwsrRMMlCetVcF01MCm8aAKwa4cm8vsXESxk=" + } + }, + "io.github.pdvrieze.xmlutil:core:0.86.3": { + "core-0.86.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.jar" + ], + "hash": "sha256-ikZHG7Y7PHhzlsu6WqL2TU4zOgOSAiRBrhIRHn5yjJE=" + }, + "core-0.86.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.module" + ], + "hash": "sha256-MzlXsdCR2LrPqwYCCGgi+a2S9hMCy3Ru8g4Z9nprTbk=" + }, + "core-0.86.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.pom" + ], + "hash": "sha256-ngeyUCJI+U7AYn9Wsn3wiBySBCrfzoCg35oa6sQWg4M=" + } + }, + "io.github.pdvrieze.xmlutil:core-jvm:0.86.3": { + "core-jvm-0.86.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar" + ], + "hash": "sha256-kVJ9hv6gS9YYPRQKCfENqy3qcnrxLSfZFl7jQuo9Dt4=" + }, + "core-jvm-0.86.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.module" + ], + "hash": "sha256-FgIJExZWo2dDGWXYAYk7J3fuguD3ZmaD+nXE+Wck/wc=" + }, + "core-jvm-0.86.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.pom" + ], + "hash": "sha256-oBGIoPlVW1s7nZLlQz242AJ6vjleD/cIBRU+8v6qf4U=" + } + }, + "io.github.pdvrieze.xmlutil:serialization-jvm:0.86.3": { + "serialization-jvm-0.86.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar" + ], + "hash": "sha256-nOJz3LhguSpb8uw2rR4qEbQa7YnGyYTKc+h+/17aG9A=" + }, + "serialization-jvm-0.86.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.module" + ], + "hash": "sha256-3ppDm3mA++bMPDS8rZyEqIMVmdyHZNceD2c93Ho91Jo=" + }, + "serialization-jvm-0.86.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.pom" + ], + "hash": "sha256-OX1XqPVTaUEf7HRETH1NTLaeyYANUkSTrGHekJIl4wc=" + } + }, + "io.kotest:kotest-assertions-api:5.9.0": { + "kotest-assertions-api-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.jar" + ], + "hash": "sha256-JmNIEcOE+VRVVMJUBfLZCMEaeupal1mZM/gsAIRsVAg=" + }, + "kotest-assertions-api-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.module" + ], + "hash": "sha256-qFQu4m/P0+8yxm5e3mjeuvjql90heZH0HSAje7UpT4U=" + }, + "kotest-assertions-api-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.pom" + ], + "hash": "sha256-GjEMzEBJd0cpFIPrOwUMbIle7KTONzPwHdkkZ6ZV8sw=" + } + }, + "io.kotest:kotest-assertions-api-jvm:5.9.0": { + "kotest-assertions-api-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.jar" + ], + "hash": "sha256-Sv9MqD6SBssjiDJd+HKXb1GekloGlJSr7CkuwxFMDQk=" + }, + "kotest-assertions-api-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.module" + ], + "hash": "sha256-XITlW45flkCcy1pCoS3ElCbl1ucWSnMy3wy4wrK21L4=" + }, + "kotest-assertions-api-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.pom" + ], + "hash": "sha256-1g6ynf1tj7NSGYTX+sJaE0AHFHa7ceksV1X70VpaZzY=" + } + }, + "io.kotest:kotest-assertions-core:5.9.0": { + "kotest-assertions-core-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.jar" + ], + "hash": "sha256-+uWJ9I5hs7uiaHvvMbbneu2Ji6dswFU3rdFQ7pSsmkY=" + }, + "kotest-assertions-core-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.module" + ], + "hash": "sha256-p3KZqaKYbphakO0KsWd0pzMPeu/CUnOT3E1HeNPI4sM=" + }, + "kotest-assertions-core-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.pom" + ], + "hash": "sha256-qvu+DMIo9BTt2Va2lHINRZLna47v+MiK211RRQRhu7o=" + } + }, + "io.kotest:kotest-assertions-core-jvm:5.9.0": { + "kotest-assertions-core-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.jar" + ], + "hash": "sha256-TIngmms4JoES/eJqC1LvVLsXhDtBv9IV958s9M3QJ4w=" + }, + "kotest-assertions-core-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.module" + ], + "hash": "sha256-OinQMJG5EyNIVgv1DKJKzEvBzIq+MGE8y/5alzt/F48=" + }, + "kotest-assertions-core-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.pom" + ], + "hash": "sha256-pmgjeAvzFo5CAqPmg6PWZ1K5yg4aaqx4FL/mng155NU=" + } + }, + "io.kotest:kotest-assertions-shared:5.9.0": { + "kotest-assertions-shared-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.jar" + ], + "hash": "sha256-EoSglpgVz7PTk/TOTF2tW1Dc1wvxN4h78MA0yqIVYeE=" + }, + "kotest-assertions-shared-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.module" + ], + "hash": "sha256-KK3K96Q94fICNFI+4csorIc7ztp2VESW8cU1NF2gCJM=" + }, + "kotest-assertions-shared-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.pom" + ], + "hash": "sha256-IGd1Qmuhf36c1WjpZMWGMMNCt2c67pNPIiFVLNDwBww=" + } + }, + "io.kotest:kotest-assertions-shared-jvm:5.9.0": { + "kotest-assertions-shared-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.jar" + ], + "hash": "sha256-b9wtfMr8N1c/rhZ/hOMditN/2DHArXclPzDbuyedJlY=" + }, + "kotest-assertions-shared-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.module" + ], + "hash": "sha256-VGmhRQo07HywKyDjaY3dkHYsEVH6tba/RlWXlrl4OAs=" + }, + "kotest-assertions-shared-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.pom" + ], + "hash": "sha256-VQxkW4k0LR9iU/CXo+CzdyLsOTFxctB+E02E7A8IxKY=" + } + }, + "io.kotest:kotest-common:5.9.0": { + "kotest-common-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.jar" + ], + "hash": "sha256-DGXHvQS/2EX3Lt6hmNrNtLWyBebrIbnsgzSvYMZNpfU=" + }, + "kotest-common-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.module" + ], + "hash": "sha256-lqW8WbrWuITytzfvAR+ytKiZW+NO9eTnDSw99nKoh4M=" + }, + "kotest-common-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.pom" + ], + "hash": "sha256-LGnqBsbRBz1dH/ruD2wS3Lv6W8qOYXgbi8QNi2t+BzY=" + } + }, + "io.kotest:kotest-common-jvm:5.9.0": { + "kotest-common-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.jar" + ], + "hash": "sha256-yLAfI5/3kmxV/2oDYRqXpWSdWS6a0GqhBPM9RJR2uIg=" + }, + "kotest-common-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.module" + ], + "hash": "sha256-uWwklcyvr/yACGF+Sk7NRBmR/tU8QyGhECjxxIspgLE=" + }, + "kotest-common-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.pom" + ], + "hash": "sha256-DJw4J3/CngNTIDXkXDgi3C4B4yC9lPysTGsxMUIJAhM=" + } + }, + "io.kotest:kotest-extensions:5.9.0": { + "kotest-extensions-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.module" + ], + "hash": "sha256-mr4zuEi4bBoBg3YOreTLxF1OEvxEySCz+Dnn6A146rs=" + }, + "kotest-extensions-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.pom" + ], + "hash": "sha256-r36/K79pkmBmSLcdzJdHqDG43LML6A/hCfMDgOf1veU=" + } + }, + "io.kotest:kotest-extensions-jvm:5.9.0": { + "kotest-extensions-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.jar" + ], + "hash": "sha256-Mb5rCyZdL3cS0KdeaOQv6wuOYV+r8BkInn+/5Zc04dA=" + }, + "kotest-extensions-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.module" + ], + "hash": "sha256-BOtQGGme33ZRDZkDA3UZf1+XLUhkfrBNVr4B2EgdTkU=" + }, + "kotest-extensions-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.pom" + ], + "hash": "sha256-6eDaRU1z0/8r4unJOC2QiGFdpHmLjeu6d71tQ0bOa9I=" + } + }, + "io.kotest:kotest-framework-api:5.9.0": { + "kotest-framework-api-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.module" + ], + "hash": "sha256-aGM5P0GVr+lxcVUTl0jDYdWU7KIlL+zs2qZQFg2moXI=" + }, + "kotest-framework-api-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.pom" + ], + "hash": "sha256-DR9H1blAce2rfDWIUeqSozNx5xpjl2AZiLf9cZEZCAs=" + } + }, + "io.kotest:kotest-framework-api-jvm:5.9.0": { + "kotest-framework-api-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.jar" + ], + "hash": "sha256-2SRLxofIOCISZyWzynZ25FZEemBRIQ4lF1z4qyDAtCM=" + }, + "kotest-framework-api-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.module" + ], + "hash": "sha256-losVlXIzbDC3+cKX/PvrfRyPgg6u1lx8d6TLMznY7WI=" + }, + "kotest-framework-api-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.pom" + ], + "hash": "sha256-+M0upKNYQEr5M+QjsDDRT5bGVfO+fqryE9H9cywekwg=" + } + }, + "io.kotest:kotest-framework-concurrency:5.9.0": { + "kotest-framework-concurrency-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.module" + ], + "hash": "sha256-3X24UL0kQmjOFPnvo70y25AKgbmAW5TYJCSnWJIDxB0=" + }, + "kotest-framework-concurrency-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.pom" + ], + "hash": "sha256-ML0NEgw6Tr0BJp5gw3CrNhStctHDX3/qq+/lDSlVC7I=" + } + }, + "io.kotest:kotest-framework-concurrency-jvm:5.9.0": { + "kotest-framework-concurrency-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.jar" + ], + "hash": "sha256-B5txinLAdedCmHOz+VGoVROoA2xeOnbd3ocWEPKbd7U=" + }, + "kotest-framework-concurrency-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.module" + ], + "hash": "sha256-p8YMX+xNYGBE50UAR+JfoGITADC4xYDfDikqYBWzTbQ=" + }, + "kotest-framework-concurrency-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.pom" + ], + "hash": "sha256-xoO5KKNSADRo0j5ZQOnEJEjpknBpfEu8pHOavXSLDbc=" + } + }, + "io.kotest:kotest-framework-discovery:5.9.0": { + "kotest-framework-discovery-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.module" + ], + "hash": "sha256-L+Hiv5t/+eBNzZXjEI7jtfFURkTgZAP7lLkHZIOVCUA=" + }, + "kotest-framework-discovery-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.pom" + ], + "hash": "sha256-ts05NMKO1qZRr4RysuNqOuQMRWldI7As5JE7IULEgnE=" + } + }, + "io.kotest:kotest-framework-discovery-jvm:5.9.0": { + "kotest-framework-discovery-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.jar" + ], + "hash": "sha256-miiiFNkV20R5bwZcHP+7s8I2uJtqazg5UFjYCrg+ggM=" + }, + "kotest-framework-discovery-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.module" + ], + "hash": "sha256-7Xaj5/OnkkcbTUm+u+5pKPGEU0gLopHp5yBJlgAASCE=" + }, + "kotest-framework-discovery-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.pom" + ], + "hash": "sha256-sGGEOZMEvWc0UeszHyP3aqPtPf1dpMeb8dbiIb2MjFs=" + } + }, + "io.kotest:kotest-framework-engine:5.9.0": { + "kotest-framework-engine-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.module" + ], + "hash": "sha256-gZN/CF6jy3S1hxETTtC7VsDymc/DFz27IUVCrMyVJxc=" + }, + "kotest-framework-engine-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.pom" + ], + "hash": "sha256-xBA8Jfhv52zZKiA1irX1jbAUMtcKuBphBChd2MW998U=" + } + }, + "io.kotest:kotest-framework-engine-jvm:5.9.0": { + "kotest-framework-engine-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.jar" + ], + "hash": "sha256-h6Dxzb4o39OyLp5GgSEzCx1zPdoFwkTvhs/ZHaoWYlU=" + }, + "kotest-framework-engine-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.module" + ], + "hash": "sha256-ESmBvZzHXpTgQAm6W7dkWm8AeVEwU79W72QiUnSoBDs=" + }, + "kotest-framework-engine-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.pom" + ], + "hash": "sha256-v8ljQokqqX+yqFM+r+m1elKQlQdCH6sw2K71m5QpGpI=" + } + }, + "io.kotest:kotest-runner-junit5:5.9.0": { + "kotest-runner-junit5-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.jar" + ], + "hash": "sha256-CJ4kQXv59sNO7Fcg7rssvMguooVezvkBM+sX4QedWGg=" + }, + "kotest-runner-junit5-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.module" + ], + "hash": "sha256-AfB70s+KHo+Z+dDmSpQ7X6cxE//szocwqMQ08nZSgvc=" + }, + "kotest-runner-junit5-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.pom" + ], + "hash": "sha256-xeE4b8vdz+kKt18wWVnzltXRxu7l2y/549Ik8QVsmpM=" + } + }, + "io.kotest:kotest-runner-junit5-jvm:5.9.0": { + "kotest-runner-junit5-jvm-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.jar" + ], + "hash": "sha256-dpV0ADmfVaJBZFgUGfKj0H9yfEiwPcOXLiV24YdH6iI=" + }, + "kotest-runner-junit5-jvm-5.9.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.module" + ], + "hash": "sha256-v6MTM0BhaveK/YqdH3bwAQ02Wx6GE2DWpzMqowrKy4s=" + }, + "kotest-runner-junit5-jvm-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.pom" + ], + "hash": "sha256-wuOpHya7dfndAfMnW8E5OL6Lp3KEIBwbov4DODC2xKo=" + } + }, + "io.ktor:ktor-events:2.3.11": { + "ktor-events-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.jar" + ], + "hash": "sha256-qfTivW7ALrt5prOcEEr++k281IA7ufrV2e1XCTRX8G0=" + }, + "ktor-events-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.module" + ], + "hash": "sha256-YScMYk6JE8UBLw87YF0ThAlwNl+5JOw8fuO0hLxTWXY=" + }, + "ktor-events-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.pom" + ], + "hash": "sha256-hcFsb/+tI+3auG+gJU68tB7hhOh9M3Va41ITctMZ8ug=" + } + }, + "io.ktor:ktor-events-jvm:2.3.11": { + "ktor-events-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.jar" + ], + "hash": "sha256-92Dmk7tpaq9srFhEXFI2hY0QzXwVCErCDHp1Ba50kac=" + }, + "ktor-events-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.module" + ], + "hash": "sha256-HW+ysABOvT9w8g0YdMXRR9zcSn4pjM1ogdM/msx9tkE=" + }, + "ktor-events-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.pom" + ], + "hash": "sha256-nssYQanQ3FgvP+/Yl7vKKpqntHd69GbL65epV0IHdAY=" + } + }, + "io.ktor:ktor-http:2.3.11": { + "ktor-http-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.jar" + ], + "hash": "sha256-9PADOhT6whJBqLu+HFzxkzvRA+3I6eJ37j7gwcvTRkI=" + }, + "ktor-http-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.module" + ], + "hash": "sha256-UBgBa5qlACv5oFBoGsFuBRp/uICUhPFWnvdqFpxKKiU=" + }, + "ktor-http-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.pom" + ], + "hash": "sha256-tw7Nks9eqraVRQQDQ19SvqCDJe1VtNKDM1FN0diI0Dc=" + } + }, + "io.ktor:ktor-http-cio:2.3.11": { + "ktor-http-cio-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.module" + ], + "hash": "sha256-/lHSv+0gYTxLvcY4yT1X1ZmldFlXloNtjO7Zybep+n8=" + }, + "ktor-http-cio-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.pom" + ], + "hash": "sha256-p4wT0HqIQfw3MAGgGVPYKT2YDL972n81+FR3+1Ya+RA=" + } + }, + "io.ktor:ktor-http-cio-jvm:2.3.11": { + "ktor-http-cio-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.jar" + ], + "hash": "sha256-bIKoW5GMwAsSSn2w9HTtOH8FFIpCKWgQWG7lkTRNDn8=" + }, + "ktor-http-cio-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.module" + ], + "hash": "sha256-HzV2/lizf5nFj9TuJFmgRmiEoeWTw9Qb5/2/wQ5STtU=" + }, + "ktor-http-cio-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.pom" + ], + "hash": "sha256-vy9Vnf0Mx1NzkCGv7nlbr8U3U8ajWIiGa2J0Fg3stdY=" + } + }, + "io.ktor:ktor-http-jvm:2.3.11": { + "ktor-http-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.jar" + ], + "hash": "sha256-BQMz4biz/zBwvjIW4fPuePqdZQrI0hEEHQW/SCWbTfY=" + }, + "ktor-http-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.module" + ], + "hash": "sha256-BIraZkNbJkbTFrDOjX+aXfau8yuP1KEQ6vaPiqI8zII=" + }, + "ktor-http-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.pom" + ], + "hash": "sha256-CI9yJI9u5cZPW8Wa4i6MzE5ZqDVZ7U89ZGy9vtUDqIU=" + } + }, + "io.ktor:ktor-io:2.3.11": { + "ktor-io-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.jar" + ], + "hash": "sha256-skZKEoTyY57muhpCVDIsxUsFMmWHpG+AFUy9tXAYC7I=" + }, + "ktor-io-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.module" + ], + "hash": "sha256-RvrHp728UxfkD6bGYZpMUr7X02JaNP2kWRjDyq04r2A=" + }, + "ktor-io-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.pom" + ], + "hash": "sha256-lFDUN7vjB58G5wAePQmaH2l7Fc7UWO8BorXFd1cVrPI=" + } + }, + "io.ktor:ktor-io-jvm:2.3.11": { + "ktor-io-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.jar" + ], + "hash": "sha256-nJt0vx7xFuSybVyUUJoFd7yhQPgwqAzz9S0kVM0BEhs=" + }, + "ktor-io-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.module" + ], + "hash": "sha256-EIlmqdlJzZRN/9MqUTc0pPKJyCRGt4nACmopTWM7ER8=" + }, + "ktor-io-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.pom" + ], + "hash": "sha256-mbL5+MkKES6IVeY55AE+jXlYxCD8UVGq1iha3NdD0Ak=" + } + }, + "io.ktor:ktor-network:2.3.11": { + "ktor-network-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.module" + ], + "hash": "sha256-SlUAXFfLaTqLMK+eWk302ojX/kU93TRlvWsJEAkmbCw=" + }, + "ktor-network-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.pom" + ], + "hash": "sha256-eV7oO+aNHBYV/JibHkjPGNbeNvWK9vBb/7QjtOnsC18=" + } + }, + "io.ktor:ktor-network-jvm:2.3.11": { + "ktor-network-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.jar" + ], + "hash": "sha256-9njugGQUgEV28XM5R2Lg4busruMHOaBI1Oy0g4fe5GY=" + }, + "ktor-network-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.module" + ], + "hash": "sha256-jrPuxh+wtawI9Xvqfr83Q/Bcim9DImLUcuVu7JsuGZU=" + }, + "ktor-network-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.pom" + ], + "hash": "sha256-MdRLyv4uXbBWgn3XwoxljAHVxY5NC2IsHJ0m63SpqwM=" + } + }, + "io.ktor:ktor-serialization:2.3.11": { + "ktor-serialization-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.jar" + ], + "hash": "sha256-I/oFsvofdMi+5JsvpNCmzRaXdvXLw7e00I5nfmr7n14=" + }, + "ktor-serialization-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.module" + ], + "hash": "sha256-RY1rJzbNfObY9IMGdTEbJiZbM5tYoX0nLc0RFXI8lHI=" + }, + "ktor-serialization-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.pom" + ], + "hash": "sha256-Cr072jnh1FQGF7zPRAO3J56g7KkUSo1q/+F/OPc8PGU=" + } + }, + "io.ktor:ktor-serialization-jvm:2.3.11": { + "ktor-serialization-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.jar" + ], + "hash": "sha256-TC80IiaKlf63dwx10dJ+CdAJ3Wl8m0vyb9kxczLbUD4=" + }, + "ktor-serialization-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.module" + ], + "hash": "sha256-9ys7vY/D7I5DSDSPQt3OUq8+Y/Cens9C5M2WkG2R1Tg=" + }, + "ktor-serialization-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.pom" + ], + "hash": "sha256-nVGClI7BadSZPzuAFmETNuh/2PrjgidwH1imzh/Enp8=" + } + }, + "io.ktor:ktor-server-core:2.3.11": { + "ktor-server-core-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.jar" + ], + "hash": "sha256-PztUA1uh8KXfyq3LoJd62JDVDEUa7iLVPvTVa1Om/O4=" + }, + "ktor-server-core-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.module" + ], + "hash": "sha256-9KlYTH9QBmFcpCiXTk3Tz6Rr9fgq9AgjV51bPBTHYhQ=" + }, + "ktor-server-core-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.pom" + ], + "hash": "sha256-111k/+joPoOX6n+cgCufGnnAjtYXzbHpj1hAzqNEVZo=" + } + }, + "io.ktor:ktor-server-core-jvm:2.3.11": { + "ktor-server-core-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.jar" + ], + "hash": "sha256-6mi102OoWntBxzISf3BLDpj+OqwSJSl2PYrnAEf788o=" + }, + "ktor-server-core-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.module" + ], + "hash": "sha256-FMtHfiKcHfwZgmJjHqajyNXVabXFm0zExQ7fM++s0DE=" + }, + "ktor-server-core-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.pom" + ], + "hash": "sha256-maADHI6bP1m7Bkt2pdkoD4tx19nGLtwl2hfC1E+CeeE=" + } + }, + "io.ktor:ktor-server-host-common:2.3.11": { + "ktor-server-host-common-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.module" + ], + "hash": "sha256-cg0+sO8u7FRrD4iq4pL0uILk+Pze6GY7D6KyiEXHt04=" + }, + "ktor-server-host-common-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.pom" + ], + "hash": "sha256-B8Z/z3Xv1x18tmbpWfd/dSwCj1iywfoiUHLzYhGYVqw=" + } + }, + "io.ktor:ktor-server-host-common-jvm:2.3.11": { + "ktor-server-host-common-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.jar" + ], + "hash": "sha256-HjvNeLHpjsoQjZJ7u1QdDZtyP7IYcm1h6Fucpq4cjis=" + }, + "ktor-server-host-common-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.module" + ], + "hash": "sha256-xwLIGRtpP1d1ZpHRRkZ4u6mOhtCEXQKDdiGZS+uRlTI=" + }, + "ktor-server-host-common-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.pom" + ], + "hash": "sha256-Gr877I0aFWryXIDK700+sC3wxIGN1CghIW2+SCeZXfQ=" + } + }, + "io.ktor:ktor-server-netty:2.3.11": { + "ktor-server-netty-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.jar" + ], + "hash": "sha256-Wkb9vED9LXglmIPEzG6vO14pDdB9HEbqiO6j1I9QV3I=" + }, + "ktor-server-netty-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.module" + ], + "hash": "sha256-LUtE8EMgnpzg9IDdZmgoSbkyOfKIIBo1UqglQd1rE30=" + }, + "ktor-server-netty-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.pom" + ], + "hash": "sha256-qxGxtuLNQMM816OjnKeeSZlw/rFhIoI3ClZfEn0kXSM=" + } + }, + "io.ktor:ktor-server-netty-jvm:2.3.11": { + "ktor-server-netty-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.jar" + ], + "hash": "sha256-+YxIUr325irKzWu54yreP13lsmM+UY7F7B2tmD1XX5E=" + }, + "ktor-server-netty-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.module" + ], + "hash": "sha256-NYOIDN8BaY3r8qB3UPuenAvD369DZCLiRZw+f31Arig=" + }, + "ktor-server-netty-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.pom" + ], + "hash": "sha256-J+fP+sEa+ugSVjyPhVozJlMEIYLAGp6UfEg/Rzme35A=" + } + }, + "io.ktor:ktor-utils:2.3.11": { + "ktor-utils-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.jar" + ], + "hash": "sha256-SJeUj4AL85YHGPuaWv9QErcht7iWZjhZWCbGstp8TiU=" + }, + "ktor-utils-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.module" + ], + "hash": "sha256-wFGiUpPmUdQIGWPVFfMxsnPBevWpKYBs88mYdisk9is=" + }, + "ktor-utils-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.pom" + ], + "hash": "sha256-pP/0keaxdRMn261KJ+UR/U4xNpR/NyD32ovBtl2Ny6M=" + } + }, + "io.ktor:ktor-utils-jvm:2.3.11": { + "ktor-utils-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.jar" + ], + "hash": "sha256-1QjohTKUyKcuVhoSkBJ97q+SdC4tgQNqa5tzyCsx7WE=" + }, + "ktor-utils-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.module" + ], + "hash": "sha256-41aI1T/NEKfizORi3PjCB81MGkOD8ZU46xU/9wogbp4=" + }, + "ktor-utils-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.pom" + ], + "hash": "sha256-H412FDKI60HeKk4U/pf7CtRtMdfUpXwHo7voHSTOTKA=" + } + }, + "io.ktor:ktor-websockets:2.3.11": { + "ktor-websockets-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.jar" + ], + "hash": "sha256-XdKULp+AhVyqGFXiShT3DxqHWcg3tFTplRdqPMl3QVg=" + }, + "ktor-websockets-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.module" + ], + "hash": "sha256-t4zNNnaq5vyJ3WfnvqhKG8Dy1Wj2dS+njB8umGelDY4=" + }, + "ktor-websockets-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.pom" + ], + "hash": "sha256-j87iI7x63u3+9R+IaRZJrsf3edm+JowIJ7tuiow0Nmw=" + } + }, + "io.ktor:ktor-websockets-jvm:2.3.11": { + "ktor-websockets-jvm-2.3.11.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.jar" + ], + "hash": "sha256-0DB7Dv/GNJYymcO1L1E/eM+1xWY67t6dxCS4VZtT66o=" + }, + "ktor-websockets-jvm-2.3.11.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.module" + ], + "hash": "sha256-NHCtWpjcwUnywUXqTgiQ1wY6UMd8JsXOk/fhySJqKQY=" + }, + "ktor-websockets-jvm-2.3.11.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.pom" + ], + "hash": "sha256-y26TtzMFAIabQ+RBnTzdYMa7FoD493PwfLGLAZ2S7V8=" + } + }, + "io.netty:netty-bom:4.1.86.Final": { + "netty-bom-4.1.86.Final.pom": { + "urls": [ + "https://plugins.gradle.org/m2/io/netty/netty-bom/4.1.86.Final/netty-bom-4.1.86.Final.pom" + ], + "hash": "sha256-EnFsH+ZM9b2qcETTfROq46iIIbkdR5hCDEanR2kXiv0=" + } + }, + "io.netty:netty-buffer:4.1.106.Final": { + "netty-buffer-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.jar" + ], + "hash": "sha256-1QZ72+R21jy0MpOCKDKnSafDijjBxRYQfHPSV8Ob7SE=" + }, + "netty-buffer-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.pom" + ], + "hash": "sha256-2gY34YJ9Uw2h2PQwsObNaT7Ee32qBnQrKKw02xy1RqY=" + } + }, + "io.netty:netty-codec:4.1.106.Final": { + "netty-codec-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.jar" + ], + "hash": "sha256-k4Y9/WkPes58JuTICP3CR4CtrUZbPNy3zj/HPEIt928=" + }, + "netty-codec-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.pom" + ], + "hash": "sha256-NA+IHwoS9itNCY+bcQo0fASTjV/z38wvw8pw1X7a70s=" + } + }, + "io.netty:netty-codec-http:4.1.106.Final": { + "netty-codec-http-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.jar" + ], + "hash": "sha256-uhd6A63Fh/pj6W8duunEb/JfWTl+o02WC0XgXQKWAm4=" + }, + "netty-codec-http-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.pom" + ], + "hash": "sha256-DE+4Y7F3o8Z9NhZistW8Gx43Vgubamtxfbc+lnlW2Ro=" + } + }, + "io.netty:netty-codec-http2:4.1.106.Final": { + "netty-codec-http2-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.jar" + ], + "hash": "sha256-wrgh1XpzPNZx6iqwZCACsX4KK4kATKAmxuro9Tgc+B4=" + }, + "netty-codec-http2-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.pom" + ], + "hash": "sha256-JZlznLzUACvwLSkABPTYxyvdhZ2VOyGAR7HvdW55jEY=" + } + }, + "io.netty:netty-common:4.1.106.Final": { + "netty-common-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.jar" + ], + "hash": "sha256-X/vgG9hFYXqRbeNhMBDV/aV8XraUFH040E95Hpg01cM=" + }, + "netty-common-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.pom" + ], + "hash": "sha256-4ayZMJpA1e76IEs6GBXHIcuS5K5t1UHsIoRQ2cnUgA0=" + } + }, + "io.netty:netty-handler:4.1.106.Final": { + "netty-handler-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.jar" + ], + "hash": "sha256-WpGa2Ittnp8IwwaZgLxlamKSagDmui2lhZqg7k4gLkQ=" + }, + "netty-handler-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.pom" + ], + "hash": "sha256-lhoCD6DBskT1io9MYS+egEEokLlgO/WTzmiUKaRlC0Y=" + } + }, + "io.netty:netty-parent:4.1.106.Final": { + "netty-parent-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-parent/4.1.106.Final/netty-parent-4.1.106.Final.pom" + ], + "hash": "sha256-eV8c7NBEHGSvry5vEN+yHCRtRI9sQ1cFHt6mjpw+s2U=" + } + }, + "io.netty:netty-resolver:4.1.106.Final": { + "netty-resolver-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.jar" + ], + "hash": "sha256-QElYuPBZDuUmAT0BHNI1Tat4rbqtdD19RE2zOj+eq6w=" + }, + "netty-resolver-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.pom" + ], + "hash": "sha256-phbG6XmPmDwsK0BiFDvaWM8tD2mGnZ00yMJiPdZMXXc=" + } + }, + "io.netty:netty-transport:4.1.106.Final": { + "netty-transport-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.jar" + ], + "hash": "sha256-I+qaOQCbQenQqhUVswc6+e5NpOFsLoabWqiqnxCdQlE=" + }, + "netty-transport-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.pom" + ], + "hash": "sha256-qyxCFnnBmSuuT3UyvpdpbK5L9g5pbwskf/vPunrynM4=" + } + }, + "io.netty:netty-transport-classes-epoll:4.1.106.Final": { + "netty-transport-classes-epoll-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.jar" + ], + "hash": "sha256-676g9nii85R+sgC+Az7X/lUwZ+Octd9Ldp0bn8aimHI=" + }, + "netty-transport-classes-epoll-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.pom" + ], + "hash": "sha256-kancuAlsq6lJCbohCze/4/M7qjAuZXAap/4nnWlRzGc=" + } + }, + "io.netty:netty-transport-classes-kqueue:4.1.106.Final": { + "netty-transport-classes-kqueue-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.jar" + ], + "hash": "sha256-9o7UQlABZcajhz4HMeG2IIS0L4QtD0dmdHSA7x/Jdj4=" + }, + "netty-transport-classes-kqueue-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.pom" + ], + "hash": "sha256-5VnP7dwvVFIUCbLypQY8gXefTgvpcG/+2QR0B3xBHU4=" + } + }, + "io.netty:netty-transport-native-epoll:4.1.106.Final": { + "netty-transport-native-epoll-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.jar" + ], + "hash": "sha256-ZgOaFRY1MCriM9/Rh9kcfddzoRrM0Sc1wWU7gndOd/A=" + }, + "netty-transport-native-epoll-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.pom" + ], + "hash": "sha256-U51mdWvcdwISzdMD7mJMrY2xbu9KgZiyqOKEg+ljb04=" + } + }, + "io.netty:netty-transport-native-kqueue:4.1.106.Final": { + "netty-transport-native-kqueue-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.jar" + ], + "hash": "sha256-FC/1C6Wcdbv2c6bBQ53Prjy3RprbgQXcP7ZqpAVRpK4=" + }, + "netty-transport-native-kqueue-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.pom" + ], + "hash": "sha256-BuxVaGByijbJpVnBVpIl5kzOGvQPqZ7T3GdZgmHMlOs=" + } + }, + "io.netty:netty-transport-native-unix-common:4.1.106.Final": { + "netty-transport-native-unix-common-4.1.106.Final.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.jar" + ], + "hash": "sha256-9S1LOMVxBmv6rpZKeGf6k38OVPtf9GfFdstlCiCoVOg=" + }, + "netty-transport-native-unix-common-4.1.106.Final.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.pom" + ], + "hash": "sha256-h19sn7JG3Vygm8Lc/LF4wpsBxx6lE/M3jm/Osp1KCjo=" + } + }, + "it.unimi.dsi:fastutil-core:8.5.12": { + "fastutil-core-8.5.12.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil-core/8.5.12/fastutil-core-8.5.12.jar" + ], + "hash": "sha256-8xwg9bBjEvPV4G5hYKMuJ02BmqbOvydSiya2tcDB3xk=" + }, + "fastutil-core-8.5.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil-core/8.5.12/fastutil-core-8.5.12.pom" + ], + "hash": "sha256-g5JDu+YWEfk3uwtdmzHQyOCWx9DWeZIs9u05+Cxu4NI=" + } + }, + "jakarta.platform:jakarta.jakartaee-bom:9.0.0": { + "jakarta.jakartaee-bom-9.0.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/jakarta/platform/jakarta.jakartaee-bom/9.0.0/jakarta.jakartaee-bom-9.0.0.pom" + ], + "hash": "sha256-kZA9Ddh23sZ/i5I/EzK6cr8pWwa9OX0Y868ZMHzhos4=" + } + }, + "jakarta.platform:jakartaee-api-parent:9.0.0": { + "jakartaee-api-parent-9.0.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/jakarta/platform/jakartaee-api-parent/9.0.0/jakartaee-api-parent-9.0.0.pom" + ], + "hash": "sha256-9l3PFLbh2RSOGYo5D6/hVfrKCTJT3ekAMH8+DqgsrTs=" + } + }, + "net.bytebuddy:byte-buddy:1.10.9": { + "byte-buddy-1.10.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.jar" + ], + "hash": "sha256-B7nKbi+XDLA/SyVlHfHy/OJx1JG0TgQJgniHeG9pLU0=" + }, + "byte-buddy-1.10.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.pom" + ], + "hash": "sha256-QIgdSUiocRWTRicPNpRbwpAlV3xstX9qXdDHwiIGnaw=" + } + }, + "net.bytebuddy:byte-buddy-agent:1.10.9": { + "byte-buddy-agent-1.10.9.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.jar" + ], + "hash": "sha256-+9BS0tTNFvcHVHxGhiHGt/uELH7Ihm0BLsvGF43h85Q=" + }, + "byte-buddy-agent-1.10.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.pom" + ], + "hash": "sha256-GZB0lfvBwjFsjrrXbwe5bRAf6xp+PAm/4VJv0/xu7J0=" + } + }, + "net.bytebuddy:byte-buddy-parent:1.10.9": { + "byte-buddy-parent-1.10.9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.10.9/byte-buddy-parent-1.10.9.pom" + ], + "hash": "sha256-k9nTgHec0XaMUrS87oLL+u3vmkow3oeuBrRB4WNP04w=" + } + }, + "net.java.dev.jna:jna:5.14.0": { + "jna-5.14.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar" + ], + "hash": "sha256-NO0eHyf6iWvKUNvE6ZzzcylnzsOHp6DV40hsCWc/6MY=" + }, + "jna-5.14.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.14.0/jna-5.14.0.pom" + ], + "hash": "sha256-4E4llRUB3yWtx7Hc22xTNzyUiXuE0+FJISknY+4Hrj0=" + } + }, + "net.java.dev.jna:jna:5.9.0": { + "jna-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar" + ], + "hash": "sha256-6vzHgLRFQ008Wuf6L7ZmXeGnVg1TfSxAio6AzRTScWE=" + }, + "jna-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.pom" + ], + "hash": "sha256-a8i4RZFQtZ6VmPPa2a0kWh7yFQ0IJYEBcYTrFj5ZKCk=" + } + }, + "net.java.dev.jna:jna-platform:5.9.0": { + "jna-platform-5.9.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.jar" + ], + "hash": "sha256-GQO8bYfzq5ICOVe5H0WpyOs1FbrQMDVs6XcgHlFBtyQ=" + }, + "jna-platform-5.9.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.pom" + ], + "hash": "sha256-C9pdmOS+kmHwnN+u5vokWYh5CDTX/K3I4v3ZPH1kGCU=" + } + }, + "org.apache:apache:27": { + "apache-27.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/apache/27/apache-27.pom" + ], + "hash": "sha256-srD8aeIqZQw4kvHDZtdwdvKVdcZzjfTHpwpEhESEzfk=" + } + }, + "org.apache:apache:23": { + "apache-23.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/apache/23/apache-23.pom" + ], + "hash": "sha256-vBBiTgYj82V3+sVjnKKTbTJA7RUvttjVM6tNJwVDSRw=" + } + }, + "org.apache:apache:21": { + "apache-21.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom" + ], + "hash": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A=" + } + }, + "org.apache.ant:ant:1.10.13": { + "ant-1.10.13.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.jar" + ], + "hash": "sha256-vvv8eedE6Yks+n25bfO26C3BfSVxr0KqQnl2/CIpmDg=" + }, + "ant-1.10.13.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.pom" + ], + "hash": "sha256-J5NR7tkLj3QbtIyVvmHD7CRU48ipr7Q7zB0LrB3aE3o=" + } + }, + "org.apache.ant:ant-launcher:1.10.13": { + "ant-launcher-1.10.13.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.jar" + ], + "hash": "sha256-zXaVs7+2lkq3G2oLMdrWAAWud/5QITI2Rnmqzwj3eXA=" + }, + "ant-launcher-1.10.13.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.pom" + ], + "hash": "sha256-ApkvvDgFU1bzyU0B6qJJmcsCoJuqnB/fXqx2t8MVY8o=" + } + }, + "org.apache.ant:ant-parent:1.10.13": { + "ant-parent-1.10.13.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-parent/1.10.13/ant-parent-1.10.13.pom" + ], + "hash": "sha256-blv8hwgiFD8f+7LG8I7EiHctsxSlKDMC9IFLEms0aTk=" + } + }, + "org.apache.commons:commons-parent:52": { + "commons-parent-52.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/52/commons-parent-52.pom" + ], + "hash": "sha256-ddvo806Y5MP/QtquSi+etMvNO18QR9VEYKzpBtu0UC4=" + } + }, + "org.apache.logging:logging-parent:7": { + "logging-parent-7.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/logging-parent/7/logging-parent-7.pom" + ], + "hash": "sha256-5YkR3J/GsXOhDlqp7bk8eZStBmAnBd0Gftz8bh6eFys=" + } + }, + "org.apache.logging.log4j:log4j:2.20.0": { + "log4j-2.20.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j/2.20.0/log4j-2.20.0.pom" + ], + "hash": "sha256-mje0qPZ+jUG8JHNxejAhYz1qPD8xBXnbmtC+PyRlnGk=" + } + }, + "org.apache.logging.log4j:log4j-api:2.20.0": { + "log4j-api-2.20.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.jar" + ], + "hash": "sha256-L0PupnnqZvFMoPE/7CqGAKwST1pSMdy034OT7dy5dVA=" + }, + "log4j-api-2.20.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.pom" + ], + "hash": "sha256-zUWDKj1s0hlENcDWPKAV8ZSWjy++pPKRVTv3r7hOFjc=" + } + }, + "org.apache.logging.log4j:log4j-bom:2.20.0": { + "log4j-bom-2.20.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-bom/2.20.0/log4j-bom-2.20.0.pom" + ], + "hash": "sha256-+LtpLpWmt72mAehxAJWOg9AGG38SMlC2gSiUOhlenaE=" + } + }, + "org.apache.logging.log4j:log4j-core:2.20.0": { + "log4j-core-2.20.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.jar" + ], + "hash": "sha256-YTffhIza7Z9NUHb3VRPGyF2oC5U/TnrMo4CYt3B2P1U=" + }, + "log4j-core-2.20.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.pom" + ], + "hash": "sha256-3nGsEAVR9KB3rsrQd70VPnHfeqacMELXZRbMXM4Ice4=" + } + }, + "org.apache.maven:maven:3.6.3": { + "maven-3.6.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven/3.6.3/maven-3.6.3.pom" + ], + "hash": "sha256-0thiRepmFJvBTS3XK7uWH5ZN1li4CaBXMlLAZTHu7BY=" + } + }, + "org.apache.maven:maven-model:3.6.3": { + "maven-model-3.6.3.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" + ], + "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" + }, + "maven-model-3.6.3.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" + ], + "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" + } + }, + "org.apache.maven:maven-parent:33": { + "maven-parent-33.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/apache/maven/maven-parent/33/maven-parent-33.pom" + ], + "hash": "sha256-OFbj/NFpUC1fEv4kUmBOv2x8Al8VZWv6VY6pntKdc+o=" + } + }, + "org.apiguardian:apiguardian-api:1.1.2": { + "apiguardian-api-1.1.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar" + ], + "hash": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=" + }, + "apiguardian-api-1.1.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.module" + ], + "hash": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=" + }, + "apiguardian-api-1.1.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.pom" + ], + "hash": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA=" + } + }, + "org.codehaus.groovy:groovy-bom:3.0.14": { + "groovy-bom-3.0.14.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/codehaus/groovy/groovy-bom/3.0.14/groovy-bom-3.0.14.pom" + ], + "hash": "sha256-JODptzjecRjennNWD/0GA0u1zwfKE6fgNFnoi6nRric=" + } + }, + "org.codehaus.plexus:plexus:10": { + "plexus-10.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus/10/plexus-10.pom" + ], + "hash": "sha256-u6nFIQZLnKEyzpfMHMfrSvwtvjK8iMuHLIjpn2FiMB8=" + } + }, + "org.codehaus.plexus:plexus-utils:3.5.1": { + "plexus-utils-3.5.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar" + ], + "hash": "sha256-huAlXUyHnGG0gz7X8TEk6LtnnfR967EnMm59t91JoHs=" + }, + "plexus-utils-3.5.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.pom" + ], + "hash": "sha256-lP9o7etIIE0SyZGJx2cWTTqfd4oTctHc4RpBRi5iNvI=" + } + }, + "org.eclipse.ee4j:project:1.0.6": { + "project-1.0.6.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/ee4j/project/1.0.6/project-1.0.6.pom" + ], + "hash": "sha256-Tn2DKdjafc8wd52CQkG+FF8nEIky9aWiTrkHZ3vI1y0=" + } + }, + "org.eclipse.jetty:jetty-bom:9.4.50.v20221201": { + "jetty-bom-9.4.50.v20221201.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/eclipse/jetty/jetty-bom/9.4.50.v20221201/jetty-bom-9.4.50.v20221201.pom" + ], + "hash": "sha256-TN5uUz1gHq+LZazulWt3BsGBkvJ1XQI9fo0Zu31bOUM=" + } + }, + "org.eclipse.jetty:jetty-parent:21": { + "jetty-parent-21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-parent/21/jetty-parent-21.pom" + ], + "hash": "sha256-eXLp7G84UqjuHuXU0Q3Mnc1gd7El+TWqlrNnpsgjN/U=" + } + }, + "org.eclipse.jetty.alpn:alpn-api:1.1.3.v20160715": { + "alpn-api-1.1.3.v20160715.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.jar" + ], + "hash": "sha256-B76ZdYtpnhlPcPuXhNlCAtxsmCEod4KePXKwIPJmBXY=" + }, + "alpn-api-1.1.3.v20160715.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.pom" + ], + "hash": "sha256-FrRveqUg7VDUR4oM9ndjje3AFDtCNMJ48WDLS9JUgq8=" + } + }, + "org.fusesource:fusesource-pom:1.12": { + "fusesource-pom-1.12.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/fusesource/fusesource-pom/1.12/fusesource-pom-1.12.pom" + ], + "hash": "sha256-xA2WDarc73sBwbHGZXr7rE//teUxaPj8sLKLhOb9zKE=" + } + }, + "org.fusesource.jansi:jansi:2.4.1": { + "jansi-2.4.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.jar" + ], + "hash": "sha256-Ll53Wp3Fj/prvWqm8JnWL4ti3N60w8O7vlzyMBvC3ME=" + }, + "jansi-2.4.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.pom" + ], + "hash": "sha256-P5jZeaTTVZ+HefuwBLNK51Fq+t9RDhHffMPNBz6xuzs=" + } + }, + "org.gradle:gradle-tooling-api:8.7": { + "gradle-tooling-api-8.7.jar": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.jar" + ], + "hash": "sha256-UjAREw062qfdwR14e/363TmgBDIAzGd7cJtPrATLhrM=" + }, + "gradle-tooling-api-8.7.module": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.module" + ], + "hash": "sha256-c08g/Bo2leG74FuBK7m7un/wNzQ8lCp5THbpiBdpNCg=" + }, + "gradle-tooling-api-8.7.pom": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.pom", + "https://repo.maven.apache.org/maven2/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.pom" + ], + "hash": "sha256-Js9ia+mlUYCUZg1Vkot+NEGrQxuSkHTHc7+fL3V28/s=" + } + }, + "org.jdom:jdom2:2.0.6.1": { + "jdom2-2.0.6.1.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.jar" + ], + "hash": "sha256-CyD0XjoP2PDRLNxTFrBndukCsTZdsAEYh2+RdcYPMCw=" + }, + "jdom2-2.0.6.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.pom" + ], + "hash": "sha256-VXleEBi4rmR7k3lnz4EKmbCFgsI3TnhzwShzTIyRS/M=" + } + }, + "org.jetbrains:annotations:23.0.0": { + "annotations-23.0.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.jar" + ], + "hash": "sha256-ew8ZckCCy/y8ZuWr6iubySzwih6hHhkZM+1DgB6zzQU=" + }, + "annotations-23.0.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom" + ], + "hash": "sha256-yUkPZVEyMo3yz7z990P1P8ORbWwdEENxdabKbjpndxw=" + } + }, + "org.jetbrains:annotations:13.0": { + "annotations-13.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" + ], + "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" + }, + "annotations-13.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" + ], + "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" + } + }, + "org.jetbrains:markdown:0.7.0": { + "markdown-0.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.jar" + ], + "hash": "sha256-CyFbRlFaxzcfaK2efq6i+Pkr6R83v70DsAjLVvFnUCE=" + }, + "markdown-0.7.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.module" + ], + "hash": "sha256-fRDYKtUAs+iccbTS3Byl1L3Xq/BIcostrtWzsPuVxzs=" + }, + "markdown-0.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.pom" + ], + "hash": "sha256-AplTmbCmzpt9dfH4f1yR1QwUg+m0oSH2a0ZAcsVIVVU=" + } + }, + "org.jetbrains:markdown-jvm:0.7.0": { + "markdown-jvm-0.7.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.7.0/markdown-jvm-0.7.0.jar" + ], + "hash": "sha256-yLRL4zhZiRLou4pJmLAX333RmBUszv/vAc8SipkAE54=" + }, + "markdown-jvm-0.7.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.7.0/markdown-jvm-0.7.0.module" + ], + "hash": "sha256-PL1M+XdGeY3ODzCIf/TgGig9DvoO5m3en/CvARrLdAU=" + }, + "markdown-jvm-0.7.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.7.0/markdown-jvm-0.7.0.pom" + ], + "hash": "sha256-0VsK0umlc/l87P+p7UDP5TTV/HazLigPhd0C/lVIn84=" + } + }, + "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { + "trove4j-1.0.20200330.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" + ], + "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" + }, + "trove4j-1.0.20200330.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" + ], + "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" + } + }, + "org.jetbrains.kotlin:kotlin-android-extensions:1.9.22": { + "kotlin-android-extensions-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar" + ], + "hash": "sha256-Hl6IFkKpnduPbRPmmVoIwZK8OEGHOWZj2ER8CB2H4k8=" + }, + "kotlin-android-extensions-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom" + ], + "hash": "sha256-lEt8+zPgpvtoRVkEjwKMuWMmyTKiRdXLAhQ7zSwDEVk=" + } + }, + "org.jetbrains.kotlin:kotlin-build-common:1.9.22": { + "kotlin-build-common-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar" + ], + "hash": "sha256-U8PcxTA/WQPmJgrqc+zMaTD5o276KhHNO9On5V32OWY=" + }, + "kotlin-build-common-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom" + ], + "hash": "sha256-KXxfSYoHdIPvic06cQzSt/LlrjgPOjrt+5xBvGI7E0A=" + } + }, + "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22": { + "kotlin-build-tools-api-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar" + ], + "hash": "sha256-3UnLfij08zgvUlDPsFyGT9XwqW0yZbspPHezCtzJP/Y=" + }, + "kotlin-build-tools-api-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom" + ], + "hash": "sha256-DFZLu4fcXs32Q005buob886Xar8IgYCN0Wb6SbBGSfs=" + } + }, + "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22": { + "kotlin-build-tools-impl-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar" + ], + "hash": "sha256-G0jW3gQqUl9jtVdROuEmbWmTSCJbAT+UDjLGPeJolCg=" + }, + "kotlin-build-tools-impl-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom" + ], + "hash": "sha256-tWM/E0m+lcdHRuHimiqm51LoneGrmmUjSS85j6aVWN0=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22": { + "kotlin-compiler-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar" + ], + "hash": "sha256-K/6t7lmrGYjDNtvW5l2ZH3Zq4d2Gg/Km3tX6oCefDKA=" + }, + "kotlin-compiler-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom" + ], + "hash": "sha256-s9o0u29ClqzzoPRDRm8FBsbJnaXNliTW4LdFsiKHhOs=" + } + }, + "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22": { + "kotlin-compiler-runner-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar" + ], + "hash": "sha256-c+x1u5nr/6iySiSjuFPz9mCWvEapNRrw2sk967acFes=" + }, + "kotlin-compiler-runner-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom" + ], + "hash": "sha256-pO6KZ8HW8lODjAAnKAvLgFCsDc3MrZdIlhOKaaAX6wE=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-client:1.9.22": { + "kotlin-daemon-client-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar" + ], + "hash": "sha256-XXPhgVsRZ+Sv4gjwCyp1wIC8WoEHhsqtuOFHh1k6k7k=" + }, + "kotlin-daemon-client-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom" + ], + "hash": "sha256-YsRKZZ2lXbb7El4pKbmNUEow4fSvgU4I5JIUJqpST4o=" + } + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22": { + "kotlin-daemon-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar" + ], + "hash": "sha256-kqV4ExcUR9U0Rh+hP+N9yM07f4bYPpsfe7GwvjBUH4s=" + }, + "kotlin-daemon-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom" + ], + "hash": "sha256-9uo9z2v7Og0GmER8SKa88I2Oqs+D/JX+nUGBpeXjwrE=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22": { + "kotlin-gradle-plugin-1.9.22-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar" + ], + "hash": "sha256-1OcY3V8wxrqTLZPM/FswFendPkQUOgUrh3Ao8frlQtw=" + }, + "kotlin-gradle-plugin-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module" + ], + "hash": "sha256-pPRqwMq9jVzbaJ0tN9GdWFhPcIv59k/+TpgKL/dTS7U=" + }, + "kotlin-gradle-plugin-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom" + ], + "hash": "sha256-A3750tSupA9JKdglE1g+STwOBRVuDaix1/Ujurhobyc=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22": { + "kotlin-gradle-plugin-annotations-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar" + ], + "hash": "sha256-lnaDy5jZkQFFYH+/W0VilbQ/Cq+Tsbunv2mS5zHLJOw=" + }, + "kotlin-gradle-plugin-annotations-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom" + ], + "hash": "sha256-Y7por+B4/3D3CPnpecaTxFv+iQQfeWQbC4H2tKEm7rs=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22": { + "kotlin-gradle-plugin-api-1.9.22-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar" + ], + "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" + }, + "kotlin-gradle-plugin-api-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar" + ], + "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" + }, + "kotlin-gradle-plugin-api-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module" + ], + "hash": "sha256-H0SJxTBPmlEqVof/zAqvCTCvydcgUdOpBfrAcANi+3s=" + }, + "kotlin-gradle-plugin-api-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom" + ], + "hash": "sha256-ZAFewaGutVCqGCjCQuIoODDFD2g2TkCDH+FYj9wEEfU=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22": { + "kotlin-gradle-plugin-idea-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar" + ], + "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" + }, + "kotlin-gradle-plugin-idea-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module" + ], + "hash": "sha256-z+LCbjMPaAMsAD+lJMAx5aYPzo2Jn/8uQjFBKL60QCs=" + }, + "kotlin-gradle-plugin-idea-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom" + ], + "hash": "sha256-3BSjKHVDun5QRs1OCVAtJ4hMqYfshwb1+xid54luOsw=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22": { + "kotlin-gradle-plugin-idea-proto-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar" + ], + "hash": "sha256-9dgu5hlmotmK364Z8k1hcwIsFUBIls3yNjQANe5owPU=" + }, + "kotlin-gradle-plugin-idea-proto-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom" + ], + "hash": "sha256-huMsqCkn2ogKHPNDpA7MIJgHXm/XInOzTVDfpUTzRjs=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22": { + "kotlin-gradle-plugin-model-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar" + ], + "hash": "sha256-UQj61b4UmCXs46ABA8PCHPGv6VS7ZLhweJVyk511OMs=" + }, + "kotlin-gradle-plugin-model-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module" + ], + "hash": "sha256-L/MBPfK6epteiwBOhIF1DI0PqVOtAHoZbYXSY2cdvq4=" + }, + "kotlin-gradle-plugin-model-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom" + ], + "hash": "sha256-gfUmlHml2X7oeSpITIMr495DgggSZxlhUAHKyI5C9qg=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22": { + "kotlin-gradle-plugins-bom-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module" + ], + "hash": "sha256-Qj401h0iCxoN3BgUCGqM6rTa2ed5ArDOjLRyG789xu0=" + }, + "kotlin-gradle-plugins-bom-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom" + ], + "hash": "sha256-da2/XHjOJHwiuvNijQs/8c9+19N9YB66cwTXerdb3Z8=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22": { + "kotlin-klib-commonizer-api-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar" + ], + "hash": "sha256-jC9lQpwYLi5KLgnLkQ5iuW227tKFWUuPga+CO35ZROI=" + }, + "kotlin-klib-commonizer-api-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom" + ], + "hash": "sha256-EMrJcNMAo0icM/CzBBVv8DLZWVm+WqrDuIAoKtWGIv4=" + } + }, + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22": { + "kotlin-klib-commonizer-embeddable-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar" + ], + "hash": "sha256-c/50PnTSEoPTg9C6voX9CMRCr8GnvYgIL42gUQ0FPUs=" + }, + "kotlin-klib-commonizer-embeddable-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom" + ], + "hash": "sha256-dxghItppe2YqSRPX3Z/mu68ATOhH/YZ9oj6v8MTIJEs=" + } + }, + "org.jetbrains.kotlin:kotlin-native-utils:1.9.22": { + "kotlin-native-utils-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar" + ], + "hash": "sha256-eGwSfdVTXbLDmuWXzQsMrZ6RS4PiNvHbAlEjXMnGUqw=" + }, + "kotlin-native-utils-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom" + ], + "hash": "sha256-EcUUwF7qOuno4Wq0l5bxEd9DxzSCMeNfr0xCjMT3Q+o=" + } + }, + "org.jetbrains.kotlin:kotlin-project-model:1.9.22": { + "kotlin-project-model-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar" + ], + "hash": "sha256-zBHVwLGQnFsKCP0l7w51T/0r9Wyu9mX7eFEiI15UKhg=" + }, + "kotlin-project-model-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom" + ], + "hash": "sha256-659KFngb/ADM7IAw++XuIo5vKydxxQwmezIY/rAGW0A=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.9.23": { + "kotlin-reflect-1.9.23.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.jar" + ], + "hash": "sha256-dHwpJ6Yjtuu3NLRl1qJoYukg3dGCjvQ3Foh8CEmjEx8=" + }, + "kotlin-reflect-1.9.23.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.pom" + ], + "hash": "sha256-WXD72CdKWAyk6I/nhkeMR8i5ufo3TFsK3ekyhFYiX2o=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.9.22": { + "kotlin-reflect-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar" + ], + "hash": "sha256-d/MRyhOEgR1Rn9o4n8sSaL2qBY1gUEbg7edsA7DfPpc=" + }, + "kotlin-reflect-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom" + ], + "hash": "sha256-xxLjWN97kxi2j1RjlxsIhnODf8DKQoXRw4LIEC7da18=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.8.22": { + "kotlin-reflect-1.8.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.jar" + ], + "hash": "sha256-ZVgl+mURIg/tDK5arU3+oqv5j9EPCud+uNr2q/zQ8Cc=" + }, + "kotlin-reflect-1.8.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.pom" + ], + "hash": "sha256-KeHqCKPTq0gtH9/UH76TRZEt9Gbbr6+0sS0YN8cr4yg=" + } + }, + "org.jetbrains.kotlin:kotlin-reflect:1.6.10": { + "kotlin-reflect-1.6.10.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" + ], + "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" + }, + "kotlin-reflect-1.6.10.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" + ], + "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" + } + }, + "org.jetbrains.kotlin:kotlin-script-runtime:1.9.22": { + "kotlin-script-runtime-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar" + ], + "hash": "sha256-uAZwV59/ktRz2NWDTwsST3dVxFmP6UskQYOwKDSDRXQ=" + }, + "kotlin-script-runtime-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom" + ], + "hash": "sha256-/ra0ns9pEG1MEoXnH5ob2noSfO9oMC4+n9yCmKTjR5U=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-common:1.9.22": { + "kotlin-scripting-common-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar" + ], + "hash": "sha256-+lAMvwNJQ++BJvPT3GWvCf+Z3//kTFCZtPwu1b8vXcc=" + }, + "kotlin-scripting-common-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom" + ], + "hash": "sha256-ROURI7DCfm/ZM/wma00Nrw8GhKYq7Z/mhC6Noz8qKz8=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22": { + "kotlin-scripting-compiler-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar" + ], + "hash": "sha256-Ij/shIMCNEmc1MeiPqHJLroSfEGzXZux1LYdJBVa6zU=" + }, + "kotlin-scripting-compiler-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom" + ], + "hash": "sha256-wWCPP7yyqfdSPq0zWZwurc5MgSFhqeBmufSwBa97Qxw=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22": { + "kotlin-scripting-compiler-impl-embeddable-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar" + ], + "hash": "sha256-OJkYFqKH/3YkHxp35/ERZIHU6To9tjJZplfd4g5tD2U=" + }, + "kotlin-scripting-compiler-impl-embeddable-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom" + ], + "hash": "sha256-gmccM6lXsuKoINZqaSwvzmPjvwR/HLJeb7A5HF3c8uc=" + } + }, + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22": { + "kotlin-scripting-jvm-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar" + ], + "hash": "sha256-jRJ9dvz6BRfDbB6g4ijs4D1aRoJkKgH2R5prvccxKik=" + }, + "kotlin-scripting-jvm-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom" + ], + "hash": "sha256-cBJS6huo/4f8M0dqYePVxtnS3aQbqpiZTdaYDuE/vG0=" + } + }, + "org.jetbrains.kotlin:kotlin-serialization:1.9.22": { + "kotlin-serialization-1.9.22-gradle82.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22-gradle82.jar" + ], + "hash": "sha256-AcrgEEPdT3sLAttWbZPHVoiwlsNAkJ9o0OSVcqvF6VQ=" + }, + "kotlin-serialization-1.9.22.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.module" + ], + "hash": "sha256-s3cuUZFg/is2t9G6MkGQYU27lLFZzmBk9M1z+RhhWiI=" + }, + "kotlin-serialization-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.pom" + ], + "hash": "sha256-D9yUsPEx2Ct3RpAEB0r0f/yntGfVeIn762oVSWg+rL0=" + } + }, + "org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:1.9.22": { + "kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar" + ], + "hash": "sha256-OFR9AAsWYbFLkkZxz7F6tSAL64NOOj2kJ37gkGLppQA=" + }, + "kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom" + ], + "hash": "sha256-i8LheiTLbQ4CMzLkjKq5e3P+MyuSdVWhGjAsb1xcPGQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.9.23": { + "kotlin-stdlib-1.9.23-all.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23-all.jar" + ], + "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" + }, + "kotlin-stdlib-1.9.23.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.jar" + ], + "hash": "sha256-iRDMI4gH2G71UMsfCxDdXtQLNaTsGlJSX3YK7ehOrTc=" + }, + "kotlin-stdlib-1.9.23.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.module" + ], + "hash": "sha256-UZUZOzfc2touHAqw1RLEIrKtdq81V4Q6G5w0gPTnHQ4=" + }, + "kotlin-stdlib-1.9.23.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.pom" + ], + "hash": "sha256-wm0n8mcQrUDiPu2f/gpkuFkejBPSI8ypDFk+5j87KKs=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib:1.9.22": { + "kotlin-stdlib-1.9.22-all.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar" + ], + "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" + }, + "kotlin-stdlib-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar" + ], + "hash": "sha256-ar4UbCeGQTi4dMzM/l9TTj65I8maG3tdRUlO5WlPPgo=" + }, + "kotlin-stdlib-1.9.22.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module" + ], + "hash": "sha256-9IIxS1B5wUVfb7DUJXp0XRAcYSTOlhUiuob53JCQHkc=" + }, + "kotlin-stdlib-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom" + ], + "hash": "sha256-zOLxUoXsgHijd0a1cwigVAQt1cwlQgxD9zt4V8JGjwM=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.23": { + "kotlin-stdlib-common-1.9.23.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.module" + ], + "hash": "sha256-hjnwBfqZd67wjDL8jnonedoi7iYkZNcnMpiq/Ug3Fc0=" + }, + "kotlin-stdlib-common-1.9.23.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.pom" + ], + "hash": "sha256-OuBxRYdw47aGCafTGet5emeJ9fBAyqQUQJgJmGhb5PY=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22": { + "kotlin-stdlib-common-1.9.22.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.22/kotlin-stdlib-common-1.9.22.module" + ], + "hash": "sha256-+Tyemr+NUtjo/Y6FGqgC7OxVEyFhxK7ufTzZJL95QkY=" + }, + "kotlin-stdlib-common-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.22/kotlin-stdlib-common-1.9.22.pom" + ], + "hash": "sha256-10k21oh1ZK63EOhCmLVCB/U+m88jpSrSv6IsIIZ3V2c=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.22": { + "kotlin-stdlib-jdk7-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.jar" + ], + "hash": "sha256-+R8kz606dWaIo1Ep5fM1SA0OtAjxVooX9wfCifh2m90=" + }, + "kotlin-stdlib-jdk7-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.pom" + ], + "hash": "sha256-SHnKgQKDPIraP0bHep/6+uGXDK/AvGIfUSAbatl0zp0=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.21": { + "kotlin-stdlib-jdk7-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.jar" + ], + "hash": "sha256-v+IfQkbIvKNQsYQEBv+803awXto36ypksBHeGMLKeBg=" + }, + "kotlin-stdlib-jdk7-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.pom" + ], + "hash": "sha256-AVFiDhh0XvJ2ECNw/GdHBPcN821kgsxBmh5S263Cg2I=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22": { + "kotlin-stdlib-jdk7-1.8.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.jar" + ], + "hash": "sha256-BV9cskKH+hBhAJlae0erkhJrgegy6HX1+izwvVVpPQs=" + }, + "kotlin-stdlib-jdk7-1.8.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.pom" + ], + "hash": "sha256-T5WKqZPVmE+PXr7UFGVipfOp9pW2BJyfKHOBN5ytqzM=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.22": { + "kotlin-stdlib-jdk8-1.9.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.jar" + ], + "hash": "sha256-RwRsPtwy/g2xo2v+PTgilYu1vkQRxbqA866JWj7CcpE=" + }, + "kotlin-stdlib-jdk8-1.9.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.pom" + ], + "hash": "sha256-yUBIJZxtAAdXi6r+tx74/3ut6wjy1ZQ3/DllHg+396s=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.21": { + "kotlin-stdlib-jdk8-1.9.21.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.jar" + ], + "hash": "sha256-BwLWS6qpDlxW5GdzeCTJvjreHlFWJHPBQ60DWByVUSc=" + }, + "kotlin-stdlib-jdk8-1.9.21.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.pom" + ], + "hash": "sha256-J79Q6ETwZc0emFT8m8K9pRIrh4ZOoDBL1pW7En0AMvQ=" + } + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22": { + "kotlin-stdlib-jdk8-1.8.22.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.jar" + ], + "hash": "sha256-QZiw6vCQpPJbb35aWVgfQxS6jJ9s0dE+6dNI5l7Y9wc=" + }, + "kotlin-stdlib-jdk8-1.8.22.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.pom" + ], + "hash": "sha256-ko8hhyF0djE8uBbUgHC8dlSqO5pa6B0/xfjCecyPjZ4=" + } + }, + "org.jetbrains.kotlin:kotlin-tooling-core:1.9.22": { + "kotlin-tooling-core-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar" + ], + "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" + }, + "kotlin-tooling-core-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom" + ], + "hash": "sha256-FPx/NcY15fzRvqU3q0+kQxLoQyUtUzNRnjaxJeoImyE=" + } + }, + "org.jetbrains.kotlin:kotlin-util-io:1.9.22": { + "kotlin-util-io-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar" + ], + "hash": "sha256-9telhJGjeLCDrRvq1IikheEdFgsx52wYwa1SDx0o9Gs=" + }, + "kotlin-util-io-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom" + ], + "hash": "sha256-ZP1qINbsBAE7ttdWJ/ZYC7c2QdlIkJ1cFmTi53MQbe4=" + } + }, + "org.jetbrains.kotlin:kotlin-util-klib:1.9.22": { + "kotlin-util-klib-1.9.22.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar" + ], + "hash": "sha256-pnnuL1EPOrkmkYGN5etbCQLobYjJdnTn20TcTyJSxfk=" + }, + "kotlin-util-klib-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom" + ], + "hash": "sha256-Dep9//Cit0CIrJlwQ8vCQINdK/9Zs5/MiwysbqPrNpc=" + } + }, + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.9.22": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.9.22/org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom" + ], + "hash": "sha256-HLTsuTPJGbL7/XZe/KX+SQeghxLoyZQsM6IIsrFpsYw=" + } + }, + "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin:1.9.22": { + "org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.22/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom" + ], + "hash": "sha256-+9WDi7OolDJys/EfhJrIlDeJL9MJstA012QjjEVPoyI=" + } + }, + "org.jetbrains.kotlinx:atomicfu:0.23.1": { + "atomicfu-0.23.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.jar" + ], + "hash": "sha256-fbhmDr5LkbtHjts2FsTjpQulnAfcpRfR4ShMA/6GrFc=" + }, + "atomicfu-0.23.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.module" + ], + "hash": "sha256-Pokf5ja1UQgZIQD884saObzRwlM+I8Ri/AdkTur8sg8=" + }, + "atomicfu-0.23.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.pom" + ], + "hash": "sha256-aIt5ABn0F87APmldZWexc7o7skGJVBZi8U/2ZEG1Pas=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1": { + "kotlinx-coroutines-bom-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.1/kotlinx-coroutines-bom-1.8.1.pom" + ], + "hash": "sha256-Vj5Kop+o/gmm4XRtCltRMI98fe3EaNxaDKgQpIWHcDA=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0": { + "kotlinx-coroutines-bom-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.0/kotlinx-coroutines-bom-1.8.0.pom" + ], + "hash": "sha256-Ejnp2+E5fNWXE0KVayURvDrOe2QYQuQ3KgiNz6i5rVU=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.1": { + "kotlinx-coroutines-bom-1.7.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.7.1/kotlinx-coroutines-bom-1.7.1.pom" + ], + "hash": "sha256-uSWqmIxApceqDHeyE3P+sYw5QUkmvVHHbvRENPW66cI=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1": { + "kotlinx-coroutines-core-1.8.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.jar" + ], + "hash": "sha256-2vUPHJQEsiSh1t1Shvjo7n1j/oB/eOqY9xeVwYO2Al8=" + }, + "kotlinx-coroutines-core-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.module" + ], + "hash": "sha256-CMuvMyW1Tg+O+NqF5OtZb32Ub4Q+XRYAOFRj8yaKTvA=" + }, + "kotlinx-coroutines-core-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.pom" + ], + "hash": "sha256-+IkY2/qHh8TRcasCVToUrR3viqmwxcLCDMmUVdMkHiI=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0": { + "kotlinx-coroutines-core-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.jar" + ], + "hash": "sha256-IKpDS2qTDqZtLmGwDe764J/qPTL5ZA0uDCcTEogOCt0=" + }, + "kotlinx-coroutines-core-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.module" + ], + "hash": "sha256-FE7s1TZd4+MNe0YibAWAUeOZVbXBieMfpMfP+5nWILo=" + }, + "kotlinx-coroutines-core-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.pom" + ], + "hash": "sha256-yglaS/iLR0+trOgzLBCXC3nLgBu/XfBHo5Ov4Ql28yE=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.1": { + "kotlinx-coroutines-core-jvm-1.8.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.jar" + ], + "hash": "sha256-89T13hw5G7zCDzs0Ncy6wBNSHna2kC19WWNewVwfeX4=" + }, + "kotlinx-coroutines-core-jvm-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.module" + ], + "hash": "sha256-CbgcnRHC3uvxM62HtweSfB8ECZy2Ee8AjHcls+swgyk=" + }, + "kotlinx-coroutines-core-jvm-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.pom" + ], + "hash": "sha256-R8alCxQVHo+vfzUKlSNcN9EqvDi/sFW2aJdCkxctryw=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0": { + "kotlinx-coroutines-core-jvm-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.jar" + ], + "hash": "sha256-mGCQahk3SQv187BtLw4Q70UeZblbJp8i2vaKPR9QZcU=" + }, + "kotlinx-coroutines-core-jvm-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.module" + ], + "hash": "sha256-/2oi2kAECTh1HbCuIRd+dlF9vxJqdnlvVCZye/dsEig=" + }, + "kotlinx-coroutines-core-jvm-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.pom" + ], + "hash": "sha256-pWM6vVNGfOuRYi2B8umCCAh3FF4LduG3V4hxVDSIXQs=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { + "kotlinx-coroutines-core-jvm-1.5.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" + ], + "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" + ], + "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" + }, + "kotlinx-coroutines-core-jvm-1.5.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" + ], + "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.1": { + "kotlinx-coroutines-debug-1.8.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.jar" + ], + "hash": "sha256-JFUwMZoX18m8ShFSb0LpV1Dkqz/IZMlA2evo9UjqGHA=" + }, + "kotlinx-coroutines-debug-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.module" + ], + "hash": "sha256-CA+LzOocTvqCk+0p/5z3xKfR0s3ekBzIZKz3Ly6AdXI=" + }, + "kotlinx-coroutines-debug-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.pom" + ], + "hash": "sha256-x9+Ci/O0+ofumYH7ATaN1NwHmV0XzLqPpmEhcTwF69Q=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.0": { + "kotlinx-coroutines-debug-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.jar" + ], + "hash": "sha256-Zy1UU0UXCoyrgoeygZRL55DWdUWXK+vdVKor9MhsxT8=" + }, + "kotlinx-coroutines-debug-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.module" + ], + "hash": "sha256-piquUrrd+ncw5Wey6kHzYOoQqbN8FiJDqNIaWnySHGI=" + }, + "kotlinx-coroutines-debug-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.pom" + ], + "hash": "sha256-EZPR60nUsUgNqlrGIBctfcmZFidM2Ra+NpQVLA5vb3w=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1": { + "kotlinx-coroutines-jdk8-1.8.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.jar" + ], + "hash": "sha256-2M+0w2PJHHczU7EVvUprWgRgjnkW/iNdOp2H78uZbAE=" + }, + "kotlinx-coroutines-jdk8-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.module" + ], + "hash": "sha256-Ifl7EL6TJkGBfTULclRP+LoyQYf/uREMbo2IESdv2TM=" + }, + "kotlinx-coroutines-jdk8-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.pom" + ], + "hash": "sha256-3uCuamO2M1ETIAqW2eHHgJ32DQ1CS7/xy7tTsxQWWvk=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.0": { + "kotlinx-coroutines-jdk8-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.jar" + ], + "hash": "sha256-2EGf2zy6quxAfmKrFL5WQ20edrW/MyRMV2VWH8E/0Gs=" + }, + "kotlinx-coroutines-jdk8-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.module" + ], + "hash": "sha256-HKyxz+5adTBFR1rzCF+4DcnMzjA3VKnVIApB3/W+AOk=" + }, + "kotlinx-coroutines-jdk8-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.pom" + ], + "hash": "sha256-4ZIahLHW5/k6SUgCfRhUHXWjDi6KZNem5DEAMZVR8r0=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.7.1": { + "kotlinx-coroutines-jdk8-1.7.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.module" + ], + "hash": "sha256-sJV+aTzxwefUrWJGqm4weV2/S/t1jB5LMv25wkQJuXM=" + }, + "kotlinx-coroutines-jdk8-1.7.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.pom" + ], + "hash": "sha256-x3kWU2lOpaVLnN1HCAgtv7i9apeKX0IYSxFBz7SjDnU=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1": { + "kotlinx-coroutines-test-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.module" + ], + "hash": "sha256-oc7i2rKWwTt47BwGDhj+QDNKRAyKB36QzKbeclJ9jN4=" + }, + "kotlinx-coroutines-test-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.pom" + ], + "hash": "sha256-TyiEIOjObP+RUgyfq9bK9o0C2GtkCp8hKPh6TkZtwlg=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0": { + "kotlinx-coroutines-test-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.module" + ], + "hash": "sha256-DsPHX/2ZpqLfto8wfy8vcxQckz5Yt3sQTxyMrDr9U5Q=" + }, + "kotlinx-coroutines-test-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.pom" + ], + "hash": "sha256-NV8/pvBjDl6ZuHxywcQ4YgKin0lpFeOHWaOK3gsGkAQ=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.1": { + "kotlinx-coroutines-test-jvm-1.8.1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.jar" + ], + "hash": "sha256-xO8d6zG+P4HtguzyNyIMyViGhop+xSekGFmd//FZ3ts=" + }, + "kotlinx-coroutines-test-jvm-1.8.1.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.module" + ], + "hash": "sha256-+wj8JXyQBDPS35l71sKeBJzZ979UHAt3YYDgmYJB9XY=" + }, + "kotlinx-coroutines-test-jvm-1.8.1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.pom" + ], + "hash": "sha256-4qht+xaCAWeYuVoPAGy0tdAQRsVaAS6hs2vSAjLcVXQ=" + } + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0": { + "kotlinx-coroutines-test-jvm-1.8.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.jar" + ], + "hash": "sha256-FTXMH0MjXYVm+NW8bRwR8HBBF+TlY/Ls5+aqPmhpXyA=" + }, + "kotlinx-coroutines-test-jvm-1.8.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.module" + ], + "hash": "sha256-HS0Zc6L0GowMEmPmCyXneS9ji4xV18ocbQZztkvlfac=" + }, + "kotlinx-coroutines-test-jvm-1.8.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.pom" + ], + "hash": "sha256-BtHlPqNm5to7FxkwV1+RYnzxnkUqTnqfDeMNLwQdZFE=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3": { + "kotlinx-serialization-bom-1.6.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.3/kotlinx-serialization-bom-1.6.3.pom" + ], + "hash": "sha256-KdaYQrt9RJviqkreakp85qpVgn0KsT0Wh0X+bZVzkzI=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.2": { + "kotlinx-serialization-bom-1.6.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.2/kotlinx-serialization-bom-1.6.2.pom" + ], + "hash": "sha256-ew4dde6GIUmc+VQwyhL9qjL0p/kg1cMBv+lfoYfyczc=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3": { + "kotlinx-serialization-core-1.6.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.jar" + ], + "hash": "sha256-L6Ba/w8zpw2oc8CaD/ZrXVTM3BXjnnykuCYz5wx5LzQ=" + }, + "kotlinx-serialization-core-1.6.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.module" + ], + "hash": "sha256-Nh6eMetylhdLdAhaxJ7dhKTzkAupQxpOQM0cI952oyg=" + }, + "kotlinx-serialization-core-1.6.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.pom" + ], + "hash": "sha256-0tv2/BU2TIlp1qq24+zMdROZU/LMBXtzDjUmdGWztX4=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2": { + "kotlinx-serialization-core-1.6.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.module" + ], + "hash": "sha256-arz0gTrJTfA3AS4xZzaKNEUHD9+OqyHQjYhtTtnC+2c=" + }, + "kotlinx-serialization-core-1.6.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.pom" + ], + "hash": "sha256-BibddZLIUwKToOPoHgiBltNRh3o422hHaTY3S6ZJ+S8=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3": { + "kotlinx-serialization-core-jvm-1.6.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.jar" + ], + "hash": "sha256-KcghqNTiXL/k8s6WzdRSb2H49OaaE1+WEqNKgdk7ZfE=" + }, + "kotlinx-serialization-core-jvm-1.6.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.module" + ], + "hash": "sha256-MpEE29NOS96QVhHUJ8dYTlPD+MQRg2+59pmsnbpbqmw=" + }, + "kotlinx-serialization-core-jvm-1.6.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.pom" + ], + "hash": "sha256-K0qolJn8AbMNHBB1lmmOCvQ0BBLVQBnFAdm6ayk7oro=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3": { + "kotlinx-serialization-json-1.6.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.jar" + ], + "hash": "sha256-jAAWiQp5q1mA3VIKWrGmc4AjwpqjtkN8SC4OX9wG2rE=" + }, + "kotlinx-serialization-json-1.6.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.module" + ], + "hash": "sha256-gNHYf6CmO/+Dleo5EL2oDQnw9YNQTd6o7QB7x6hrTNQ=" + }, + "kotlinx-serialization-json-1.6.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.pom" + ], + "hash": "sha256-KcIhdhjlMdfYMsyICupu0aj0B3PkN/WkHXC9FUaNPOM=" + } + }, + "org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.3": { + "kotlinx-serialization-json-jvm-1.6.3.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.jar" + ], + "hash": "sha256-0yNBebz/GIbVPWfBHspH9/PPe2PDSdFpZfbbUbfz3Zo=" + }, + "kotlinx-serialization-json-jvm-1.6.3.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.module" + ], + "hash": "sha256-InoqmtOMAQsQe8gFjNYVF32lqqhts399WNSdnJt/l9A=" + }, + "kotlinx-serialization-json-jvm-1.6.3.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.pom" + ], + "hash": "sha256-eN9n0GTTuq8a9Ohi6YFGl3YpfGyHi7e/G0Ljky9vr48=" + } + }, + "org.junit:junit-bom:5.9.1": { + "junit-bom-5.9.1.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.module" + ], + "hash": "sha256-kCbBZWaQ+hRa117Og2dCEaoSrYkwqRsQfC9c3s4vGxw=" + }, + "junit-bom-5.9.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.pom" + ], + "hash": "sha256-sWPBz8j8H9WLRXoA1YbATEbphtdZBOnKVMA6l9ZbSWw=" + } + }, + "org.junit:junit-bom:5.8.2": { + "junit-bom-5.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.module" + ], + "hash": "sha256-QM+tmT+nDs3yr3TQxW2hSE7iIJZL6Pkyz+YyvponM/o=" + }, + "junit-bom-5.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom" + ], + "hash": "sha256-g2Bpyp6O48VuSDdiItopEmPxN70/0W2E/dR+/MPyhuI=" + } + }, + "org.junit:junit-bom:5.7.2": { + "junit-bom-5.7.2.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.module" + ], + "hash": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=" + }, + "junit-bom-5.7.2.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.pom" + ], + "hash": "sha256-zRSqqGmZH4ICHFhdVw0x/zQry6WLtEIztwGTdxuWSHs=" + } + }, + "org.junit.jupiter:junit-jupiter-api:5.8.2": { + "junit-jupiter-api-5.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar" + ], + "hash": "sha256-GAjuh+D3GM1uJfO3WvwXlWrIo+3EjH6bq58Z+aeeOAE=" + }, + "junit-jupiter-api-5.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.module" + ], + "hash": "sha256-fpr03/9iZ6zd0VfZ4Rug1dyRszL6dLxMZZOeRReht3A=" + }, + "junit-jupiter-api-5.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.pom" + ], + "hash": "sha256-yb3jYieVswp3NTHoXFgy+NyKp37N0xPu4jXJg8v9Anc=" + } + }, + "org.junit.platform:junit-platform-commons:1.8.2": { + "junit-platform-commons-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar" + ], + "hash": "sha256-0uAV/KcTDnmvL0YI3FRBXksQtZLXczPey0saJ0wYUFA=" + }, + "junit-platform-commons-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.module" + ], + "hash": "sha256-NChH0wRv6kNVlWkttPBdXwOeDh0eIE9NV1WQJVcIJiY=" + }, + "junit-platform-commons-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.pom" + ], + "hash": "sha256-zoUuNMahhKpsgO6N8EcXE6dAgTQTTwjjwcPdh8a1mrc=" + } + }, + "org.junit.platform:junit-platform-engine:1.8.2": { + "junit-platform-engine-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar" + ], + "hash": "sha256-C30AD4w+jl99a4GWSZNue5k4MU6HyPmDgFIY6ldWflk=" + }, + "junit-platform-engine-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.module" + ], + "hash": "sha256-66d7Nu/fdaZ/RkODM4JfnkSPVQ1SHnJJ2VA1hYDuY2s=" + }, + "junit-platform-engine-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.pom" + ], + "hash": "sha256-AWhkMmYGDtko71qBgjAD7PrnmpqMC7/Xb0IBxsnXccU=" + } + }, + "org.junit.platform:junit-platform-launcher:1.8.2": { + "junit-platform-launcher-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar" + ], + "hash": "sha256-giFWQJ/YPmguTFGZs0YAVCmbU4oFjCxtD1ybalvbdZQ=" + }, + "junit-platform-launcher-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.module" + ], + "hash": "sha256-4XQA7HvnYIwfiI1yG0MAHpc2wVDUD5jIoLzalWPYyus=" + }, + "junit-platform-launcher-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.pom" + ], + "hash": "sha256-tfancaautzyJpud/Vtcp9LqOta/dDxD0TbRNaq25UJU=" + } + }, + "org.junit.platform:junit-platform-suite-api:1.8.2": { + "junit-platform-suite-api-1.8.2.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.jar" + ], + "hash": "sha256-lO80OwW4dbsuTvlKfMYuYQ4bnNeCR+Ky7EPtYYoe0Kc=" + }, + "junit-platform-suite-api-1.8.2.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.module" + ], + "hash": "sha256-kwagU4n8QNetnQsSigFEMOXRyldKGErujXhns+iRC3o=" + }, + "junit-platform-suite-api-1.8.2.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.pom" + ], + "hash": "sha256-QB/ZdNa5RmRSS+y3z4B8TUfXxXSy+vGxMeukiUn+mJg=" + } + }, + "org.opentest4j:opentest4j:1.3.0": { + "opentest4j-1.3.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar" + ], + "hash": "sha256-SOLfY2yrZWPO1k3N/4q7I1VifLI27wvzdZhoLd90Lxs=" + }, + "opentest4j-1.3.0.module": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.module" + ], + "hash": "sha256-SL8dbItdyU90ZSvReQD2VN63FDUCSM9ej8onuQkMjg0=" + }, + "opentest4j-1.3.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.pom" + ], + "hash": "sha256-m/fP/EEPPoNywlIleN+cpW2dQ72TfjCUhwbCMqlDs1U=" + } + }, + "org.opentest4j:opentest4j:1.2.0": { + "opentest4j-1.2.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" + ], + "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" + }, + "opentest4j-1.2.0.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" + ], + "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" + } + }, + "org.ow2:ow2:1.5.1": { + "ow2-1.5.1.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/ow2/1.5.1/ow2-1.5.1.pom" + ], + "hash": "sha256-Mh3bt+5v5PU96mtM1tt0FU1r+kI5HB92OzYbn0hazwU=" + } + }, + "org.ow2.asm:asm:9.4": { + "asm-9.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.jar" + ], + "hash": "sha256-OdDis9xFr2Wgmwl5RXUKlKEm4FLhJPk0aEQ6HQ4V84E=" + }, + "asm-9.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.pom" + ], + "hash": "sha256-SDdR5I+y0fQ8Ya06sA/6Rm7cAzPY/C/bWibpXTKYI5Q=" + } + }, + "org.ow2.asm:asm-commons:9.4": { + "asm-commons-9.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.jar" + ], + "hash": "sha256-DBKKnsPzPJiVknL20WzxQke1CPWJUVdLzb0rVtYyY2Q=" + }, + "asm-commons-9.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.pom" + ], + "hash": "sha256-tCyiq8+IEXdqXdwCkPIQbX8xP4LHiw3czVzOTGOjUXk=" + } + }, + "org.ow2.asm:asm-tree:9.4": { + "asm-tree-9.4.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.jar" + ], + "hash": "sha256-xC1HnPJFZqIesgr37q7vToa9tKiGMGz3L0g7ZedbKs8=" + }, + "asm-tree-9.4.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.pom" + ], + "hash": "sha256-x+nvk73YqzYwMs5TgvzGTQAtbFicF1IzI2zSmOUaPBY=" + } + }, + "org.slf4j:slf4j-api:2.1.0-alpha1": { + "slf4j-api-2.1.0-alpha1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.jar" + ], + "hash": "sha256-mrf/pkYgK0mdBZlaPsgvMbzLelA0XBUU2MtC7IzOo1M=" + }, + "slf4j-api-2.1.0-alpha1.pom": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.pom", + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.pom" + ], + "hash": "sha256-QirqW+u6gwWzxhT6Zo7SKePJYQkw7PQvhzOO4F4minU=" + } + }, + "org.slf4j:slf4j-bom:2.1.0-alpha1": { + "slf4j-bom-2.1.0-alpha1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-bom/2.1.0-alpha1/slf4j-bom-2.1.0-alpha1.pom" + ], + "hash": "sha256-qOgTiZePRAcJJBuYPTHvp4cRO+EbgYwsa82e0wlv1IU=" + } + }, + "org.slf4j:slf4j-parent:2.1.0-alpha1": { + "slf4j-parent-2.1.0-alpha1.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.1.0-alpha1/slf4j-parent-2.1.0-alpha1.pom" + ], + "hash": "sha256-zkc1sfnIId4Lkrjb5AsHHG6jIHMuWTVZxupt+WX4c48=" + } + }, + "org.slf4j:slf4j-simple:2.1.0-alpha1": { + "slf4j-simple-2.1.0-alpha1.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.jar" + ], + "hash": "sha256-AU/trHoyKI7W+PcqEAfn+zKuxb/tsnFGfkluCVNIL3U=" + }, + "slf4j-simple-2.1.0-alpha1.pom": { + "urls": [ + "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.pom", + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.pom" + ], + "hash": "sha256-RgReG+EA94JLUITh83eCxoBJcEeKRXPejEmgfQOpSGM=" + } + }, + "org.sonatype.oss:oss-parent:9": { + "oss-parent-9.pom": { + "urls": [ + "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom" + ], + "hash": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno=" + } + }, + "org.sonatype.oss:oss-parent:7": { + "oss-parent-7.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" + ], + "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" + } + }, + "org.springframework:spring-framework-bom:5.3.24": { + "spring-framework-bom-5.3.24.module": { + "urls": [ + "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.module" + ], + "hash": "sha256-GZbh9hfLA/p26hGFD+Kh4gsOMKEEa6bV2zvbv0QRP84=" + }, + "spring-framework-bom-5.3.24.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.pom" + ], + "hash": "sha256-U1ITVmu77+Jjag1OjdGnOt5hLiQwyP/TENzCo7O5ukE=" + } + }, + "org.vafer:jdependency:2.8.0": { + "jdependency-2.8.0.jar": { + "urls": [ + "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.jar" + ], + "hash": "sha256-v9LMfhv8eKqDtEwKVL8s3jikOC7CRyivaD2Y3GvngZI=" + }, + "jdependency-2.8.0.pom": { + "urls": [ + "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.pom" + ], + "hash": "sha256-EBhn8/npJlei74mjELYE1D0JDJuQqj4LBS3NFqO78y0=" + } + } +} \ No newline at end of file diff --git a/gradle.nix b/gradle.nix new file mode 100644 index 0000000..dba9916 --- /dev/null +++ b/gradle.nix @@ -0,0 +1,292 @@ +# This file is generated by gradle2nix. +# +# Example usage (e.g. in default.nix): +# +# with (import {}); +# let +# buildGradle = callPackage ./gradle.nix {}; +# in +# buildGradle { +# lockFile = ./gradle.lock; +# +# src = ./.; +# +# gradleFlags = [ "installDist" ]; +# +# installPhase = '' +# mkdir -p $out +# cp -r app/build/install/myproject $out +# ''; +# } + +{ lib +, stdenv +, buildEnv +, fetchs3 +, fetchurl +, gradle +, maven +, runCommandLocal +, symlinkJoin +, writeText +, writeTextDir +}: + +{ + # Path to the lockfile generated by gradle2nix (e.g. gradle.lock). + lockFile +, pname ? "project" +, version ? null +, enableParallelBuilding ? true +# Arguments to Gradle used to build the project in buildPhase. +, gradleFlags ? [ "build" ] +# Enable debugging for the Gradle build; this will cause Gradle to run a debug server +# and wait for a JVM debugging client to attach. +, enableDebug ? false +# Additional code to run in the Gradle init script (init.gradle). +, extraInit ? "" +# Override the default JDK used to run Gradle itself. +, buildJdk ? null +# Override functions which fetch dependency artifacts. +# Keys in this set are URL schemes such as "https" or "s3". +# Values are functions which take a dependency in the form +# `{ urls, hash }` and fetch into the Nix store. For example: +# +# { +# s3 = { name, urls, hash }: fetchs3 { +# s3url = builtins.head urls; +# # TODO This doesn't work without patching fetchs3 to accept SRI hashes +# inherit name hash; +# region = "us-west-2"; +# credentials = { +# access_key_id = "foo"; +# secret_access_key = "bar"; +# }; +# }; +# } +, fetchers ? { } +, ... } @ args: + +let + inherit (builtins) + attrValues concatStringsSep elemAt filter fromJSON getAttr hasAttr head length match + removeAttrs replaceStrings sort; + + inherit (lib) + assertMsg concatMapStringsSep findFirst foldl' groupBy' hasSuffix hasPrefix last mapAttrs + mapAttrsToList optionalAttrs optionalString readFile removeSuffix unique versionAtLeast + versionOlder; + + inherit (lib.strings) sanitizeDerivationName; + + lockedDeps = fromJSON (readFile lockFile); + + toCoordinates = id: + let + coords = builtins.split ":" id; + in rec { + group = elemAt coords 0; + module = elemAt coords 2; + version = elemAt coords 4; + versionParts = parseVersion version; + }; + + parseVersion = version: + let + parts = builtins.split ":" version; + base = elemAt parts 0; + in + { + inherit base; + exact = base; + } + // optionalAttrs (length parts >= 2) ( + let + snapshot = elemAt parts 2; + exact = replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base; + parts = builtins.split "-" timestamp; + timestamp = findFirst (match "[0-9]{8}\.[0-9]{6}") parts; + buildNumber = let lastPart = last parts; in if match "[0-9]+" lastPart then lastPart else null; + in + { inherit snapshot exact timestamp buildNumber; } + ); + + fetchers' = { + http = fetchurl; + https = fetchurl; + } // fetchers; + + # Fetch urls using the scheme for the first entry only; there isn't a + # straightforward way to tell Nix to try multiple fetchers in turn + # and short-circuit on the first successful fetch. + fetch = name: { urls, hash }: + let + first = head urls; + scheme = head (builtins.match "([a-z0-9+.-]+)://.*" first); + fetch' = getAttr scheme fetchers'; + urls' = filter (hasPrefix scheme) urls; + in + fetch' { urls = urls'; inherit hash; }; + + mkModule = id: artifacts: + let + coords = toCoordinates id; + modulePath = "${replaceStrings ["."] ["/"] coords.group}/${coords.module}/${coords.version}"; + in + stdenv.mkDerivation { + pname = sanitizeDerivationName "${coords.group}-${coords.module}"; + version = coords.versionParts.exact; + + srcs = mapAttrsToList fetch artifacts; + + dontPatch = true; + dontConfigure = true; + dontBuild = true; + dontFixup = true; + dontInstall = true; + + preUnpack = '' + mkdir -p "$out/${modulePath}" + ''; + + unpackCmd = '' + cp "$curSrc" "$out/${modulePath}/$(stripHash "$curSrc")" + ''; + + sourceRoot = "."; + + preferLocalBuild = true; + allowSubstitutes = false; + }; + + offlineRepo = symlinkJoin { + name = if version != null then "${pname}-${version}-gradle-repo" else "${pname}-gradle-repo"; + paths = mapAttrsToList mkModule lockedDeps; + }; + + initScript = + let + inSettings = pred: script: + optionalString pred ( + if versionAtLeast gradle.version "6.0" then '' + gradle.beforeSettings { + ${script} + } + '' else '' + gradle.settingsEvaluated { + ${script} + } + '' + ); + in + writeText "init.gradle" '' + static def offlineRepo(RepositoryHandler repositories) { + repositories.clear() + repositories.mavenLocal { + url 'file:${offlineRepo}' + metadataSources { + gradleMetadata() + mavenPom() + artifact() + } + } + } + + ${inSettings (versionAtLeast gradle.version "6.0") '' + offlineRepo(it.buildscript.repositories) + ''} + + ${inSettings true '' + offlineRepo(it.pluginManagement.repositories) + ''} + + gradle.projectsLoaded { + allprojects { + buildscript { + offlineRepo(repositories) + } + } + } + + ${if versionAtLeast gradle.version "6.8" + then '' + gradle.beforeSettings { + it.dependencyResolutionManagement { + offlineRepo(repositories) + repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) + } + } + '' + else '' + gradle.projectsLoaded { + allprojects { + offlineRepo(repositories) + } + } + '' + } + + ${extraInit} + ''; + + buildProject = flags: '' + gradle --offline --no-daemon --no-build-cache \ + --info --full-stacktrace --warning-mode=all \ + --no-configuration-cache \ + -Dmaven.repo.local=${offlineRepo} \ + ${optionalString enableParallelBuilding "--parallel"} \ + ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ + ${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \ + --init-script ${initScript} \ + ${concatStringsSep " " flags} + ''; + +in stdenv.mkDerivation ({ + + dontStrip = true; + + nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ gradle ]; + + buildPhase = args.buildPhase or '' + runHook preBuild + + ( + set -eux + + ${optionalString (versionOlder gradle.version "8.0") '' + # Work around https://github.com/gradle/gradle/issues/1055 + TMPHOME="$(mktemp -d)" + mkdir -p "$TMPHOME/init.d" + export GRADLE_USER_HOME="$TMPHOME" + cp ${initScript} $TMPHOME/ + ''} + + gradle --offline --no-daemon --no-build-cache \ + --info --full-stacktrace --warning-mode=all \ + --no-configuration-cache --console=plain \ + -Dmaven.repo.local=${offlineRepo} \ + ${optionalString enableParallelBuilding "--parallel"} \ + ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ + ${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \ + --init-script ${initScript} \ + ${concatStringsSep " " gradleFlags} + ) + + runHook postBuild + ''; + + passthru = (args.passthru or {}) // { + inherit offlineRepo; + }; + +} // (removeAttrs args [ + "nativeBuildInputs" + "passthru" + "lockFile" + "gradleFlags" + "gradle" + "enableDebug" + "extraInit" + "buildJdk" + "fetchers" +])) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 35f2d24..e390556 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,21 +1,19 @@ [versions] gradle = "8.7" +junit = "5.8.2" kotlin = "1.9.22" ktor = "2.3.11" +kotest = "5.9.0" [libraries] -clikt = "com.github.ajalt:clikt:+" +clikt = "com.github.ajalt.clikt:clikt:4.4.0" gradle-toolingApi = { module = "org.gradle:gradle-tooling-api", version.ref = "gradle" } -junit-jupiter-api = "org.junit.jupiter:junit-jupiter-api:+" -junit-jupiter-engine = "org.junit.jupiter:junit-jupiter-engine:+" -junit-jupiter-params = "org.junit.jupiter:junit-jupiter-params:+" -junit-platformLauncher = "org.junit.platform:junit-platform-launcher:+" -kotest-runner = "io.kotest:kotest-runner-junit5:+" -kotest-assertions = "io.kotest:kotest-assertions-core:+" -kotlinx-coroutines-core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:+" +kotest-assertions = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" } +kotest-runner = { module = "io.kotest:kotest-runner-junit5", version.ref = "kotest" } +kotlinx-coroutines-core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1" ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor" } ktor-server-netty = { module = "io.ktor:ktor-server-netty", version.ref = "ktor" } -okio = "com.squareup.okio:okio:+" +okio = "com.squareup.okio:okio:3.9.0" serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3" slf4j-api = "org.slf4j:slf4j-api:+" slf4j-simple = "org.slf4j:slf4j-simple:+" diff --git a/gradle2nix.nix b/gradle2nix.nix new file mode 100644 index 0000000..474d2ab --- /dev/null +++ b/gradle2nix.nix @@ -0,0 +1,41 @@ +{ lib +, gradle +, buildGradle +}: + +buildGradle { + pname = "gradle2nix"; + version = "2.0.0"; + lockFile = ./gradle.lock; + + src = lib.cleanSourceWith { + filter = lib.cleanSourceFilter; + src = lib.cleanSourceWith { + filter = path: type: let baseName = builtins.baseNameOf path; in !( + (type == "directory" && ( + baseName == "build" || + baseName == ".idea" || + baseName == ".gradle" + )) || + (lib.hasSuffix ".iml" baseName) + ); + src = ./.; + }; + }; + + gradleFlags = [ "installDist" ]; + + installPhase = '' + mkdir -p $out + cp -r app/build/install/gradle2nix/* $out/ + ''; + + meta = with lib; { + inherit (gradle.meta) platforms; + description = "Wrap Gradle builds with Nix"; + homepage = "https://github.com/tadfisher/gradle2nix"; + license = licenses.asl20; + maintainers = with maintainers; [ tadfisher ]; + mainProgram = "gradle2nix"; + }; +} From 43c4b71928694aa7c642a6f2cc22f06d6d2f7a51 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Sun, 19 May 2024 13:56:09 -0700 Subject: [PATCH 12/34] Update CLI interface --- README.org | 71 +++++++++--------- app/build.gradle.kts | 15 ++-- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 72 +++++++++---------- gradle.lock | 64 +++++++++-------- gradle/libs.versions.toml | 3 +- 5 files changed, 115 insertions(+), 110 deletions(-) diff --git a/README.org b/README.org index a49c565..9803d1d 100644 --- a/README.org +++ b/README.org @@ -51,7 +51,7 @@ This tool is useful for both development and packaging. You can use ** Installation -A [[./default.nix][Nix expression]] (generated by =gradle2nix= itself) is provided for +A [[./gradle.nix][Nix expression]] (generated by =gradle2nix= itself) is provided for convenience. The following expression will fetch and build the latest version of this package: @@ -60,7 +60,7 @@ import (fetchTarball "https://github.com/tadfisher/gradle2nix/archive/master.tar #+end_src If this expression is in, say, =gradle2nix.nix=, =gradle2nix= can be -built and placed in =.//result= with the following: +built and placed in =./result= with the following: #+begin_example nix build -f gradle2nix.nix @@ -93,36 +93,49 @@ nix run github:tadfisher/gradle2nix -- --help ** Usage #+begin_example -Usage: gradle2nix [OPTIONS] [PROJECT-DIR] +Usage: gradle2nix [] []... Options: - -g, --gradle-version VERSION Use a specific Gradle version - -a, --gradle-args ARGS Extra arguments to pass to Gradle - -c, --configuration NAME Add a configuration to resolve (default: - all configurations) - -i, --include DIR Add an additional project to include - -p, --project PATH Only resolve these subproject paths, e.g. - ':', or ':sub:project' (default: all - projects) - -o, --out-dir DIR Path to write generated files (default: - PROJECT-DIR) - -e, --env FILENAME Prefix for environment files (.json and - .nix) (default: gradle-env) - -b, --build-src / -nb, --no-build-src - Include buildSrc project (default: true) - -q, --quiet Disable logging - -h, --help Show this message and exit + -t, --tasks= Gradle tasks to run + -p, --project= Path to the project root (default: Current directory) + -o, --out-dir= Path to write generated files (default: ) + -l, --lock-file= Name of the generated lock file (default: gradle.lock) + -n, --nix-file= Name of the generated Nix file (default: gradle.nix) + -g, --gradle-version= Use a specific Gradle version + -j, --gradle-jdk= JDK home directory to use for launching Gradle (default: JAVA_HOME) + --log=(debug|info|warn|error) Print messages with this priority or higher (default: error) + --dump-events Dump Gradle event logs to the output directory + --stacktrace Print a stack trace on error + -h, --help Show this message and exit Arguments: - PROJECT-DIR Path to the project root (default: .) + Extra arguments to pass to Gradle #+end_example Simply running =gradle2nix= in the root directory of a project should be enough for most projects. This will produce two files, by default -called =gradle-env.json= and =gradle-env.nix=, which contain the +called =gradle.lock= and =gradle.nix=, which contain the pinned dependencies for the project and a standard build expression which can be imported or called by other Nix expressions. An example -of such an expression can be found in this project's [[./default.nix][default.nix]]. +of such an expression can be found in this project's [[./gradle2nix.nix][gradle2nix.nix]]. + +*** For packagers + +If you're creating a Nix package for an existing Gradle project, you +can reduce the number of pinned dependencies by passing one or more +=--task= arguments. This will only pin the dependencies that were +resolved as part of the build, instead of the default behavior where +all possible dependencies are pinned. + +For example, if the package produces its build output via the +=:app:installDist= task, use the following: + +#+begin_example +gradle2nix -t :app:installDist +#+end_example + +/Note:/ This may be *required* if the build resolves configurations +at execution time. *** Specifying the Gradle version @@ -136,20 +149,6 @@ Gradle installed. gradle2nix -g 6.1 #+end_example -*** Multi-project builds - -If you want to resolve only a subset of projects in a [[https://docs.gradle.org/current/userguide/intro_multi_project_builds.html][multi-project -build]], add the =--project= option for each project. For example, in a -project where you only want to build the subprojects =:app= and -=:widget=: - -#+begin_example -gradle2nix -p :app -p :widget -#+end_example - -Any [[https://docs.gradle.org/current/userguide/declaring_dependencies.html#sub:project_dependencies][project dependencies]] will be also be included when pinning -dependency artifacts. - ** Contributing Bug reports and feature requests are encouraged. diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 3140c14..896149e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -13,7 +13,6 @@ dependencies { implementation(libs.kotlinx.coroutines.core) implementation(libs.okio) implementation(libs.serialization.json) - implementation(libs.slf4j.api) runtimeOnly(libs.slf4j.simple) implementation(libs.xmlutil) @@ -30,7 +29,10 @@ dependencies { application { mainClass.set("org.nixos.gradle2nix.MainKt") applicationName = "gradle2nix" - applicationDefaultJvmArgs += "-Dorg.nixos.gradle2nix.share=@APP_HOME@/share" + applicationDefaultJvmArgs = listOf( + "-Dorg.nixos.gradle2nix.share=@APP_HOME@/share", + "-Dslf4j.internal.verbosity=ERROR" + ) applicationDistribution .from(configurations.named("share")) .into("share") @@ -58,13 +60,10 @@ tasks { startScripts { doLast { unixScript.writeText( - unixScript.readText() - .replace("@APP_HOME@", "\\\"\$APP_HOME\\\"") - .replace(Regex("DEFAULT_JVM_OPTS=\'(.*)\'")) { match -> - "DEFAULT_JVM_OPTS=${match.groupValues[1]}" - } + unixScript.readText().replace("@APP_HOME@", "'\$APP_HOME'") ) - windowsScript.writeText(windowsScript.readText().replace("@APP_HOME@", "%APP_HOME%")) + windowsScript.writeText( + windowsScript.readText().replace("@APP_HOME@", "%APP_HOME%")) } } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index c0074c0..af98723 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -6,6 +6,7 @@ import com.github.ajalt.clikt.output.MordantHelpFormatter import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.arguments.multiple import com.github.ajalt.clikt.parameters.options.default +import com.github.ajalt.clikt.parameters.options.defaultLazy import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.multiple import com.github.ajalt.clikt.parameters.options.option @@ -50,62 +51,61 @@ enum class LogLevel { class Gradle2Nix : CliktCommand( name = "gradle2nix" ) { - private val gradleVersion: String? by option( - "--gradle-version", "-g", - metavar = "VERSION", - help = "Use a specific Gradle version" - ) + private val tasks: List by option( + "--task", "-t", + metavar = "TASK", + help = "Gradle tasks to run" + ).multiple() - private val gradleJdk: File? by option( - "--gradle-jdk", "-j", - metavar = "DIR", - help = "JDK home directory to use for launching Gradle (default: ${System.getProperty("java.home")})" - ).file(canBeFile = false, canBeDir = true) + private val projectDir: File by option( + "--project", "-p", + help = "Path to the project root") + .file() + .default(File("."), "Current directory") + .validate { file -> + if (!file.exists()) fail("Directory \"$file\" does not exist.") + if (file.isFile) fail("Directory \"$file\" is a file.") + if (!file.canRead()) fail("Directory \"$file\" is not readable.") + if (!file.isProjectRoot()) fail("Directory \"$file\" is not a Gradle project.") + } - val outDir: File? by option( + private val outDir: File? by option( "--out-dir", "-o", metavar = "DIR", - help = "Path to write generated files (default: PROJECT-DIR)") + help = "Path to write generated files") .file(canBeFile = false, canBeDir = true) + .defaultLazy("") { projectDir } - val lockFile: String by option( + private val lockFile: String by option( "--lock-file", "-l", metavar = "FILENAME", help = "Name of the generated lock file" ).default("gradle.lock") - val nixFile: String by option( + private val nixFile: String by option( "--nix-file", "-n", metavar = "FILENAME", help = "Name of the generated Nix file" ).default("gradle.nix") + private val gradleVersion: String? by option( + "--gradle-version", "-g", + metavar = "VERSION", + help = "Use a specific Gradle version" + ) + + private val gradleJdk: File? by option( + "--gradle-jdk", "-j", + metavar = "DIR", + help = "JDK home directory to use for launching Gradle (default: ${System.getProperty("java.home")})" + ).file(canBeFile = false, canBeDir = true) + private val logLevel: LogLevel by option( "--log", - metavar = "LEVEL", - help = "Print messages with priority of at least LEVEL") + help = "Print messages with this priority or higher") .enum() .default(LogLevel.error) - private val projectDir: File by option( - "--projectDir", "-d", - metavar = "PROJECT-DIR", - help = "Path to the project root (default: .)") - .file() - .default(File("."), "Current directory") - .validate { file -> - if (!file.exists()) fail("Directory \"$file\" does not exist.") - if (file.isFile) fail("Directory \"$file\" is a file.") - if (!file.canRead()) fail("Directory \"$file\" is not readable.") - if (!file.isProjectRoot()) fail("Directory \"$file\" is not a Gradle project.") - } - - private val tasks: List by option( - "--tasks", "-t", - metavar = "TASKS", - help = "Gradle tasks to run" - ).multiple() - private val dumpEvents: Boolean by option( "--dump-events", help = "Dump Gradle event logs to the output directory", @@ -132,7 +132,7 @@ class Gradle2Nix : CliktCommand( val logger = Logger(logLevel = logLevel, stacktrace = stacktrace) val appHome = System.getProperty("org.nixos.gradle2nix.share")?.let(::File) - ?: error("could not locate the /share directory in the gradle2nix installation") + ?: error("could not locate the /share directory in the gradle2nix installation: ${System.getenv("APP_HOME")}") val gradleHome = System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") val config = Config( diff --git a/gradle.lock b/gradle.lock index 0964060..721903c 100644 --- a/gradle.lock +++ b/gradle.lock @@ -52,6 +52,12 @@ } }, "com.github.ajalt.clikt:clikt:4.4.0": { + "clikt-4.4.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.jar" + ], + "hash": "sha256-pGJRQhCAqew0Cm92KHhUIOuyx9Ccw7BVOZ+j+676doY=" + }, "clikt-4.4.0.module": { "urls": [ "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.module" @@ -86,6 +92,12 @@ } }, "com.github.ajalt.colormath:colormath:3.5.0": { + "colormath-3.5.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.jar" + ], + "hash": "sha256-vSKbrzuv1VbRid5yRx2dF8KaofXTJEVgJwvvjmOiMZo=" + }, "colormath-3.5.0.module": { "urls": [ "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.module" @@ -120,6 +132,12 @@ } }, "com.github.ajalt.mordant:mordant:2.5.0": { + "mordant-2.5.0.jar": { + "urls": [ + "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.jar" + ], + "hash": "sha256-j80uWaxhZQy8d7paxqDaZlMD6xvVURejzZSpi+ir0xM=" + }, "mordant-2.5.0.module": { "urls": [ "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.module" @@ -3199,50 +3217,40 @@ "hash": "sha256-x+nvk73YqzYwMs5TgvzGTQAtbFicF1IzI2zSmOUaPBY=" } }, - "org.slf4j:slf4j-api:2.1.0-alpha1": { - "slf4j-api-2.1.0-alpha1.jar": { + "org.slf4j:slf4j-api:1.7.36": { + "slf4j-api-1.7.36.jar": { "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.jar" + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar" ], - "hash": "sha256-mrf/pkYgK0mdBZlaPsgvMbzLelA0XBUU2MtC7IzOo1M=" + "hash": "sha256-0+9XXj5JeWeNwBvx3M5RAhSTtNEft/G+itmCh3wWocA=" }, - "slf4j-api-2.1.0-alpha1.pom": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.pom", - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.pom" - ], - "hash": "sha256-QirqW+u6gwWzxhT6Zo7SKePJYQkw7PQvhzOO4F4minU=" - } - }, - "org.slf4j:slf4j-bom:2.1.0-alpha1": { - "slf4j-bom-2.1.0-alpha1.pom": { + "slf4j-api-1.7.36.pom": { "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-bom/2.1.0-alpha1/slf4j-bom-2.1.0-alpha1.pom" + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.pom" ], - "hash": "sha256-qOgTiZePRAcJJBuYPTHvp4cRO+EbgYwsa82e0wlv1IU=" + "hash": "sha256-+wRqnCKUN5KLsRwtJ8i113PriiXmDL0lPZhSEN7cJoQ=" } }, - "org.slf4j:slf4j-parent:2.1.0-alpha1": { - "slf4j-parent-2.1.0-alpha1.pom": { + "org.slf4j:slf4j-parent:1.7.36": { + "slf4j-parent-1.7.36.pom": { "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.1.0-alpha1/slf4j-parent-2.1.0-alpha1.pom" + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.36/slf4j-parent-1.7.36.pom" ], - "hash": "sha256-zkc1sfnIId4Lkrjb5AsHHG6jIHMuWTVZxupt+WX4c48=" + "hash": "sha256-uziNN/vN083mTDzt4hg4aTIY3EUfBAQMXfNgp47X6BI=" } }, - "org.slf4j:slf4j-simple:2.1.0-alpha1": { - "slf4j-simple-2.1.0-alpha1.jar": { + "org.slf4j:slf4j-simple:1.7.36": { + "slf4j-simple-1.7.36.jar": { "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.jar" + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.7.36/slf4j-simple-1.7.36.jar" ], - "hash": "sha256-AU/trHoyKI7W+PcqEAfn+zKuxb/tsnFGfkluCVNIL3U=" + "hash": "sha256-Lzm+2UPWJN+o9BAtBXEoOhCHC2qjbxl6ilBvFHAQwQ8=" }, - "slf4j-simple-2.1.0-alpha1.pom": { + "slf4j-simple-1.7.36.pom": { "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.pom", - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.pom" + "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.7.36/slf4j-simple-1.7.36.pom" ], - "hash": "sha256-RgReG+EA94JLUITh83eCxoBJcEeKRXPejEmgfQOpSGM=" + "hash": "sha256-xWuAoKa+oqBGPnDQiSrjOKnlB+SGdnpSBFNAmBIFjRs=" } }, "org.sonatype.oss:oss-parent:9": { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e390556..5a048ce 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,8 +15,7 @@ ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor" } ktor-server-netty = { module = "io.ktor:ktor-server-netty", version.ref = "ktor" } okio = "com.squareup.okio:okio:3.9.0" serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3" -slf4j-api = "org.slf4j:slf4j-api:+" -slf4j-simple = "org.slf4j:slf4j-simple:+" +slf4j-simple = "org.slf4j:slf4j-simple:1.7.36" xmlutil = "io.github.pdvrieze.xmlutil:serialization-jvm:+" [plugins] From 4910251482f28286a4bd389235e2f0b122c345c5 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Thu, 23 May 2024 17:26:32 -0700 Subject: [PATCH 13/34] Vastly simplify artifact extraction --- app/src/dist/share/gradle.nix | 8 +- .../main/kotlin/org/nixos/gradle2nix/Env.kt | 11 + .../org/nixos/gradle2nix/GradleRunner.kt | 3 +- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 2 +- .../kotlin/org/nixos/gradle2nix/Process.kt | 110 +- .../kotlin/org/nixos/gradle2nix/env/Env.kt | 22 - .../nixos/gradle2nix/gradle/GradleModule.kt | 102 - .../metadata/VerificationMetadata.kt | 147 - .../kotlin/org/nixos/gradle2nix/TestUtil.kt | 25 +- .../gradle2nix/VerificationMetadataTest.kt | 17 - .../basic/basic-java-project.groovy.json | 48 +- .../basic/basic-java-project.kotlin.json | 48 +- .../basic/basic-kotlin-project.kotlin.json | 954 +-- .../buildsrc/plugin-in-buildsrc.kotlin.json | 384 +- .../golden/dependency/classifier.groovy.json | 16 +- .../golden/dependency/classifier.kotlin.json | 16 +- .../golden/dependency/maven-bom.kotlin.json | 32 +- .../dependency/snapshot-dynamic.groovy.json | 18 +- .../dependency/snapshot-dynamic.kotlin.json | 18 +- .../dependency/snapshot-redirect.groovy.json | 74 +- .../golden/dependency/snapshot.groovy.json | 8 +- .../golden/dependency/snapshot.kotlin.json | 8 +- fixtures/golden/included-build.groovy.json | 24 +- .../settings-buildscript.groovy.json | 116 +- fixtures/golden/ivy/basic.kotlin.json | 20 +- .../resolves-from-default-repo.groovy.json | 308 +- .../resolves-from-default-repo.kotlin.json | 308 +- .../golden/settings/buildscript.groovy.json | 8 +- ...pendency-resolution-management.kotlin.json | 8 +- .../subprojects/multi-module.groovy.json | 80 +- .../subprojects/multi-module.kotlin.json | 80 +- fixtures/metadata/verification-metadata.xml | 5292 ----------------- .../ivy/basic/kotlin/build.gradle.kts | 1 - flake.nix | 7 +- gradle.lock | 1920 ++---- gradle.nix | 8 +- gradle2nix.nix | 7 +- .../nixos/gradle2nix/model/DependencySet.kt | 1 - .../org/nixos/gradle2nix/model/Repository.kt | 16 - .../gradle2nix/model/ResolvedArtifact.kt | 4 +- .../model/impl/DefaultRepository.kt | 11 - .../model/impl/DefaultResolvedArtifact.kt | 4 +- plugin/build.gradle.kts | 1 + .../org/nixos/gradle2nix/Gradle2NixPlugin.kt | 11 +- .../dependencygraph/DependencyExtractor.kt | 287 +- .../dependencygraph/DependencyUrlParser.kt | 158 - .../nixos/gradle2nix/util/GradleExtensions.kt | 11 +- .../DependencyUrlParserTest.kt | 58 - 48 files changed, 1246 insertions(+), 9574 deletions(-) create mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/Env.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/gradle/GradleModule.kt delete mode 100644 app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt delete mode 100644 app/src/test/kotlin/org/nixos/gradle2nix/VerificationMetadataTest.kt delete mode 100644 fixtures/metadata/verification-metadata.xml delete mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt delete mode 100644 model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultRepository.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParser.kt delete mode 100644 plugin/src/test/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParserTest.kt diff --git a/app/src/dist/share/gradle.nix b/app/src/dist/share/gradle.nix index dba9916..99d1c31 100644 --- a/app/src/dist/share/gradle.nix +++ b/app/src/dist/share/gradle.nix @@ -119,14 +119,12 @@ let # Fetch urls using the scheme for the first entry only; there isn't a # straightforward way to tell Nix to try multiple fetchers in turn # and short-circuit on the first successful fetch. - fetch = name: { urls, hash }: + fetch = name: { url, hash }: let - first = head urls; - scheme = head (builtins.match "([a-z0-9+.-]+)://.*" first); + scheme = head (builtins.match "([a-z0-9+.-]+)://.*" url); fetch' = getAttr scheme fetchers'; - urls' = filter (hasPrefix scheme) urls; in - fetch' { urls = urls'; inherit hash; }; + fetch' { inherit url hash; }; mkModule = id: artifacts: let diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Env.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Env.kt new file mode 100644 index 0000000..da09d88 --- /dev/null +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Env.kt @@ -0,0 +1,11 @@ +package org.nixos.gradle2nix + +import kotlinx.serialization.Serializable + +typealias Env = Map> + +@Serializable +data class Artifact internal constructor( + val url: String, + val hash: String, +) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt index e1273f2..0ca87ce 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt @@ -62,13 +62,12 @@ suspend fun ProjectConnection.build(config: Config): DependencySet = suspendCanc "--refresh-dependencies", "--gradle-user-home=${config.gradleHome}", "--init-script=${config.appHome}/init.gradle", - "--write-verification-metadata", "sha256" ) .apply { if (config.logger.stacktrace) { addArguments("--stacktrace") } - if (config.logger.logLevel <= LogLevel.debug) { + if (config.logger.logLevel < LogLevel.error) { setStandardOutput(System.err) setStandardError(System.err) } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index af98723..46a48b0 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -76,7 +76,7 @@ class Gradle2Nix : CliktCommand( .file(canBeFile = false, canBeDir = true) .defaultLazy("") { projectDir } - private val lockFile: String by option( + internal val lockFile: String by option( "--lock-file", "-l", metavar = "FILENAME", help = "Name of the generated lock file" diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt index 7d8b8c0..481a0dc 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -1,24 +1,6 @@ package org.nixos.gradle2nix -import org.nixos.gradle2nix.metadata.Artifact as ArtifactMetadata -import java.io.File -import java.io.IOException -import java.net.URI import okio.ByteString.Companion.decodeHex -import okio.HashingSource -import okio.blackholeSink -import okio.buffer -import okio.source -import org.nixos.gradle2nix.env.Artifact -import org.nixos.gradle2nix.env.Env -import org.nixos.gradle2nix.metadata.Checksum -import org.nixos.gradle2nix.metadata.Component -import org.nixos.gradle2nix.metadata.Md5 -import org.nixos.gradle2nix.metadata.Sha1 -import org.nixos.gradle2nix.metadata.Sha256 -import org.nixos.gradle2nix.metadata.Sha512 -import org.nixos.gradle2nix.metadata.VerificationMetadata -import org.nixos.gradle2nix.metadata.parseVerificationMetadata import org.nixos.gradle2nix.model.DependencyCoordinates import org.nixos.gradle2nix.model.DependencySet @@ -26,12 +8,9 @@ fun processDependencies( config: Config, dependencySets: Iterable ): Env { - val verificationMetadata = readVerificationMetadata(config) - val verificationComponents = verificationMetadata?.components?.associateBy { it.id.id } ?: emptyMap() - return buildMap> { for (dependencySet in dependencySets) { - val env = dependencySet.toEnv(config, verificationComponents) + val env = dependencySet.toEnv() for ((id, artifacts) in env) { merge(id, artifacts) { a, b -> @@ -47,10 +26,7 @@ fun processDependencies( """.trimIndent()) } - Artifact( - (aa.urls + ba.urls).distinct().sorted(), - aa.hash - ) + aa } } } @@ -63,89 +39,19 @@ fun processDependencies( .mapKeys { (coordinates, _) -> coordinates.id } } -private fun DependencySet.toEnv(config: Config, verificationComponents: Map): Map> { +private fun DependencySet.toEnv(): Map> { return dependencies.associate { dep -> - val component = verificationComponents[dep.coordinates.id] - ?: verifyComponentFilesInCache(config, dep.coordinates) - ?: config.logger.error("${dep.coordinates}: no dependency metadata found") - - dep.coordinates to dep.artifacts.mapNotNull { resolvedArtifact -> - val artifact = component.artifacts.find { it.name == resolvedArtifact.name } - ?.let { Artifact(resolvedArtifact.urls.sorted(), it.checksums.first().toSri()) } - ?: downloadArtifact(resolvedArtifact.urls.sorted()) - artifact?.let { resolvedArtifact.filename to it } - }.sortedBy { it.first }.toMap() - } -} - -private fun readVerificationMetadata(config: Config): VerificationMetadata? { - return parseVerificationMetadata(config.logger, config.projectDir.resolve("gradle/verification-metadata.xml")) -} - -private fun verifyComponentFilesInCache( - config: Config, - id: DependencyCoordinates, -): Component? { - val cacheDir = with(id) { config.gradleHome.resolve("caches/modules-2/files-2.1/$group/$artifact/$version") } - if (!cacheDir.exists()) { - return null - } - val verifications = cacheDir.walk().filter { it.isFile }.map { f -> - ArtifactMetadata(f.name.replaceFirst(id.version, id.timestampedVersion), sha256 = Sha256(f.sha256())) - } - config.logger.info("${id.id}: obtained artifact hashes from Gradle cache.") - return Component(id, verifications.toList()) -} - -private fun downloadArtifact( - urls: List -): Artifact? { - return maybeDownloadText(urls)?.let { - Artifact( - urls, - it.hash.toSri() - ) - } -} - -private fun maybeDownloadText( - urls: List, -): ArtifactDownload? { - for (url in urls) { - try { - val source = HashingSource.sha256(URI(url).toURL().openStream().source()) - val text = source.buffer().readUtf8() - val hash = source.hash - return ArtifactDownload(text, url, Sha256(hash.hex())) - } catch (e: IOException) { - // Pass + dep.coordinates to dep.artifacts.associate { + it.name to Artifact(it.url, it.hash.toSri()) } } - return null } -private fun File.sha256(): String { - val source = HashingSource.sha256(source()) - source.buffer().readAll(blackholeSink()) - return source.hash.hex() +internal fun String.toSri(): String { + val hash = decodeHex().base64() + return "sha256-$hash" } -internal fun Checksum.toSri(): String { - val hash = value.decodeHex().base64() - return when (this) { - is Md5 -> "md5-$hash" - is Sha1 -> "sha1-$hash" - is Sha256 -> "sha256-$hash" - is Sha512 -> "sha512-$hash" - } -} - -private data class ArtifactDownload( - val artifact: T, - val url: String, - val hash: Checksum -) - private val coordinatesComparator: Comparator = compareBy { it.group } .thenBy { it.artifact } .thenByDescending { Version(it.version) } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt b/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt deleted file mode 100644 index c74d9db..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/env/Env.kt +++ /dev/null @@ -1,22 +0,0 @@ -package org.nixos.gradle2nix.env - -import kotlinx.serialization.Serializable - -typealias Env = Map> - -@Serializable -data class Artifact internal constructor( - val urls: List, - val hash: String, -) { - - companion object { - operator fun invoke( - urls: List, - hash: String - ) = Artifact( - urls.sorted(), - hash - ) - } -} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/gradle/GradleModule.kt b/app/src/main/kotlin/org/nixos/gradle2nix/gradle/GradleModule.kt deleted file mode 100644 index daf6766..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/gradle/GradleModule.kt +++ /dev/null @@ -1,102 +0,0 @@ -package org.nixos.gradle2nix.gradle - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.json.JsonObject - -@Serializable -data class GradleModule( - val formatVersion: String, - val component: Component? = null, - val createdBy: CreatedBy? = null, - val variants: List = emptyList(), -) - -@Serializable -data class Component( - val group: String, - val module: String, - val version: String, - val url: String? = null, -) - -@Serializable -data class Gradle( - val version: String, - val buildId: String? = null -) - -@Serializable -data class CreatedBy( - val gradle: Gradle? = null -) - -@Serializable -data class Variant( - val name: String, - val attributes: JsonObject? = null, - @SerialName("available-at") val availableAt: AvailableAt? = null, - val dependencies: List = emptyList(), - val dependencyConstraints: List = emptyList(), - val files: List = emptyList(), - val capabilities: List = emptyList() -) - -@Serializable -data class AvailableAt( - val url: String, - val group: String, - val module: String, - val version: String, -) - -@Serializable -data class Dependency( - val group: String, - val module: String, - val version: JsonObject? = null, - val excludes: List = emptyList(), - val reason: String? = null, - val attributes: JsonObject? = null, - val requestedCapabilities: List = emptyList(), - val endorseStrictVersions: Boolean = false, - val thirdPartyCompatibility: ThirdPartyCompatibility? = null, -) - -@Serializable -data class DependencyConstraint( - val group: String, - val module: String, - val version: JsonObject? = null, - val reason: String? = null, - val attributes: JsonObject? = null, -) - -@Serializable -data class VariantFile( - val name: String, - val url: String, - val size: Long, - val sha1: String? = null, - val sha256: String? = null, - val sha512: String? = null, - val md5: String? = null, -) - -@Serializable -data class Capability( - val group: String, - val name: String, - val version: String? = null, -) - -@Serializable -data class Exclude( - val group: String, - val module: String, -) - -@Serializable -data class ThirdPartyCompatibility( - val artifactSelector: String -) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt b/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt deleted file mode 100644 index 83d456b..0000000 --- a/app/src/main/kotlin/org/nixos/gradle2nix/metadata/VerificationMetadata.kt +++ /dev/null @@ -1,147 +0,0 @@ -package org.nixos.gradle2nix.metadata - -import java.io.File -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import nl.adaptivity.xmlutil.serialization.XML -import nl.adaptivity.xmlutil.serialization.XmlChildrenName -import nl.adaptivity.xmlutil.serialization.XmlElement -import nl.adaptivity.xmlutil.serialization.XmlSerialName -import nl.adaptivity.xmlutil.xmlStreaming -import org.nixos.gradle2nix.Logger -import org.nixos.gradle2nix.model.DependencyCoordinates -import org.nixos.gradle2nix.model.impl.DefaultDependencyCoordinates - -sealed interface Coordinates { - val group: String? - val name: String? - val version: String? - val regex: Boolean - val file: String? -} - -@Serializable -@SerialName("trust") -data class Trust( - override val group: String? = null, - override val name: String? = null, - override val version: String? = null, - override val regex: Boolean = false, - override val file: String? = null, - val reason: String? = null, -) : Coordinates - -@Serializable -@SerialName("configuration") -data class Configuration( - @SerialName("verify-metadata") @XmlElement(true) val verifyMetadata: Boolean = false, - @SerialName("verify-signatures") @XmlElement(true) val verifySignatures: Boolean = false, - @SerialName("trusted-artifacts") @XmlChildrenName("trusted-artifacts") val trustedArtifacts: List = emptyList() -) - -@Serializable -sealed interface Checksum { - val value: String - val origin: String? - val reason: String? - val alternatives: List -} - -@Serializable -@SerialName("md5") -data class Md5( - override val value: String, - override val origin: String? = null, - override val reason: String? = null, - @XmlChildrenName("also-trust") - override val alternatives: List = emptyList() -) : Checksum - -@Serializable -@SerialName("sha1") -data class Sha1( - override val value: String, - override val origin: String? = null, - override val reason: String? = null, - @XmlChildrenName("also-trust") - override val alternatives: List = emptyList() -) : Checksum - -@Serializable -@SerialName("sha256") -data class Sha256( - override val value: String, - override val origin: String? = null, - override val reason: String? = null, - @XmlChildrenName("also-trust") - override val alternatives: List = emptyList() -) : Checksum - -@Serializable -@SerialName("sha512") -data class Sha512( - override val value: String, - override val origin: String? = null, - override val reason: String? = null, - @XmlChildrenName("also-trust") - override val alternatives: List = emptyList() -) : Checksum - -@Serializable -@SerialName("artifact") -data class Artifact( - val name: String, - val md5: Md5? = null, - val sha1: Sha1? = null, - val sha256: Sha256? = null, - val sha512: Sha512? = null, -) { - val checksums: List by lazy { listOfNotNull(sha512, sha256, sha1, md5) } -} - -@Serializable -@SerialName("component") -data class Component( - val group: String, - val name: String, - val version: String, - val timestamp: String? = null, - val artifacts: List = emptyList(), -) { - val id: DependencyCoordinates get() = DefaultDependencyCoordinates(group, name, version, timestamp) - - constructor(id: DependencyCoordinates, artifacts: List) : this( - id.group, - id.artifact, - id.version, - id.timestamp, - artifacts - ) -} - -@Serializable -@XmlSerialName( - "verification-metadata", - namespace = "https://schema.gradle.org/dependency-verification", - prefix = "" -) -data class VerificationMetadata( - val configuration: Configuration = Configuration(), - @XmlChildrenName("components", "https://schema.gradle.org/dependency-verification") val components: List = emptyList() -) - -val XmlFormat = XML { - autoPolymorphic = true - recommended() -} - -fun parseVerificationMetadata(logger: Logger, metadata: File): VerificationMetadata? { - return try { - metadata.reader().buffered().let(xmlStreaming::newReader).use { input -> - XmlFormat.decodeFromReader(input) - } - } catch (e: Exception) { - logger.warn("$metadata: failed to parse Gradle dependency verification metadata", e) - return null - } -} diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt index 3e5936d..4d99c3e 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt @@ -1,7 +1,6 @@ package org.nixos.gradle2nix import io.kotest.assertions.fail -import io.kotest.assertions.withClue import io.kotest.common.ExperimentalKotest import io.kotest.common.KotestInternal import io.kotest.core.extensions.MountableExtension @@ -14,9 +13,7 @@ import io.kotest.core.test.TestScope import io.kotest.core.test.TestType import io.kotest.matchers.equals.beEqual import io.kotest.matchers.file.shouldBeAFile -import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.should -import io.kotest.matchers.shouldBe import io.ktor.http.ContentType import io.ktor.http.Url import io.ktor.server.engine.embeddedServer @@ -39,8 +36,6 @@ import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream import kotlinx.serialization.json.encodeToStream import okio.use -import org.nixos.gradle2nix.env.Env -import org.nixos.gradle2nix.metadata.parseVerificationMetadata private val app = Gradle2Nix() @@ -93,15 +88,16 @@ suspend fun TestScope.fixture( } app.main( listOf( - "-d", tempDir.toString(), + "-p", tempDir.toString(), "--log", "debug", "--stacktrace", "--dump-events", "--", - "-Dorg.nixos.gradle2nix.m2=$m2" + "-Dorg.nixos.gradle2nix.m2=$m2", + "--info" ) + args ) - val file = tempDir.resolve("${app.envFile}.json") + val file = tempDir.resolve(app.lockFile) file.shouldBeAFile() val env: Env = file.inputStream().buffered().use { input -> Json.decodeFromStream(input) @@ -138,19 +134,6 @@ suspend fun TestScope.golden( } json.encodeToString(env) should beEqual(goldenData) } - - val metadata = parseVerificationMetadata( - testLogger, - dir.resolve("gradle/verification-metadata.xml") - )!! - - for (component in metadata.components) { - val componentId = component.id.id - - withClue("env should contain component $componentId") { - env[componentId].shouldNotBeNull() - } - } } } diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/VerificationMetadataTest.kt b/app/src/test/kotlin/org/nixos/gradle2nix/VerificationMetadataTest.kt deleted file mode 100644 index de075a3..0000000 --- a/app/src/test/kotlin/org/nixos/gradle2nix/VerificationMetadataTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package org.nixos.gradle2nix - -import io.kotest.core.spec.style.FunSpec -import io.kotest.matchers.nulls.beNull -import io.kotest.matchers.nulls.shouldNotBeNull -import io.kotest.matchers.shouldNot -import kotlinx.serialization.decodeFromString -import org.nixos.gradle2nix.metadata.Artifact -import org.nixos.gradle2nix.metadata.XmlFormat -import org.nixos.gradle2nix.metadata.parseVerificationMetadata - -class VerificationMetadataTest : FunSpec({ - test("parses verification metadata") { - val metadata = parseVerificationMetadata(testLogger, fixture("metadata/verification-metadata.xml")) - metadata shouldNot beNull() - } -}) diff --git a/fixtures/golden/basic/basic-java-project.groovy.json b/fixtures/golden/basic/basic-java-project.groovy.json index e7f7e32..daf707a 100644 --- a/fixtures/golden/basic/basic-java-project.groovy.json +++ b/fixtures/golden/basic/basic-java-project.groovy.json @@ -1,87 +1,63 @@ { "com.squareup.moshi:moshi:1.8.0": { "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar", "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" }, "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom", "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" } }, "com.squareup.moshi:moshi-parent:1.8.0": { "moshi-parent-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom", "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c=" } }, "com.squareup.okio:okio:2.2.2": { "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar", "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" }, "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom", "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } }, "org.jetbrains:annotations:13.0": { "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar", "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" }, "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom", "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar", "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" }, "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom", "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar", "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" }, "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom", "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" } }, "org.sonatype.oss:oss-parent:7": { "oss-parent-7.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } } diff --git a/fixtures/golden/basic/basic-java-project.kotlin.json b/fixtures/golden/basic/basic-java-project.kotlin.json index e7f7e32..daf707a 100644 --- a/fixtures/golden/basic/basic-java-project.kotlin.json +++ b/fixtures/golden/basic/basic-java-project.kotlin.json @@ -1,87 +1,63 @@ { "com.squareup.moshi:moshi:1.8.0": { "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar", "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" }, "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom", "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" } }, "com.squareup.moshi:moshi-parent:1.8.0": { "moshi-parent-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom", "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c=" } }, "com.squareup.okio:okio:2.2.2": { "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar", "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" }, "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom", "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } }, "org.jetbrains:annotations:13.0": { "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar", "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" }, "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom", "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar", "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" }, "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom", "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar", "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" }, "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom", "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" } }, "org.sonatype.oss:oss-parent:7": { "oss-parent-7.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } } diff --git a/fixtures/golden/basic/basic-kotlin-project.kotlin.json b/fixtures/golden/basic/basic-kotlin-project.kotlin.json index d76a46d..a15387d 100644 --- a/fixtures/golden/basic/basic-kotlin-project.kotlin.json +++ b/fixtures/golden/basic/basic-kotlin-project.kotlin.json @@ -1,1675 +1,1189 @@ { "com.fasterxml:oss-parent:38": { "oss-parent-38.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/38/oss-parent-38.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/38/oss-parent-38.pom", "hash": "sha256-yD+PRd/cqNC2s2YcYLP4R4D2cbEuBvka1dHBodH5Zug=" } }, "com.fasterxml.jackson:jackson-base:2.10.1": { "jackson-base-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.10.1/jackson-base-2.10.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.10.1/jackson-base-2.10.1.pom", "hash": "sha256-dUnyCbxITO6tG0ME+XtPfi5bXOmARSfQ2XFw3FF3ri8=" } }, "com.fasterxml.jackson:jackson-bom:2.10.1": { "jackson-bom-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.10.1/jackson-bom-2.10.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.10.1/jackson-bom-2.10.1.pom", "hash": "sha256-H92hwb5qLkrG8MML3/C7ydAtYkcKgIIwJcF6u2ly1eQ=" } }, "com.fasterxml.jackson:jackson-parent:2.10": { "jackson-parent-2.10.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.10/jackson-parent-2.10.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.10/jackson-parent-2.10.pom", "hash": "sha256-pQ24CCnE+JfG0OfpVHLLtDsOvs4TWmjjnCe4pv4z5IE=" } }, "com.fasterxml.jackson.core:jackson-annotations:2.10.1": { "jackson-annotations-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar", "hash": "sha256-Zz+K4Wvs6k+pN0BLOoUUF/r0LfO7xZICi74r/gzJ2Ms=" }, "jackson-annotations-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.pom", "hash": "sha256-7OURA2Z+iBHw/3RYmGryFxhi5UuYE8FwjPk3kESH+Vw=" } }, "com.fasterxml.jackson.core:jackson-core:2.10.1": { "jackson-core-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar", "hash": "sha256-eb/73NNJ9ppawlLitAlhMXBDhq9PoU2VOV6poOQjzzM=" }, "jackson-core-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.pom", "hash": "sha256-EXkJC3ILJankJmQwLwM0oiQLMMcoC0IkJeT0UZ5bLP4=" } }, "com.fasterxml.jackson.core:jackson-databind:2.10.1": { "jackson-databind-2.10.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar", "hash": "sha256-LSP0cAFJIjNWWt9aNPIl8q6JVkzuCAJIc+w2t4Qu3kY=" }, "jackson-databind-2.10.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.pom", "hash": "sha256-OGlQZeP1ILBbvY6lmC5ba1vZ+FYpZ7g9rLfQerCMauc=" } }, "com.github.gundy:semver4j:0.16.4": { "semver4j-0.16.4-nodeps.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4-nodeps.jar" - ], + "url": "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4-nodeps.jar", "hash": "sha256-P1nspRY3TM1P01UWJb9Q+KSxkfcAUI985IZkYKYSivA=" }, "semver4j-0.16.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom" - ], + "url": "https://plugins.gradle.org/m2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom", "hash": "sha256-MgAdskQ7M53SH1t5/ynRreci0boIDCFL3oGfD3LRYE0=" } }, "com.github.pengrad:java-telegram-bot-api:4.6.0": { "java-telegram-bot-api-4.6.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.jar", "hash": "sha256-w4H/cErewM/mZbrnUYtwiT5Czf83Smb0qYxGfeG/TdU=" }, "java-telegram-bot-api-4.6.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/pengrad/java-telegram-bot-api/4.6.0/java-telegram-bot-api-4.6.0.pom", "hash": "sha256-nZxF//5qwbIbZffUK0k2T/gnnX5pLU9wF0BLLhC+YsE=" } }, "com.google.code.findbugs:jsr305:3.0.2": { "jsr305-3.0.2.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" - ], + "url": "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", "hash": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=" }, "jsr305-3.0.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.pom", "hash": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4=" } }, "com.google.code.gson:gson:2.8.9": { "gson-2.8.9.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar" - ], + "url": "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar", "hash": "sha256-05mSkYVd5JXJTHQ3YbirUXbP6r4oGlqw2OjUUyb9cD4=" }, "gson-2.8.9.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom", "hash": "sha256-r97W5qaQ+/OtSuZa2jl/CpCl9jCzA9G3QbnJeSb91N4=" } }, "com.google.code.gson:gson:2.8.5": { "gson-2.8.5.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar", "hash": "sha256-IzoBSfw2XJ9u29aDz+JmsZvcdzvpjqva9rPJJLSOfYE=" }, "gson-2.8.5.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom", "hash": "sha256-uDCFV6f8zJLZ/nyM0FmSWLNhKF0uzedontqYhDJVoJI=" } }, "com.google.code.gson:gson-parent:2.8.9": { "gson-parent-2.8.9.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.9/gson-parent-2.8.9.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.9/gson-parent-2.8.9.pom", "hash": "sha256-sW4CbmNCfBlyrQ/GhwPsN5sVduQRuknDL6mjGrC7z/s=" } }, "com.google.code.gson:gson-parent:2.8.5": { "gson-parent-2.8.5.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.8.5/gson-parent-2.8.5.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.8.5/gson-parent-2.8.5.pom", "hash": "sha256-jx/scrkaceo57Dn193jE0RJLawl8bVWzpQtVSlIjeyc=" } }, "com.google.errorprone:error_prone_annotations:2.3.4": { "error_prone_annotations-2.3.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar" - ], + "url": "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar", "hash": "sha256-uvfW6pfOYGxT4RtoVLpfLOfvXCTd3wr6GNEmC9JbACw=" }, "error_prone_annotations-2.3.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.pom", "hash": "sha256-EyZziktPfMrPYHuGahH7hRk+9g9qWUYRh85yZfm+W+0=" } }, "com.google.errorprone:error_prone_parent:2.3.4": { "error_prone_parent-2.3.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_parent/2.3.4/error_prone_parent-2.3.4.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/errorprone/error_prone_parent/2.3.4/error_prone_parent-2.3.4.pom", "hash": "sha256-QElbQ3pg0jmPD9/AVLidnDlKgjR6J0oHIcLpUKQwIYY=" } }, "com.google.guava:failureaccess:1.0.1": { "failureaccess-1.0.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" - ], + "url": "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", "hash": "sha256-oXHuTHNN0tqDfksWvp30Zhr6typBra8x64Tf2vk2yiY=" }, "failureaccess-1.0.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom", "hash": "sha256-6WBCznj+y6DaK+lkUilHyHtAopG1/TzWcqQ0kkEDxLk=" } }, "com.google.guava:guava:29.0-jre": { "guava-29.0-jre.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.jar" - ], + "url": "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.jar", "hash": "sha256-sixftm1h57lSJTHQSy+RW1FY6AqgtA7nKCyL+wew2iU=" }, "guava-29.0-jre.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/guava/guava/29.0-jre/guava-29.0-jre.pom", "hash": "sha256-kCfpNAmJA9KH8bphyLZfAdHR4dp6b7zAS/PeBUQBRCY=" } }, "com.google.guava:guava-parent:29.0-jre": { "guava-parent-29.0-jre.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/guava-parent/29.0-jre/guava-parent-29.0-jre.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/guava/guava-parent/29.0-jre/guava-parent-29.0-jre.pom", "hash": "sha256-alf54C9436L0vaNBYGWmRCauG2beIoz24Zbi4ZElU78=" } }, "com.google.guava:guava-parent:26.0-android": { "guava-parent-26.0-android.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/guava-parent/26.0-android/guava-parent-26.0-android.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/guava/guava-parent/26.0-android/guava-parent-26.0-android.pom", "hash": "sha256-+GmKtGypls6InBr8jKTyXrisawNNyJjUWDdCNgAWzAQ=" } }, "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava": { "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" - ], + "url": "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar", "hash": "sha256-s3KgN9QjCqV/vv/e8w/WEj+cDC24XQrO0AyRuXTzP5k=" }, "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom", "hash": "sha256-GNSx2yYVPU5VB5zh92ux/gXNuGLvmVSojLzE/zi4Z5s=" } }, "com.google.j2objc:j2objc-annotations:1.3": { "j2objc-annotations-1.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" - ], + "url": "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar", "hash": "sha256-Ia8wySJnvWEiwOC00gzMtmQaN+r5VsZUDsRx1YTmSns=" }, "j2objc-annotations-1.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom" - ], + "url": "https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom", "hash": "sha256-X6yoJLoRW+5FhzAzff2y/OpGui/XdNQwTtvzD6aj8FU=" } }, "com.natpryce:konfig:1.6.10.0": { "konfig-1.6.10.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.jar", "hash": "sha256-1Va6vANYRVP1/TzEaJTF6jMxCSv7qufqYm1bjUznk7s=" }, "konfig-1.6.10.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/natpryce/konfig/1.6.10.0/konfig-1.6.10.0.pom", "hash": "sha256-1NTlAHxEbyBlnbIqc2WXwLCFOLy6FL1HEND4VNxxFYg=" } }, "com.squareup.okhttp3:logging-interceptor:3.12.3": { "logging-interceptor-3.12.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.jar", "hash": "sha256-NNEihOBDYkI+VFe03a74xNhLyNgN1K0ZQ+Y8hQf4FXY=" }, "logging-interceptor-3.12.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/logging-interceptor/3.12.3/logging-interceptor-3.12.3.pom", "hash": "sha256-H/YmwXE+Itb1bpLtvctOnBRMszSoT6gAsHAfmW+xp/I=" } }, "com.squareup.okhttp3:okhttp:3.12.3": { "okhttp-3.12.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.jar", "hash": "sha256-gUWW1U7f2Ut9nYcSvzeYZ9ObCQQo3TjFEG0N7V2jVv8=" }, "okhttp-3.12.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.3/okhttp-3.12.3.pom", "hash": "sha256-xXZHCTgwkLDEfEiizwh2OTvt1Ihmv83hk0NJf/oXuEQ=" } }, "com.squareup.okhttp3:parent:3.12.3": { "parent-3.12.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.3/parent-3.12.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.3/parent-3.12.3.pom", "hash": "sha256-wKYntmtFpWhCEyGoGoLl/Fnit2zV9+X2Em8oKUR4MR4=" } }, "com.squareup.okio:okio:1.15.0": { "okio-1.15.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.jar", "hash": "sha256-aT+jGafohDMAYCsgQCO3Z08Qbry1d/LdWAchK2YRi9I=" }, "okio-1.15.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom", "hash": "sha256-8cELFIDRq3X7BRoHsnPjfNolJel+Fgfug+aDO3Dhv84=" } }, "com.squareup.okio:okio-parent:1.15.0": { "okio-parent-1.15.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.15.0/okio-parent-1.15.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.15.0/okio-parent-1.15.0.pom", "hash": "sha256-NOCaPqKqzXId85lHDQWkeuza2AEmmiEhlf+/nSEFbbI=" } }, "com.winterbe:expekt:0.5.0": { "expekt-0.5.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.jar", "hash": "sha256-mKJnQqgnRs1u5m7/u8PK/TInA+onhhf734u5tU3O8Xw=" }, "expekt-0.5.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/winterbe/expekt/0.5.0/expekt-0.5.0.pom", "hash": "sha256-We03cwfzVZIPORBAQ6YBDDrnbKWfKULGxk3Ttg0pEsc=" } }, "de.undercouch:gradle-download-task:4.1.1": { "gradle-download-task-4.1.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.jar" - ], + "url": "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.jar", "hash": "sha256-6wi1cOQI1GRnBecKlJYU1DnqKxFFXxZSqwMw3olU2rk=" }, "gradle-download-task-4.1.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.pom" - ], + "url": "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.1.1/gradle-download-task-4.1.1.pom", "hash": "sha256-EQnx9xpUJU1ZAzfYudRD+d/AhyjJwdgzVlXMHcyIwLk=" } }, "io.github.classgraph:classgraph:4.8.37": { "classgraph-4.8.37.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.jar", "hash": "sha256-fR0+iCjB7vVJ1B7x7Oc9LFxYz7lRs/Igzwzx3SVVgXM=" }, "classgraph-4.8.37.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.37/classgraph-4.8.37.pom", "hash": "sha256-pJBV0GEleGZQvjPu13rphQCROLhNOWA7wesu08gIWzQ=" } }, "io.javalin:javalin:3.7.0": { "javalin-3.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.jar", "hash": "sha256-YGYQPPI2In7IacUllknrErvlwFyH8MHp9y86RGYOZ3I=" }, "javalin-3.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/javalin/javalin/3.7.0/javalin-3.7.0.pom", "hash": "sha256-11U3Www5qZiAEH3sDAzdMgDx7qi2npxtFkYdyuR050M=" } }, "javax.servlet:javax.servlet-api:3.1.0": { "javax.servlet-api-3.1.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar", "hash": "sha256-r0VrLdQcToLPVPPnQ7xniXPZ/jW9TTBx+gXH5TM7hII=" }, "javax.servlet-api-3.1.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.pom", "hash": "sha256-sxEJ4i6j8t8a15VUMucYo13vUK5sGWmANK+ooM+ekGk=" } }, "joda-time:joda-time:2.12.7": { "joda-time-2.12.7.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/joda-time/joda-time/2.12.7/joda-time-2.12.7.jar" - ], + "url": "https://repo.maven.apache.org/maven2/joda-time/joda-time/2.12.7/joda-time-2.12.7.jar", "hash": "sha256-OFKCsAWBjPrM2+i9JCmBHn5kF4LyuIkyprj/UdZo9hY=" }, "joda-time-2.12.7.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/joda-time/joda-time/2.12.7/joda-time-2.12.7.pom" - ], + "url": "https://repo.maven.apache.org/maven2/joda-time/joda-time/2.12.7/joda-time-2.12.7.pom", "hash": "sha256-hf3b+kfCmf2OzhyT//1H2cLTyQNaM7XbAXswTGd+hCg=" } }, "net.java:jvnet-parent:3": { "jvnet-parent-3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/jvnet-parent/3/jvnet-parent-3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/net/java/jvnet-parent/3/jvnet-parent-3.pom", "hash": "sha256-MPV4nvo53b+WCVqto/wSYMRWH68vcUaGcXyy3FBJR1o=" } }, "net.java.dev.jna:jna:5.6.0": { "jna-5.6.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], + "url": "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" }, "jna-5.6.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], + "url": "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" } }, "org.apiguardian:apiguardian-api:1.1.0": { "apiguardian-api-1.1.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar", "hash": "sha256-qarp/4rj4XoqGPeRdegrFiZ8JG+708qd+7spCwjc/dQ=" }, "apiguardian-api-1.1.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom", "hash": "sha256-qUW5y1zZt3sscRhE5lnEPsBw71nZ9Qn6n0wYYbSGJxE=" } }, "org.checkerframework:checker-qual:2.11.1": { "checker-qual-2.11.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar" - ], + "url": "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar", "hash": "sha256-AVIkpLHcbebaBTJz1Np9Oc/qIOYwOBafxFrA0dycWTg=" }, "checker-qual-2.11.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom" - ], + "url": "https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom", "hash": "sha256-zy4MkNj3V0VfSiWOpglzkFNmO9XaannZvVP5NaR955w=" } }, "org.eclipse.jetty:jetty-client:9.4.25.v20191220": { "jetty-client-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.jar", "hash": "sha256-qwUsaY1GjdLLjZ1bcH5VqUQDDZFfT59BrDzc+Cs9xuA=" }, "jetty-client-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-client/9.4.25.v20191220/jetty-client-9.4.25.v20191220.pom", "hash": "sha256-ixNwOlizo3BtJIiemlXDSRu+XY+DZdOoKkvvqcbp+eM=" } }, "org.eclipse.jetty:jetty-http:9.4.25.v20191220": { "jetty-http-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.jar", "hash": "sha256-3JxGbw/kvzf9X02iPQFoSwZ63poWAsTzxbaUvMIIR7o=" }, "jetty-http-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-http/9.4.25.v20191220/jetty-http-9.4.25.v20191220.pom", "hash": "sha256-upIlnnZtESJEah+zuPZAXnroxcQS8i6XbLCEyoxhm4c=" } }, "org.eclipse.jetty:jetty-io:9.4.25.v20191220": { "jetty-io-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.jar", "hash": "sha256-6cMdtQO2B1/UPxVTGQMAfB6Cn8JF2jQEtuQyfyTvlWk=" }, "jetty-io-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-io/9.4.25.v20191220/jetty-io-9.4.25.v20191220.pom", "hash": "sha256-q1nyQDwSIWhSvBzyhOVhETo9LgsZUmMwmLBfOQW9kYE=" } }, "org.eclipse.jetty:jetty-project:9.4.25.v20191220": { "jetty-project-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-project/9.4.25.v20191220/jetty-project-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-project/9.4.25.v20191220/jetty-project-9.4.25.v20191220.pom", "hash": "sha256-sXc6pTwOhm898Oi9iSBTqbSRaiglyCqH073vbdTG0vk=" } }, "org.eclipse.jetty:jetty-security:9.4.25.v20191220": { "jetty-security-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.jar", "hash": "sha256-Y3HBY7kqyNb6sIyx2rkdDmkOclZoc9j3g706d5Oj2iY=" }, "jetty-security-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-security/9.4.25.v20191220/jetty-security-9.4.25.v20191220.pom", "hash": "sha256-2j1qeYtoSPOXIPxweDTha+S8pC31qiXCWSK5Mvz+rus=" } }, "org.eclipse.jetty:jetty-server:9.4.25.v20191220": { "jetty-server-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.jar", "hash": "sha256-z89tvOS+zuXwZw2bx6do0bc87wyEZj6CrMC5EN8lZfQ=" }, "jetty-server-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-server/9.4.25.v20191220/jetty-server-9.4.25.v20191220.pom", "hash": "sha256-uWOogVUMUf5hOTgJbqfwWZLoGzBBy8faXgb6+8/YZWk=" } }, "org.eclipse.jetty:jetty-servlet:9.4.25.v20191220": { "jetty-servlet-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.jar", "hash": "sha256-LU0t1OZdCWL0/xHTycytMKYmN3fgVpwbVzE4aLNHchw=" }, "jetty-servlet-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-servlet/9.4.25.v20191220/jetty-servlet-9.4.25.v20191220.pom", "hash": "sha256-tw95bbbqAGKLv7ph5aLgMRLjJ10OaIHJN/ARwn/wXos=" } }, "org.eclipse.jetty:jetty-util:9.4.25.v20191220": { "jetty-util-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.jar", "hash": "sha256-IjeA1yTBx0Y8MjOoLAdobz/XigIvVg0BAlfb5AKODRQ=" }, "jetty-util-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-util/9.4.25.v20191220/jetty-util-9.4.25.v20191220.pom", "hash": "sha256-iEWSOTxmB1pqb6Z9iY532crIf1lIy10xDPyN5Z7wE8Y=" } }, "org.eclipse.jetty:jetty-webapp:9.4.25.v20191220": { "jetty-webapp-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.jar", "hash": "sha256-qnWB2sNcrVdLA82aFEuibc9DeZ0k7P9enzoGiKJzLvE=" }, "jetty-webapp-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-webapp/9.4.25.v20191220/jetty-webapp-9.4.25.v20191220.pom", "hash": "sha256-HRXbctxeN+O+7iEjd1PsYkXn/sXj/ehUK5Yf/ZB9Ufw=" } }, "org.eclipse.jetty:jetty-xml:9.4.25.v20191220": { "jetty-xml-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.jar", "hash": "sha256-+xNsUWNTj8WHQuqlbfRIdlu4FvJd43Hasf6u5612tN8=" }, "jetty-xml-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-xml/9.4.25.v20191220/jetty-xml-9.4.25.v20191220.pom", "hash": "sha256-05fGZk1fr9j7VX7NJU4EZP16bakwG60B4C248SAFvrM=" } }, "org.eclipse.jetty.websocket:websocket-api:9.4.25.v20191220": { "websocket-api-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.jar", "hash": "sha256-sRCCel9HyDUQMj7hm+h+N7FUDhVTfNAhqTVJ4El0f68=" }, "websocket-api-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-api/9.4.25.v20191220/websocket-api-9.4.25.v20191220.pom", "hash": "sha256-xn/BVBQDGiWCGJri17IMVhDTUvWkf4fSi8+1lJQTWcs=" } }, "org.eclipse.jetty.websocket:websocket-client:9.4.25.v20191220": { "websocket-client-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.jar", "hash": "sha256-dIMBH4pyWNlP62P+SjZSCYG8HYXsPdGxSJlX1AcRFOw=" }, "websocket-client-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-client/9.4.25.v20191220/websocket-client-9.4.25.v20191220.pom", "hash": "sha256-AzAQdDEZ7xKiB2CXLdHAu6BwLuiVU5LtP/QdF2RMOs4=" } }, "org.eclipse.jetty.websocket:websocket-common:9.4.25.v20191220": { "websocket-common-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.jar", "hash": "sha256-1bvWkUvEIbKOB6MXkc2ZKgBnQX1rX9Bapkq1hDrydzw=" }, "websocket-common-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-common/9.4.25.v20191220/websocket-common-9.4.25.v20191220.pom", "hash": "sha256-ukxD7w1zKeye8StLaAa+D3rHPCQRm8vkvj1m7ebbmlQ=" } }, "org.eclipse.jetty.websocket:websocket-parent:9.4.25.v20191220": { "websocket-parent-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-parent/9.4.25.v20191220/websocket-parent-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-parent/9.4.25.v20191220/websocket-parent-9.4.25.v20191220.pom", "hash": "sha256-OJkMYyevE89u7BknNhRV3vr7uEvMR1bkBaPQVWD7Qzo=" } }, "org.eclipse.jetty.websocket:websocket-server:9.4.25.v20191220": { "websocket-server-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.jar", "hash": "sha256-PjO/DwuuXX+/Rx16JWroB4UCkGoxIaCgANkU39F21bo=" }, "websocket-server-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-server/9.4.25.v20191220/websocket-server-9.4.25.v20191220.pom", "hash": "sha256-o9WaXSoxrXskMRuXh2Eog5sNeO+oH4blG6yqelb5MKQ=" } }, "org.eclipse.jetty.websocket:websocket-servlet:9.4.25.v20191220": { "websocket-servlet-9.4.25.v20191220.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.jar", "hash": "sha256-nYoe6bmGzp/JJM3ai9fvzxwLZ0X3qWa1B8x3WU/vIms=" }, "websocket-servlet-9.4.25.v20191220.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/websocket/websocket-servlet/9.4.25.v20191220/websocket-servlet-9.4.25.v20191220.pom", "hash": "sha256-WgVNHE2/17gfAqoOIR+pm7ZHZEn6T48swQGjvPtT7wY=" } }, "org.jetbrains:annotations:23.0.0": { "annotations-23.0.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.jar", "hash": "sha256-ew8ZckCCy/y8ZuWr6iubySzwih6hHhkZM+1DgB6zzQU=" }, "annotations-23.0.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom", "hash": "sha256-yUkPZVEyMo3yz7z990P1P8ORbWwdEENxdabKbjpndxw=" } }, "org.jetbrains:annotations:13.0": { "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar", "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" }, "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom", "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, "org.jetbrains.exposed:exposed-core:0.50.1": { "exposed-core-0.50.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-core/0.50.1/exposed-core-0.50.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-core/0.50.1/exposed-core-0.50.1.jar", "hash": "sha256-7GxEwj+Da3NEFyI+Ky2jp/sdEypoEaTJM1AngEUXq8A=" }, "exposed-core-0.50.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-core/0.50.1/exposed-core-0.50.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-core/0.50.1/exposed-core-0.50.1.module", "hash": "sha256-9JeEbcyuFSWn/NRS2Ed//BxImFnJV6UwRISqjsFAumY=" }, "exposed-core-0.50.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-core/0.50.1/exposed-core-0.50.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-core/0.50.1/exposed-core-0.50.1.pom", "hash": "sha256-HW3Uxt2pYCn4HW+aYgGDO5Prl/kJXHN9iIQ0Tp4sfDE=" } }, "org.jetbrains.exposed:exposed-dao:0.50.1": { "exposed-dao-0.50.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-dao/0.50.1/exposed-dao-0.50.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-dao/0.50.1/exposed-dao-0.50.1.jar", "hash": "sha256-fpnRwIETZkjHT6QPdvilfqLPiFVogWDLOJU91WUxCXM=" }, "exposed-dao-0.50.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-dao/0.50.1/exposed-dao-0.50.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-dao/0.50.1/exposed-dao-0.50.1.module", "hash": "sha256-mOsYPcGblfmbuh9Zia1He8CSoxpFVzm9rUAHfIwoCjs=" }, "exposed-dao-0.50.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-dao/0.50.1/exposed-dao-0.50.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-dao/0.50.1/exposed-dao-0.50.1.pom", "hash": "sha256-w7hJrpLaTMlxL4N/3JzFtjOoJr4JCvDpdgFXPukuDy0=" } }, "org.jetbrains.exposed:exposed-jdbc:0.50.1": { "exposed-jdbc-0.50.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jdbc/0.50.1/exposed-jdbc-0.50.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jdbc/0.50.1/exposed-jdbc-0.50.1.jar", "hash": "sha256-P1awsJfx/rkzovIGo/Q4IiiibbWIa133ZU7Ww5pmDGI=" }, "exposed-jdbc-0.50.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jdbc/0.50.1/exposed-jdbc-0.50.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jdbc/0.50.1/exposed-jdbc-0.50.1.module", "hash": "sha256-68KP7F8KnI9XuuhbT4mQp9w4x5M1115sBMcUTSkvPns=" }, "exposed-jdbc-0.50.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jdbc/0.50.1/exposed-jdbc-0.50.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jdbc/0.50.1/exposed-jdbc-0.50.1.pom", "hash": "sha256-Y1Uw/BYvS7kRyknmrsteebD5gQ2iFhtcNGd+Aur8MUg=" } }, "org.jetbrains.exposed:exposed-jodatime:0.50.1": { "exposed-jodatime-0.50.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jodatime/0.50.1/exposed-jodatime-0.50.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jodatime/0.50.1/exposed-jodatime-0.50.1.jar", "hash": "sha256-5nun4F887ZbziMXBK+8JdfsOzPpaD8YLoFc3cdDyhOk=" }, "exposed-jodatime-0.50.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jodatime/0.50.1/exposed-jodatime-0.50.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jodatime/0.50.1/exposed-jodatime-0.50.1.module", "hash": "sha256-xSJ+g/T+u6Fu0JftbMrHWXN8sj1mPsUmgc0b7gh5dLk=" }, "exposed-jodatime-0.50.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jodatime/0.50.1/exposed-jodatime-0.50.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/exposed/exposed-jodatime/0.50.1/exposed-jodatime-0.50.1.pom", "hash": "sha256-+8jyAjnBFMoa9UG5semZ9yF6///YUxFzA1mA70lPpBg=" } }, "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" }, "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } }, "org.jetbrains.kotlin:kotlin-android-extensions:1.6.21": { "kotlin-android-extensions-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.jar", "hash": "sha256-QY25MO/hevs27AnooGI1615PYAsrXKFIeEIsn5lEbPs=" }, "kotlin-android-extensions-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.6.21/kotlin-android-extensions-1.6.21.pom", "hash": "sha256-oWU+E091vwu2aNklZdd/Qy3lGijcUcNK9eOBS53tCsQ=" } }, "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.6.21": { "kotlin-annotation-processing-gradle-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.jar", "hash": "sha256-tA86gSFVnlAjnFXvh2Z6IYBRG7GTQfzIYZh+T4TOYog=" }, "kotlin-annotation-processing-gradle-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.6.21/kotlin-annotation-processing-gradle-1.6.21.pom", "hash": "sha256-MImLOrD3X6VZjABz0qoqV9yctWnJ6Mb/O6UXUopMEHE=" } }, "org.jetbrains.kotlin:kotlin-build-common:1.6.21": { "kotlin-build-common-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.jar", "hash": "sha256-Y+6kBdNeNOggJcL0FW49R1fLjyWUmWIzVspma9IQAZ0=" }, "kotlin-build-common-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.6.21/kotlin-build-common-1.6.21.pom", "hash": "sha256-LRDfBINfB7h6qBoOf+xAbSwawRxU5+CPCOtRGv5btI8=" } }, "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.21": { "kotlin-compiler-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.jar", "hash": "sha256-X5ZQPNgiqmwg7abHFqVTxBTYAO0Mbn1lX6Gx+/1P7Cs=" }, "kotlin-compiler-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.21/kotlin-compiler-embeddable-1.6.21.pom", "hash": "sha256-wpULrWEPTie9iidbgcDoPIUfGD1gTuH7iRJV9DRa9EE=" } }, "org.jetbrains.kotlin:kotlin-compiler-runner:1.6.21": { "kotlin-compiler-runner-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.jar", "hash": "sha256-IGGw47e3Uwv2cg2LBBC+Eyb7Fs1NrcN+d8Aqz+/loLM=" }, "kotlin-compiler-runner-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.6.21/kotlin-compiler-runner-1.6.21.pom", "hash": "sha256-b0Ofb0jeG+QltfdQlLbqpICL6hG8LjzmtUTG4zOQtSU=" } }, "org.jetbrains.kotlin:kotlin-daemon-client:1.6.21": { "kotlin-daemon-client-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.jar", "hash": "sha256-ZHawBzZPVFzmd6ObkzG8IbVqvXtWbwOfUfIVCKOQL6c=" }, "kotlin-daemon-client-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.6.21/kotlin-daemon-client-1.6.21.pom", "hash": "sha256-Q8EnIKTydrNdwEOWEo6bf7Goq9B6FstAnGwNZwaiMWs=" } }, "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.6.21": { "kotlin-daemon-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.jar", "hash": "sha256-UcPsHDLDbWVw2DFC6v4qJCk08WXwt4w4YTdpBfkPLhI=" }, "kotlin-daemon-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.6.21/kotlin-daemon-embeddable-1.6.21.pom", "hash": "sha256-tFZZFoP6YHGHAFr0sx0x1DYE4CHWBFUf8PIubdpWK5o=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21": { "kotlin-gradle-plugin-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.jar", "hash": "sha256-Z1Oi4RJtP5k6lRryrcBrHsTKJxdulsj2Mnd5kBBNFa0=" }, "kotlin-gradle-plugin-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.6.21/kotlin-gradle-plugin-1.6.21.pom", "hash": "sha256-7RX0N/j1aW6NU7mszIYS6cas9Wfbau0E/ymq3F4DpC4=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.6.21": { "kotlin-gradle-plugin-api-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.jar", "hash": "sha256-x0wfF5FsrG1ygGJkmI0V4yGa8kYJB5E3Tq6cua8ufLM=" }, "kotlin-gradle-plugin-api-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.6.21/kotlin-gradle-plugin-api-1.6.21.pom", "hash": "sha256-JL0R1cjnNGMHSBUXnPuyYCAJIxyEE5aTr3ydVtzU3z8=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.6.21": { "kotlin-gradle-plugin-model-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.jar", "hash": "sha256-YFmxxhMI+4WaAedYsrj9Ctr/dBs9+AI1+t6VrWq4loc=" }, "kotlin-gradle-plugin-model-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.6.21/kotlin-gradle-plugin-model-1.6.21.pom", "hash": "sha256-QkLJzsOQLX21n4OMupPDDnMeC10yzDnQ5Ft1gKZUBOo=" } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.6.21": { "kotlin-klib-commonizer-api-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.jar", "hash": "sha256-0s9pUu7ziUqs+KnYzx6MZ78hW075AmioyQMYNFMKOHQ=" }, "kotlin-klib-commonizer-api-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.6.21/kotlin-klib-commonizer-api-1.6.21.pom", "hash": "sha256-FICJ7qPCUPClDqxomfFFq5D1mJM8GrT5qsldYXKHJfQ=" } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.21": { "kotlin-klib-commonizer-embeddable-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.jar", "hash": "sha256-1jgafq67fkj8p2v1u55fQ/pW3eb9UQXK6N4TXmMoD3A=" }, "kotlin-klib-commonizer-embeddable-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.6.21/kotlin-klib-commonizer-embeddable-1.6.21.pom", "hash": "sha256-bz7nSBQNsbaG5nqJehadbeQv1nQkHVVA3FK7o2Re/i4=" } }, "org.jetbrains.kotlin:kotlin-native-utils:1.6.21": { "kotlin-native-utils-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.jar", "hash": "sha256-a9hyJOVq4V/+IQTTx2M9cq9sezWCRa08SnbG1f0NNr8=" }, "kotlin-native-utils-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.6.21/kotlin-native-utils-1.6.21.pom", "hash": "sha256-92q9t+TzvxouyTxiqybO/lKg7UlBAY53w/74BrCXvq8=" } }, "org.jetbrains.kotlin:kotlin-project:1.0.3": { "kotlin-project-1.0.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-project/1.0.3/kotlin-project-1.0.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-project/1.0.3/kotlin-project-1.0.3.pom", "hash": "sha256-8lmQMqeX56sX1ozZOy4m0BOUxsYmeoow4v104d/lX7Q=" } }, "org.jetbrains.kotlin:kotlin-project-model:1.6.21": { "kotlin-project-model-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.jar", "hash": "sha256-FLaE+Kc+IpZ4ASS/OB3eAT9YLqIzZ6zgGEWAo4Sa6Ng=" }, "kotlin-project-model-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.6.21/kotlin-project-model-1.6.21.pom", "hash": "sha256-dgKHUWgMZJAf76wyN5AmtNC9I3rdfw873ujtXH51LG4=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.9.21": { "kotlin-reflect-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.21/kotlin-reflect-1.9.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.21/kotlin-reflect-1.9.21.jar", "hash": "sha256-oTPgSfCk4kllFYJCjhZt5N+slUat9Da2FyEZJV7eUQ8=" }, "kotlin-reflect-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.21/kotlin-reflect-1.9.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.21/kotlin-reflect-1.9.21.pom", "hash": "sha256-wu93WbdrxNn29SnS8/vBwxpFl8wVhuc6fXqxbRvbtKk=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.6.21": { "kotlin-reflect-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.jar", "hash": "sha256-Hh9XIJ9yOMP9FzWhuTOaVlZVB9yiSfg3G/WdkfYBrqo=" }, "kotlin-reflect-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.21/kotlin-reflect-1.6.21.pom", "hash": "sha256-2nHh493COI1nVkFnLi8DFtucnSEvlG8CbUoOahM2p/M=" } }, "org.jetbrains.kotlin:kotlin-runtime:1.0.3": { "kotlin-runtime-1.0.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.jar", "hash": "sha256-jBkPOBLPoR0I6wFBuMh36jJC8N3Q6r/llSV0Pq5ifo4=" }, "kotlin-runtime-1.0.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-runtime/1.0.3/kotlin-runtime-1.0.3.pom", "hash": "sha256-LaX+tSEGymCnZiDUaRgktUkbyi7ojMJVcwALCX3lRRc=" } }, "org.jetbrains.kotlin:kotlin-script-runtime:1.6.21": { "kotlin-script-runtime-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.jar", "hash": "sha256-YGw0p+bo5DnpIIdl59dbHbz4Dzg1Pz4puydFbXs3EXE=" }, "kotlin-script-runtime-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.6.21/kotlin-script-runtime-1.6.21.pom", "hash": "sha256-jVeQOOsdLK0DMFKOKdyMy4rozQ1WClRMXBswqT7O/t4=" } }, "org.jetbrains.kotlin:kotlin-scripting-common:1.6.21": { "kotlin-scripting-common-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.jar", "hash": "sha256-v79fA2I3zTPCX7oz1IlI2ZXbgYbOPwnDGvnCnIDOnK4=" }, "kotlin-scripting-common-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.21/kotlin-scripting-common-1.6.21.pom", "hash": "sha256-qgWvDyJWUokIeXiduzo6UY4XdWqFsT1UCo3P3wPL+5w=" } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.21": { "kotlin-scripting-compiler-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.jar", "hash": "sha256-XJNzrzrkC3PW12JLJOjOEXIUSV2GLebSz7YYpxGRBrE=" }, "kotlin-scripting-compiler-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.6.21/kotlin-scripting-compiler-embeddable-1.6.21.pom", "hash": "sha256-C32qtju7PFTd0+NF6wzLI3aAv9TDh7Zfzllt/0uEe9s=" } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.6.21": { "kotlin-scripting-compiler-impl-embeddable-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.jar", "hash": "sha256-5ARLjeAehGM5I3BvQ82oDTfYu++M6ahm+dlZYt3SBIA=" }, "kotlin-scripting-compiler-impl-embeddable-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.6.21/kotlin-scripting-compiler-impl-embeddable-1.6.21.pom", "hash": "sha256-gIxqOEi7Xk9sYWmKxYkxIVc8Q9s4FCNW6D3q0EyzhjQ=" } }, "org.jetbrains.kotlin:kotlin-scripting-jvm:1.6.21": { "kotlin-scripting-jvm-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.jar", "hash": "sha256-ksA/6r9L3ZLVoixRp0i9NAJ0Z8PY9MZftbV0uGsH0QQ=" }, "kotlin-scripting-jvm-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.6.21/kotlin-scripting-jvm-1.6.21.pom", "hash": "sha256-i5q1hXoYheSL2uAPqosix0sNPkCmNPyeCadG+op1fTI=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.9.21": { "kotlin-stdlib-1.9.21-all.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21-all.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21-all.jar", "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" }, "kotlin-stdlib-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.jar", "hash": "sha256-O0eTE6tsrqTl4l097oyoDDAsibpz4a9Nr6oQD275KWo=" }, "kotlin-stdlib-1.9.21.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.module", "hash": "sha256-0wGffw1xkkzkcpjJzEavAkX3UhlxmzXFkV+8x+emk5U=" }, "kotlin-stdlib-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.pom", "hash": "sha256-yAfZL3xqobZcBs+HIyNjUE5pD8o/PB4nIGYwoTIv1+A=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.6.21": { "kotlin-stdlib-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.jar", "hash": "sha256-c5xSZnK7M3Vzso9jr6gwbrCIsMOgln9W1sifSjASpJI=" }, "kotlin-stdlib-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.pom", "hash": "sha256-zkJyW6Ab2DbNqmZ9l032hL9vjxXng5JjMgraf/quHzQ=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.3.61": { "kotlin-stdlib-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom", "hash": "sha256-2+W6vNjUPpsIwoRWgLU/wbs+BRxIBYAt3Q7T6OLFCoQ=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.0.3": { "kotlin-stdlib-1.0.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.jar", "hash": "sha256-ZyHVKFgAZF7WgZP35t0H0srOCd6fO3XN8fMFD0Y1l4E=" }, "kotlin-stdlib-1.0.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.0.3/kotlin-stdlib-1.0.3.pom", "hash": "sha256-QK5yi+5hvXgSHcWjdko/vH1jRYaHuRmI2qXKMhFQNx0=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.21": { "kotlin-stdlib-common-1.9.21.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.21/kotlin-stdlib-common-1.9.21.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.21/kotlin-stdlib-common-1.9.21.module", "hash": "sha256-aNyOhKoF9SeMFlBSR9cTRtNRK57a3UH2E9ZXyUxZmTs=" }, "kotlin-stdlib-common-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.21/kotlin-stdlib-common-1.9.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.21/kotlin-stdlib-common-1.9.21.pom", "hash": "sha256-d4C4Z7/lc/y7D9H5Jx3aVAEhfG1or5OTV0zYYglX+K4=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21": { "kotlin-stdlib-common-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.jar", "hash": "sha256-GDvsWc2fOhSVexkOjIec8RlL0fEGsKe24cu4eQ0kI2M=" }, "kotlin-stdlib-common-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom", "hash": "sha256-W8FW7nP9PC2sil7FSNWBtjMzNUfC/r7Zz2VH//FSa6I=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61": { "kotlin-stdlib-common-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom", "hash": "sha256-4i2wCbsaYWNtlCVjWYlzbbXj/KSUgJq/JERo3EdM/AQ=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50": { "kotlin-stdlib-common-1.3.50.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom", "hash": "sha256-tjlv6ALXvHajgUheJmy5dfOy8tPdm/chOqtsonpWH8E=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0": { "kotlin-stdlib-jdk7-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.0/kotlin-stdlib-jdk7-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.0/kotlin-stdlib-jdk7-1.8.0.jar", "hash": "sha256-TIidHZgD9fLrbBWSprfmI2msdmDJ7uFauhb+wFkWNmY=" }, "kotlin-stdlib-jdk7-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.0/kotlin-stdlib-jdk7-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.0/kotlin-stdlib-jdk7-1.8.0.pom", "hash": "sha256-36lkSmrluJjuR1ux9X6DC6H3cK7mycFfgRKqOBGAGEo=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21": { "kotlin-stdlib-jdk7-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.jar", "hash": "sha256-8bBjTbuUFyA4RjAguy3UXKJoSfjOKdYlrLDxVp0R2+4=" }, "kotlin-stdlib-jdk7-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.21/kotlin-stdlib-jdk7-1.6.21.pom", "hash": "sha256-ARzSjruf3oFrA1nVrhCjZ07A/yxTEMBBLCDv6Oo9oG4=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61": { "kotlin-stdlib-jdk7-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar", "hash": "sha256-EfSlfj59gfPxUtXc7+Ob13YUtalBJf87EVJrChmsOYk=" }, "kotlin-stdlib-jdk7-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom", "hash": "sha256-xBYICuq9uRGKCO54wo4oVgOM2FhYQipx98Rr8nb2Z6c=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0": { "kotlin-stdlib-jdk8-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.0/kotlin-stdlib-jdk8-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.0/kotlin-stdlib-jdk8-1.8.0.jar", "hash": "sha256-BbYoBEQbDJoZILa31c9zKaTiS2JYR44ysfBGygGQCUY=" }, "kotlin-stdlib-jdk8-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.0/kotlin-stdlib-jdk8-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.0/kotlin-stdlib-jdk8-1.8.0.pom", "hash": "sha256-K7bHVRuXx7oCn5hmWC56oZ1jq/1M1T2j/AxGLzq1/CY=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21": { "kotlin-stdlib-jdk8-1.6.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.jar", "hash": "sha256-2rRUibR3NtWfzkS4BnbxlHqba8qxD9YOh4qDvYKmlUw=" }, "kotlin-stdlib-jdk8-1.6.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.21/kotlin-stdlib-jdk8-1.6.21.pom", "hash": "sha256-g2oReaCNJJFGl9JhLgO4SKCHyAy0sMoj+c+rJH86dcQ=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61": { "kotlin-stdlib-jdk8-1.3.61.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar", "hash": "sha256-ODm6fet5g3XaGAe8Rp0c8xXbemJ1WZ9zMYQ3R3LsOyE=" }, "kotlin-stdlib-jdk8-1.3.61.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom", "hash": "sha256-4wGH5XIMpkC45oaG8g3QJQ3O8Bk9VuVWnDxKYSdzErY=" } }, "org.jetbrains.kotlin:kotlin-tooling-metadata:1.6.21": { "kotlin-tooling-metadata-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.jar", "hash": "sha256-Tsk9BRYGawtki6mHxtPWX2+wZ9wLu6lcHs5h4EKEiOU=" }, "kotlin-tooling-metadata-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.21/kotlin-tooling-metadata-1.6.21.pom", "hash": "sha256-uwYH34aI9gLBwvTQmWMz/YsDtpMoaGpud15S9/sNFxg=" } }, "org.jetbrains.kotlin:kotlin-util-io:1.6.21": { "kotlin-util-io-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.jar", "hash": "sha256-wCxUcFYyGLcDvh5xbi0M6leH01y+tryUbfAMAM1CrNI=" }, "kotlin-util-io-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.6.21/kotlin-util-io-1.6.21.pom", "hash": "sha256-52nyybmRQIYlhKLAoRLIQ3P0fkryrxbQHOSThRMZMhk=" } }, "org.jetbrains.kotlin:kotlin-util-klib:1.6.21": { "kotlin-util-klib-1.6.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.jar", "hash": "sha256-7iGKnoGAwbNIwawc+K1xj2qseLp+JrUIEyNIT2Q8YbI=" }, "kotlin-util-klib-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.6.21/kotlin-util-klib-1.6.21.pom", "hash": "sha256-EsegqvZnLbHXgxxHGWV/+b9rEXGbD8h9iNcnXzl/lKs=" } }, "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.6.21": { "org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.6.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.6.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.6.21.pom", "hash": "sha256-hKJnm90W1DkKJmp58Gzaix+iq38XlowYk0l84ZWOHEQ=" } }, "org.jetbrains.kotlinx:atomicfu:0.23.1": { "atomicfu-0.23.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.jar", "hash": "sha256-fbhmDr5LkbtHjts2FsTjpQulnAfcpRfR4ShMA/6GrFc=" }, "atomicfu-0.23.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.module", "hash": "sha256-Pokf5ja1UQgZIQD884saObzRwlM+I8Ri/AdkTur8sg8=" }, "atomicfu-0.23.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.pom", "hash": "sha256-aIt5ABn0F87APmldZWexc7o7skGJVBZi8U/2ZEG1Pas=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0": { "kotlinx-coroutines-bom-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.0/kotlinx-coroutines-bom-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.0/kotlinx-coroutines-bom-1.8.0.pom", "hash": "sha256-Ejnp2+E5fNWXE0KVayURvDrOe2QYQuQ3KgiNz6i5rVU=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0": { "kotlinx-coroutines-core-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.jar", "hash": "sha256-IKpDS2qTDqZtLmGwDe764J/qPTL5ZA0uDCcTEogOCt0=" }, "kotlinx-coroutines-core-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.module", "hash": "sha256-FE7s1TZd4+MNe0YibAWAUeOZVbXBieMfpMfP+5nWILo=" }, "kotlinx-coroutines-core-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.pom", "hash": "sha256-yglaS/iLR0+trOgzLBCXC3nLgBu/XfBHo5Ov4Ql28yE=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3": { "kotlinx-coroutines-core-1.3.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom", "hash": "sha256-KZmeUobJiKm3K3xt/rmE2fohxRcY9bb5P1Yh5wClN/4=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.0": { "kotlinx-coroutines-core-common-1.3.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.jar", "hash": "sha256-Evof8J9dtFxlGJKP9HmjZPOqEXSRW6JgWkIF7GCwGMM=" }, "kotlinx-coroutines-core-common-1.3.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.3.0/kotlinx-coroutines-core-common-1.3.0.pom", "hash": "sha256-V2kqeg3vYTmMQz4s87C0p0l4ZpQuBLFFshG1t57CoYM=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0": { "kotlinx-coroutines-core-jvm-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.jar", "hash": "sha256-mGCQahk3SQv187BtLw4Q70UeZblbJp8i2vaKPR9QZcU=" }, "kotlinx-coroutines-core-jvm-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.module", "hash": "sha256-/2oi2kAECTh1HbCuIRd+dlF9vxJqdnlvVCZye/dsEig=" }, "kotlinx-coroutines-core-jvm-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.pom", "hash": "sha256-pWM6vVNGfOuRYi2B8umCCAh3FF4LduG3V4hxVDSIXQs=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" }, "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" }, "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } }, "org.junit.platform:junit-platform-commons:1.5.2": { "junit-platform-commons-1.5.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.jar", "hash": "sha256-/ESv38DyDIXnGmbnlDKBrvO8Hg/WLS1po2y2kB5oLBA=" }, "junit-platform-commons-1.5.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.pom", "hash": "sha256-O9DU3tYyqK+MpYf7Z2QBnedxsda8uJrNViQ1oQCfqto=" } }, "org.junit.platform:junit-platform-engine:1.5.2": { "junit-platform-engine-1.5.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.jar", "hash": "sha256-/yC6StjADvF7rvnFVRL5wC2aaHQPfxrAGppqoCOZMfg=" }, "junit-platform-engine-1.5.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.pom", "hash": "sha256-LUuVVVwh4IXrwd299C156x1VZA3Bk7G35hACQP0vGJ8=" } }, "org.opentest4j:opentest4j:1.2.0": { "opentest4j-1.2.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar", "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" }, "opentest4j-1.2.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom", "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" } }, "org.postgresql:pgjdbc-core-parent:1.1.3": { "pgjdbc-core-parent-1.1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/postgresql/pgjdbc-core-parent/1.1.3/pgjdbc-core-parent-1.1.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/postgresql/pgjdbc-core-parent/1.1.3/pgjdbc-core-parent-1.1.3.pom", "hash": "sha256-n7TAlyDu+QAZ0Oqs7KQ3bF8P7XTmOTGxx+RGA/r6orQ=" } }, "org.postgresql:pgjdbc-versions:1.1.3": { "pgjdbc-versions-1.1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/postgresql/pgjdbc-versions/1.1.3/pgjdbc-versions-1.1.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/postgresql/pgjdbc-versions/1.1.3/pgjdbc-versions-1.1.3.pom", "hash": "sha256-6MhIqzxkHBSbTVUp5zVMta7Tn6YFASA03n2uUXQqSQg=" } }, "org.postgresql:postgresql:42.2.2": { "postgresql-42.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.jar", "hash": "sha256-GZZSQCajAnhT85MuhjnvgTgH0bY/4Ugy9BD/+kJ0+nA=" }, "postgresql-42.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.pom", "hash": "sha256-NbNCwrBu1Cf6VP/xw3GNQ2HvrcNC7DJM7DnBeKm481Y=" } }, "org.slf4j:slf4j-api:2.0.9": { "slf4j-api-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar", "hash": "sha256-CBiTDcjX3rtAMgRhFpHaWOSdQsULb/z9zgLa23w8K2w=" }, "slf4j-api-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.pom", "hash": "sha256-nDplT50KoaNLMXjr5TqJx2eS4dgfwelznL6bFhBSM4U=" } }, "org.slf4j:slf4j-bom:2.0.9": { "slf4j-bom-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-bom/2.0.9/slf4j-bom-2.0.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-bom/2.0.9/slf4j-bom-2.0.9.pom", "hash": "sha256-6u9FhIB9gSxqC2z4OdXkf1DHVDJ3GbnOCB4nHRXaYkM=" } }, "org.slf4j:slf4j-parent:2.0.9": { "slf4j-parent-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.9/slf4j-parent-2.0.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.9/slf4j-parent-2.0.9.pom", "hash": "sha256-wwfwQkFB8cUArlzw04aOSGbLIZ7V45m2bFoHxh6iH9U=" } }, "org.slf4j:slf4j-parent:1.8.0-beta4": { "slf4j-parent-1.8.0-beta4.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.8.0-beta4/slf4j-parent-1.8.0-beta4.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.8.0-beta4/slf4j-parent-1.8.0-beta4.pom", "hash": "sha256-uvujCoPVOpRVAZZEdWKqjNrRRWFcKJMsaku0QcNVMQE=" } }, "org.slf4j:slf4j-simple:1.8.0-beta4": { "slf4j-simple-1.8.0-beta4.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.jar", "hash": "sha256-usZqvFtEYt/2Lh4ZqzsKZcFg681WTPJZENsAOo5WnP0=" }, "slf4j-simple-1.8.0-beta4.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.8.0-beta4/slf4j-simple-1.8.0-beta4.pom", "hash": "sha256-oXrS6OU00OgZ6o0UIT3nSNRlD/8qJX0+kqE9oxAoe/c=" } }, "org.sonatype.oss:oss-parent:9": { "oss-parent-9.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom", - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom" - ], + "url": "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom", "hash": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno=" } }, "org.sonatype.oss:oss-parent:7": { "oss-parent-7.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], + "url": "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } }, "org.spekframework.spek2:spek-dsl-jvm:2.0.9": { "spek-dsl-jvm-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.jar", "hash": "sha256-gohf+MCcJfvntBQS/IoIyCAn8kuE6gH3ZL5jm8CYGeg=" }, "spek-dsl-jvm-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-dsl-jvm/2.0.9/spek-dsl-jvm-2.0.9.pom", "hash": "sha256-q3b2C4rYViJC615qA1SLpiL6xHDFpE6pzckZ34VzgQQ=" } }, "org.spekframework.spek2:spek-runner-junit5:2.0.9": { "spek-runner-junit5-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.jar", "hash": "sha256-K0ZmWbdh12OKtc2CX8yC3CrA1FPJ6yAKGUAHG4KkpYY=" }, "spek-runner-junit5-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runner-junit5/2.0.9/spek-runner-junit5-2.0.9.pom", "hash": "sha256-7GcxgitATmAvUWoOpzJFBWgHoMWg2Kb4SkTjqnfrSjg=" } }, "org.spekframework.spek2:spek-runtime-jvm:2.0.9": { "spek-runtime-jvm-2.0.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.jar", "hash": "sha256-dZ18fuF78XJYwySioaGwhusrz2QnnBfh+av1Xsph+nQ=" }, "spek-runtime-jvm-2.0.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/spekframework/spek2/spek-runtime-jvm/2.0.9/spek-runtime-jvm-2.0.9.pom", "hash": "sha256-9o3lUgIMgh6TRueEI5uGtT5rR1+2DQRoWsdGILeiKeU=" } }, "org.xerial:sqlite-jdbc:3.30.1": { "sqlite-jdbc-3.30.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.jar", "hash": "sha256-KAA0qJkwABBMWza8XhE5sOgt8d6c/ZUfUpva3q9vRW0=" }, "sqlite-jdbc-3.30.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.pom", "hash": "sha256-eGpZKh7AtwPJJVOlE37gAxGb5UmlGTM05t44WrKGb3I=" } } diff --git a/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json b/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json index a62ed46..7ba2d43 100644 --- a/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json +++ b/fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json @@ -1,665 +1,473 @@ { "com.gradle.publish:plugin-publish-plugin:1.2.1": { "plugin-publish-plugin-1.2.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" - ], + "url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar", "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" }, "plugin-publish-plugin-1.2.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" - ], + "url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module", "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" }, "plugin-publish-plugin-1.2.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom" - ], + "url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom", "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" } }, "org.apache:apache:21": { "apache-21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom", "hash": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A=" } }, "org.apache.maven:maven:3.6.3": { "maven-3.6.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven/3.6.3/maven-3.6.3.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/maven/maven/3.6.3/maven-3.6.3.pom", "hash": "sha256-0thiRepmFJvBTS3XK7uWH5ZN1li4CaBXMlLAZTHu7BY=" } }, "org.apache.maven:maven-model:3.6.3": { "maven-model-3.6.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" - ], + "url": "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar", "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" }, "maven-model-3.6.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom", "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" } }, "org.apache.maven:maven-parent:33": { "maven-parent-33.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-parent/33/maven-parent-33.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/maven/maven-parent/33/maven-parent-33.pom", "hash": "sha256-OFbj/NFpUC1fEv4kUmBOv2x8Al8VZWv6VY6pntKdc+o=" } }, "org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.3.0": { "gradle-kotlin-dsl-plugins-4.3.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.jar" - ], + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.jar", "hash": "sha256-+IsyeBRxXRfiD4to/wCbmrGo+8GjyRLDO4TfucEVn78=" }, "gradle-kotlin-dsl-plugins-4.3.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.module" - ], + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.module", "hash": "sha256-wDF/LfYjmTSfi1NHpsZme9yjHMt1meBsKG/IOPxM7c0=" }, "gradle-kotlin-dsl-plugins-4.3.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.pom", "hash": "sha256-d1G9LyTDRdGbRhGy5+1NZfT1YIA2iuNqpyT5X63VbDw=" } }, "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.3.0": { "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.3.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.3.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom", "hash": "sha256-hgR9KoSpaXsVkXDj1rLL9Cpv5UCQTYdZzJ8JUsmUnXw=" } }, "org.jetbrains:annotations:13.0": { "annotations-13.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar", "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" }, "annotations-13.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom", "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" }, "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } }, "org.jetbrains.kotlin:kotlin-android-extensions:1.9.22": { "kotlin-android-extensions-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar", "hash": "sha256-Hl6IFkKpnduPbRPmmVoIwZK8OEGHOWZj2ER8CB2H4k8=" }, "kotlin-android-extensions-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom", "hash": "sha256-lEt8+zPgpvtoRVkEjwKMuWMmyTKiRdXLAhQ7zSwDEVk=" } }, "org.jetbrains.kotlin:kotlin-assignment:1.9.22": { "kotlin-assignment-1.9.22-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22-gradle82.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22-gradle82.jar", "hash": "sha256-SbgHX6DiGLoRuhim9yUE38XwOZQovs8Ta9yHHceBgMU=" }, "kotlin-assignment-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22.module", "hash": "sha256-bxIe+E4ozzMG/eTDHVXC2D14RPJLDnslZfh7Apn7sx0=" }, "kotlin-assignment-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22.pom", "hash": "sha256-9kQYoM3bm9hQ96/CasjyPon7ptlgSNqnNZVWJ5AgbwA=" } }, "org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22": { "kotlin-assignment-compiler-plugin-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.22/kotlin-assignment-compiler-plugin-embeddable-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.22/kotlin-assignment-compiler-plugin-embeddable-1.9.22.jar", "hash": "sha256-KmHdIZ/tvlMYo7HiPA9zm0XtG1sksLZzdRm3hF6Alfg=" }, "kotlin-assignment-compiler-plugin-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.22/kotlin-assignment-compiler-plugin-embeddable-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.22/kotlin-assignment-compiler-plugin-embeddable-1.9.22.pom", "hash": "sha256-nbJr6D8/Y8Uf972pHjpqQNTDTaAj5ilsAQW7SqZvzJI=" } }, "org.jetbrains.kotlin:kotlin-build-common:1.9.22": { "kotlin-build-common-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar", "hash": "sha256-U8PcxTA/WQPmJgrqc+zMaTD5o276KhHNO9On5V32OWY=" }, "kotlin-build-common-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom", "hash": "sha256-KXxfSYoHdIPvic06cQzSt/LlrjgPOjrt+5xBvGI7E0A=" } }, "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22": { "kotlin-build-tools-api-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar", "hash": "sha256-3UnLfij08zgvUlDPsFyGT9XwqW0yZbspPHezCtzJP/Y=" }, "kotlin-build-tools-api-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom", "hash": "sha256-DFZLu4fcXs32Q005buob886Xar8IgYCN0Wb6SbBGSfs=" } }, "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22": { "kotlin-build-tools-impl-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar", "hash": "sha256-G0jW3gQqUl9jtVdROuEmbWmTSCJbAT+UDjLGPeJolCg=" }, "kotlin-build-tools-impl-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom", "hash": "sha256-tWM/E0m+lcdHRuHimiqm51LoneGrmmUjSS85j6aVWN0=" } }, "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22": { "kotlin-compiler-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar", "hash": "sha256-K/6t7lmrGYjDNtvW5l2ZH3Zq4d2Gg/Km3tX6oCefDKA=" }, "kotlin-compiler-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom", "hash": "sha256-s9o0u29ClqzzoPRDRm8FBsbJnaXNliTW4LdFsiKHhOs=" } }, "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22": { "kotlin-compiler-runner-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar", "hash": "sha256-c+x1u5nr/6iySiSjuFPz9mCWvEapNRrw2sk967acFes=" }, "kotlin-compiler-runner-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom", "hash": "sha256-pO6KZ8HW8lODjAAnKAvLgFCsDc3MrZdIlhOKaaAX6wE=" } }, "org.jetbrains.kotlin:kotlin-daemon-client:1.9.22": { "kotlin-daemon-client-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar", "hash": "sha256-XXPhgVsRZ+Sv4gjwCyp1wIC8WoEHhsqtuOFHh1k6k7k=" }, "kotlin-daemon-client-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom", "hash": "sha256-YsRKZZ2lXbb7El4pKbmNUEow4fSvgU4I5JIUJqpST4o=" } }, "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22": { "kotlin-daemon-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar", "hash": "sha256-kqV4ExcUR9U0Rh+hP+N9yM07f4bYPpsfe7GwvjBUH4s=" }, "kotlin-daemon-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom", "hash": "sha256-9uo9z2v7Og0GmER8SKa88I2Oqs+D/JX+nUGBpeXjwrE=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22": { "kotlin-gradle-plugin-1.9.22-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar", "hash": "sha256-1OcY3V8wxrqTLZPM/FswFendPkQUOgUrh3Ao8frlQtw=" }, "kotlin-gradle-plugin-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module", "hash": "sha256-pPRqwMq9jVzbaJ0tN9GdWFhPcIv59k/+TpgKL/dTS7U=" }, "kotlin-gradle-plugin-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom", "hash": "sha256-A3750tSupA9JKdglE1g+STwOBRVuDaix1/Ujurhobyc=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22": { "kotlin-gradle-plugin-annotations-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar", "hash": "sha256-lnaDy5jZkQFFYH+/W0VilbQ/Cq+Tsbunv2mS5zHLJOw=" }, "kotlin-gradle-plugin-annotations-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom", "hash": "sha256-Y7por+B4/3D3CPnpecaTxFv+iQQfeWQbC4H2tKEm7rs=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22": { "kotlin-gradle-plugin-api-1.9.22-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar", "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" }, "kotlin-gradle-plugin-api-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar", "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" }, "kotlin-gradle-plugin-api-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module", "hash": "sha256-H0SJxTBPmlEqVof/zAqvCTCvydcgUdOpBfrAcANi+3s=" }, "kotlin-gradle-plugin-api-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom", "hash": "sha256-ZAFewaGutVCqGCjCQuIoODDFD2g2TkCDH+FYj9wEEfU=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22": { "kotlin-gradle-plugin-idea-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar", "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" }, "kotlin-gradle-plugin-idea-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module", "hash": "sha256-z+LCbjMPaAMsAD+lJMAx5aYPzo2Jn/8uQjFBKL60QCs=" }, "kotlin-gradle-plugin-idea-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom", "hash": "sha256-3BSjKHVDun5QRs1OCVAtJ4hMqYfshwb1+xid54luOsw=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22": { "kotlin-gradle-plugin-idea-proto-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar", "hash": "sha256-9dgu5hlmotmK364Z8k1hcwIsFUBIls3yNjQANe5owPU=" }, "kotlin-gradle-plugin-idea-proto-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom", "hash": "sha256-huMsqCkn2ogKHPNDpA7MIJgHXm/XInOzTVDfpUTzRjs=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22": { "kotlin-gradle-plugin-model-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar", "hash": "sha256-UQj61b4UmCXs46ABA8PCHPGv6VS7ZLhweJVyk511OMs=" }, "kotlin-gradle-plugin-model-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module", "hash": "sha256-L/MBPfK6epteiwBOhIF1DI0PqVOtAHoZbYXSY2cdvq4=" }, "kotlin-gradle-plugin-model-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom", "hash": "sha256-gfUmlHml2X7oeSpITIMr495DgggSZxlhUAHKyI5C9qg=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22": { "kotlin-gradle-plugins-bom-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module", "hash": "sha256-Qj401h0iCxoN3BgUCGqM6rTa2ed5ArDOjLRyG789xu0=" }, "kotlin-gradle-plugins-bom-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom", "hash": "sha256-da2/XHjOJHwiuvNijQs/8c9+19N9YB66cwTXerdb3Z8=" } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22": { "kotlin-klib-commonizer-api-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar", "hash": "sha256-jC9lQpwYLi5KLgnLkQ5iuW227tKFWUuPga+CO35ZROI=" }, "kotlin-klib-commonizer-api-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom", "hash": "sha256-EMrJcNMAo0icM/CzBBVv8DLZWVm+WqrDuIAoKtWGIv4=" } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22": { "kotlin-klib-commonizer-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar", "hash": "sha256-c/50PnTSEoPTg9C6voX9CMRCr8GnvYgIL42gUQ0FPUs=" }, "kotlin-klib-commonizer-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom", "hash": "sha256-dxghItppe2YqSRPX3Z/mu68ATOhH/YZ9oj6v8MTIJEs=" } }, "org.jetbrains.kotlin:kotlin-native-utils:1.9.22": { "kotlin-native-utils-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar", "hash": "sha256-eGwSfdVTXbLDmuWXzQsMrZ6RS4PiNvHbAlEjXMnGUqw=" }, "kotlin-native-utils-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom", "hash": "sha256-EcUUwF7qOuno4Wq0l5bxEd9DxzSCMeNfr0xCjMT3Q+o=" } }, "org.jetbrains.kotlin:kotlin-project-model:1.9.22": { "kotlin-project-model-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar", "hash": "sha256-zBHVwLGQnFsKCP0l7w51T/0r9Wyu9mX7eFEiI15UKhg=" }, "kotlin-project-model-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom", "hash": "sha256-659KFngb/ADM7IAw++XuIo5vKydxxQwmezIY/rAGW0A=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.9.22": { "kotlin-reflect-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar", "hash": "sha256-d/MRyhOEgR1Rn9o4n8sSaL2qBY1gUEbg7edsA7DfPpc=" }, "kotlin-reflect-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom", "hash": "sha256-xxLjWN97kxi2j1RjlxsIhnODf8DKQoXRw4LIEC7da18=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.6.10": { "kotlin-reflect-1.6.10.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar", "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" }, "kotlin-reflect-1.6.10.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom", "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" } }, "org.jetbrains.kotlin:kotlin-sam-with-receiver:1.9.22": { "kotlin-sam-with-receiver-1.9.22-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22-gradle82.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22-gradle82.jar", "hash": "sha256-cvvN3L25ZaQ9uWfLKjGaXXp3NttQrCA8lrmatVc5wkE=" }, "kotlin-sam-with-receiver-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22.module", "hash": "sha256-7rpm+YBjiXkSCkm5/aW4YeEHLWCQIzi1NyYH8kljDC0=" }, "kotlin-sam-with-receiver-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22.pom", "hash": "sha256-AD+clOG/rX8ZDm70F+kTOhCjH3hRMBPlkHS2DzZZLCY=" } }, "org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22": { "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.22/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.22/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.jar", "hash": "sha256-jqUUoRQABsxXoHMVsVoTaI7W/qFwfzrJjpzoCVu2z38=" }, "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.22/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.22/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.pom", "hash": "sha256-MM9L0JPCbn/Ryt/F1Qop5q60WXUSeia84rEJUfJPgqo=" } }, "org.jetbrains.kotlin:kotlin-script-runtime:1.9.22": { "kotlin-script-runtime-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar", "hash": "sha256-uAZwV59/ktRz2NWDTwsST3dVxFmP6UskQYOwKDSDRXQ=" }, "kotlin-script-runtime-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom", "hash": "sha256-/ra0ns9pEG1MEoXnH5ob2noSfO9oMC4+n9yCmKTjR5U=" } }, "org.jetbrains.kotlin:kotlin-scripting-common:1.9.22": { "kotlin-scripting-common-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar", "hash": "sha256-+lAMvwNJQ++BJvPT3GWvCf+Z3//kTFCZtPwu1b8vXcc=" }, "kotlin-scripting-common-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom", "hash": "sha256-ROURI7DCfm/ZM/wma00Nrw8GhKYq7Z/mhC6Noz8qKz8=" } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22": { "kotlin-scripting-compiler-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar", "hash": "sha256-Ij/shIMCNEmc1MeiPqHJLroSfEGzXZux1LYdJBVa6zU=" }, "kotlin-scripting-compiler-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom", "hash": "sha256-wWCPP7yyqfdSPq0zWZwurc5MgSFhqeBmufSwBa97Qxw=" } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22": { "kotlin-scripting-compiler-impl-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar", "hash": "sha256-OJkYFqKH/3YkHxp35/ERZIHU6To9tjJZplfd4g5tD2U=" }, "kotlin-scripting-compiler-impl-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom", "hash": "sha256-gmccM6lXsuKoINZqaSwvzmPjvwR/HLJeb7A5HF3c8uc=" } }, "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22": { "kotlin-scripting-jvm-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar", "hash": "sha256-jRJ9dvz6BRfDbB6g4ijs4D1aRoJkKgH2R5prvccxKik=" }, "kotlin-scripting-jvm-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom", "hash": "sha256-cBJS6huo/4f8M0dqYePVxtnS3aQbqpiZTdaYDuE/vG0=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.9.22": { "kotlin-stdlib-1.9.22-all.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar", "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" }, "kotlin-stdlib-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar", "hash": "sha256-ar4UbCeGQTi4dMzM/l9TTj65I8maG3tdRUlO5WlPPgo=" }, "kotlin-stdlib-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module", "hash": "sha256-9IIxS1B5wUVfb7DUJXp0XRAcYSTOlhUiuob53JCQHkc=" }, "kotlin-stdlib-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom", "hash": "sha256-zOLxUoXsgHijd0a1cwigVAQt1cwlQgxD9zt4V8JGjwM=" } }, "org.jetbrains.kotlin:kotlin-tooling-core:1.9.22": { "kotlin-tooling-core-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar", "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" }, "kotlin-tooling-core-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom", "hash": "sha256-FPx/NcY15fzRvqU3q0+kQxLoQyUtUzNRnjaxJeoImyE=" } }, "org.jetbrains.kotlin:kotlin-util-io:1.9.22": { "kotlin-util-io-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar", "hash": "sha256-9telhJGjeLCDrRvq1IikheEdFgsx52wYwa1SDx0o9Gs=" }, "kotlin-util-io-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom", "hash": "sha256-ZP1qINbsBAE7ttdWJ/ZYC7c2QdlIkJ1cFmTi53MQbe4=" } }, "org.jetbrains.kotlin:kotlin-util-klib:1.9.22": { "kotlin-util-klib-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar", "hash": "sha256-pnnuL1EPOrkmkYGN5etbCQLobYjJdnTn20TcTyJSxfk=" }, "kotlin-util-klib-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom", "hash": "sha256-Dep9//Cit0CIrJlwQ8vCQINdK/9Zs5/MiwysbqPrNpc=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" }, "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" }, "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } } diff --git a/fixtures/golden/dependency/classifier.groovy.json b/fixtures/golden/dependency/classifier.groovy.json index 2b7caa5..49527ae 100644 --- a/fixtures/golden/dependency/classifier.groovy.json +++ b/fixtures/golden/dependency/classifier.groovy.json @@ -1,31 +1,23 @@ { "com.badlogicgames.gdx:gdx-parent:1.9.9": { "gdx-parent-1.9.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-parent/1.9.9/gdx-parent-1.9.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-parent/1.9.9/gdx-parent-1.9.9.pom", "hash": "sha256-JSpktycxGU+lvD37inPSXOa3NXxQLQ+y9W5rTiqaeJM=" } }, "com.badlogicgames.gdx:gdx-platform:1.9.9": { "gdx-platform-1.9.9-natives-desktop.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar", "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" }, "gdx-platform-1.9.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom", "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" } }, "org.sonatype.oss:oss-parent:5": { "oss-parent-5.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom", "hash": "sha256-FnjUEgpYXYpjATGu7ExSTZKDmFg7fqthbufVqH9SDT0=" } } diff --git a/fixtures/golden/dependency/classifier.kotlin.json b/fixtures/golden/dependency/classifier.kotlin.json index 2b7caa5..49527ae 100644 --- a/fixtures/golden/dependency/classifier.kotlin.json +++ b/fixtures/golden/dependency/classifier.kotlin.json @@ -1,31 +1,23 @@ { "com.badlogicgames.gdx:gdx-parent:1.9.9": { "gdx-parent-1.9.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-parent/1.9.9/gdx-parent-1.9.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-parent/1.9.9/gdx-parent-1.9.9.pom", "hash": "sha256-JSpktycxGU+lvD37inPSXOa3NXxQLQ+y9W5rTiqaeJM=" } }, "com.badlogicgames.gdx:gdx-platform:1.9.9": { "gdx-platform-1.9.9-natives-desktop.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar", "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" }, "gdx-platform-1.9.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom", "hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" } }, "org.sonatype.oss:oss-parent:5": { "oss-parent-5.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom", "hash": "sha256-FnjUEgpYXYpjATGu7ExSTZKDmFg7fqthbufVqH9SDT0=" } } diff --git a/fixtures/golden/dependency/maven-bom.kotlin.json b/fixtures/golden/dependency/maven-bom.kotlin.json index 6ebd332..ab121bf 100644 --- a/fixtures/golden/dependency/maven-bom.kotlin.json +++ b/fixtures/golden/dependency/maven-bom.kotlin.json @@ -1,59 +1,43 @@ { "io.micrometer:micrometer-bom:1.5.1": { "micrometer-bom-1.5.1.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom" - ], + "url": "http://0.0.0.0:8989/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom", "hash": "sha256-K/qF6ds8ck5sWvelJBYk+w+K04oQpT/4BtY57WVLRUI=" } }, "io.micrometer:micrometer-core:1.5.1": { "micrometer-core-1.5.1.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar" - ], + "url": "http://0.0.0.0:8989/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar", "hash": "sha256-DtgVYBDVGDBWMwSfeKC6O+fwqd+N2q4eTizJgQ1wfI8=" }, "micrometer-core-1.5.1.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom" - ], + "url": "http://0.0.0.0:8989/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom", "hash": "sha256-Cb4KaUHaOvdOz7VpDax6kJKuT2KWY5Ci73foX2xl6xw=" } }, "org.hdrhistogram:HdrHistogram:2.1.12": { "HdrHistogram-2.1.12.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar" - ], + "url": "http://0.0.0.0:8989/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar", "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" }, "HdrHistogram-2.1.12.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom" - ], + "url": "http://0.0.0.0:8989/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom", "hash": "sha256-f7PnkMFU0bXiMXC7jL9/cO8ICa8XIp8dywENd5llEIA=" } }, "org.latencyutils:LatencyUtils:2.0.3": { "LatencyUtils-2.0.3.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.jar" - ], + "url": "http://0.0.0.0:8989/m2/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.jar", "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" }, "LatencyUtils-2.0.3.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.pom" - ], + "url": "http://0.0.0.0:8989/m2/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.pom", "hash": "sha256-jwwBU3kLhK9sCTFtVpvRBu4PAIuTk+gLpHj1v2Vziig=" } }, "org.sonatype.oss:oss-parent:7": { "oss-parent-7.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], + "url": "http://0.0.0.0:8989/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } } diff --git a/fixtures/golden/dependency/snapshot-dynamic.groovy.json b/fixtures/golden/dependency/snapshot-dynamic.groovy.json index eaaa8f7..e5fe3b4 100644 --- a/fixtures/golden/dependency/snapshot-dynamic.groovy.json +++ b/fixtures/golden/dependency/snapshot-dynamic.groovy.json @@ -1,17 +1,11 @@ { - "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": { - "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar" - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - } - }, "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT": { - "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.pom" - ], + "test-SNAPSHOT1-2.0.2-SNAPSHOT.jar": { + "url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar", + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT1-2.0.2-SNAPSHOT.pom": { + "url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.pom", "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" } } diff --git a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json index eaaa8f7..e5fe3b4 100644 --- a/fixtures/golden/dependency/snapshot-dynamic.kotlin.json +++ b/fixtures/golden/dependency/snapshot-dynamic.kotlin.json @@ -1,17 +1,11 @@ { - "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": { - "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar" - ], - "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" - } - }, "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT": { - "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.pom" - ], + "test-SNAPSHOT1-2.0.2-SNAPSHOT.jar": { + "url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar", + "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" + }, + "test-SNAPSHOT1-2.0.2-SNAPSHOT.pom": { + "url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.pom", "hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" } } diff --git a/fixtures/golden/dependency/snapshot-redirect.groovy.json b/fixtures/golden/dependency/snapshot-redirect.groovy.json index 48f5de8..86b3e3e 100644 --- a/fixtures/golden/dependency/snapshot-redirect.groovy.json +++ b/fixtures/golden/dependency/snapshot-redirect.groovy.json @@ -1,117 +1,79 @@ { "com.eclipsesource.minimal-json:minimal-json:0.9.1": { "minimal-json-0.9.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/eclipsesource/minimal-json/minimal-json/0.9.1/minimal-json-0.9.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/eclipsesource/minimal-json/minimal-json/0.9.1/minimal-json-0.9.1.jar", "hash": "sha256-pvRb7vRcTbyODylD0CuzTZ2btyDUoX1NwfChHNHvWFg=" }, "minimal-json-0.9.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/eclipsesource/minimal-json/minimal-json/0.9.1/minimal-json-0.9.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/eclipsesource/minimal-json/minimal-json/0.9.1/minimal-json-0.9.1.pom", "hash": "sha256-Xb0I7Og8f0XxOeis+0S+gUv4NugvuGAEdvwMuR2awUM=" } }, - "com.github.anuken:packr:-SNAPSHOT:packr-1.2-g034efe5-114": { - "packr--packr-1.2-g034efe5-114.jar": { - "urls": [ - "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.jar" - ], - "hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" - } - }, "com.github.anuken:packr:-SNAPSHOT": { - "packr--SNAPSHOT.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.pom" - ], - "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" + "packr--SNAPSHOT.jar": { + "url": "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.jar", + "hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" }, - "packr--packr-1.2-g034efe5-114.pom": { - "urls": [ - "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.pom" - ], + "packr--SNAPSHOT.pom": { + "url": "https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.pom", "hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" } }, "com.lexicalscope.jewelcli:jewelcli:0.8.9": { "jewelcli-0.8.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli/0.8.9/jewelcli-0.8.9.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli/0.8.9/jewelcli-0.8.9.jar", "hash": "sha256-edo0/mgFGCboBtIUgBL7NIHJ5pc4ipG9RMwl1piBAvM=" }, "jewelcli-0.8.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli/0.8.9/jewelcli-0.8.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli/0.8.9/jewelcli-0.8.9.pom", "hash": "sha256-eTF2d4p/6F9cw1QWZQhjpG1Es5CJKI1+DkiheuCZHMQ=" } }, "com.lexicalscope.jewelcli:jewelcli-parent:0.8.9": { "jewelcli-parent-0.8.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli-parent/0.8.9/jewelcli-parent-0.8.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli-parent/0.8.9/jewelcli-parent-0.8.9.pom", "hash": "sha256-+K7AtECUZHhdpChr8qutNwSH30dSEVRwb+728brQ9Is=" } }, "org.slf4j:slf4j-api:1.6.6": { "slf4j-api-1.6.6.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.6.6/slf4j-api-1.6.6.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.6.6/slf4j-api-1.6.6.jar", "hash": "sha256-Q0VrLuMVKanFEtWB5T4oXGX+3ewgSiwUaUXgMrB4ELo=" }, "slf4j-api-1.6.6.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.6.6/slf4j-api-1.6.6.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.6.6/slf4j-api-1.6.6.pom", "hash": "sha256-cxmZMiteIokinNntRiTJQexXG3xh0qJ9alB+9zuXyho=" } }, "org.slf4j:slf4j-parent:1.6.6": { "slf4j-parent-1.6.6.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.6.6/slf4j-parent-1.6.6.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.6.6/slf4j-parent-1.6.6.pom", "hash": "sha256-QrjCR2CP2OENW2Zs98gKW1nSseEoRQ97bZ0sIM+2sxs=" } }, "org.slf4j:slf4j-simple:1.6.6": { "slf4j-simple-1.6.6.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.6.6/slf4j-simple-1.6.6.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.6.6/slf4j-simple-1.6.6.jar", "hash": "sha256-Xpfxe7h5v9RDOlHGnjyS/iIQfG/8e8oiRIHy5YmEbgg=" }, "slf4j-simple-1.6.6.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.6.6/slf4j-simple-1.6.6.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.6.6/slf4j-simple-1.6.6.pom", "hash": "sha256-6eV8yFljFwnFUrbskwj+m6FUncWK7ZA5p+UFzeKrUbM=" } }, "org.sonatype.oss:oss-parent:7": { "oss-parent-7.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } }, "org.zeroturnaround:zt-zip:1.10": { "zt-zip-1.10.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/zeroturnaround/zt-zip/1.10/zt-zip-1.10.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/zeroturnaround/zt-zip/1.10/zt-zip-1.10.jar", "hash": "sha256-Vw46sIh5Ok9QLaGJtyutlgzwiqWaFxyDzwj0du1ELBk=" }, "zt-zip-1.10.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/zeroturnaround/zt-zip/1.10/zt-zip-1.10.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/zeroturnaround/zt-zip/1.10/zt-zip-1.10.pom", "hash": "sha256-tsgm40wVcdupU51FIac34FxJmuQOi50BgbYLFdbVCns=" } } diff --git a/fixtures/golden/dependency/snapshot.groovy.json b/fixtures/golden/dependency/snapshot.groovy.json index 1e4f545..5f9f222 100644 --- a/fixtures/golden/dependency/snapshot.groovy.json +++ b/fixtures/golden/dependency/snapshot.groovy.json @@ -1,15 +1,11 @@ { "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": { "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar", "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" }, "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom", "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" } } diff --git a/fixtures/golden/dependency/snapshot.kotlin.json b/fixtures/golden/dependency/snapshot.kotlin.json index 1e4f545..5f9f222 100644 --- a/fixtures/golden/dependency/snapshot.kotlin.json +++ b/fixtures/golden/dependency/snapshot.kotlin.json @@ -1,15 +1,11 @@ { "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": { "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar", "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" }, "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom", "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8=" } } diff --git a/fixtures/golden/included-build.groovy.json b/fixtures/golden/included-build.groovy.json index fc96533..db6aa29 100644 --- a/fixtures/golden/included-build.groovy.json +++ b/fixtures/golden/included-build.groovy.json @@ -1,43 +1,31 @@ { "org.apache:foo:2.0.0": { "foo-2.0.0.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/foo/2.0.0/foo-2.0.0.jar" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/foo/2.0.0/foo-2.0.0.jar", "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" }, "foo-2.0.0.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/foo/2.0.0/foo-2.0.0.pom" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/foo/2.0.0/foo-2.0.0.pom", "hash": "sha256-gcL/k4xoI5SK4qDNcyH1uHkgiGQv3WohPb45Gsb9gi8=" } }, "org.apache:foo:1.0.0": { "foo-1.0.0.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/foo/1.0.0/foo-1.0.0.jar" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/foo/1.0.0/foo-1.0.0.jar", "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" }, "foo-1.0.0.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/foo/1.0.0/foo-1.0.0.pom" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/foo/1.0.0/foo-1.0.0.pom", "hash": "sha256-roNL3MgAJuUPxIdJJiSpjU3yEFlJFDQ99QvnaWlkVcE=" } }, "org.apache:test:1.0.0": { "test-1.0.0.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar", "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" }, "test-1.0.0.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom", "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" } } diff --git a/fixtures/golden/integration/settings-buildscript.groovy.json b/fixtures/golden/integration/settings-buildscript.groovy.json index ede1686..fc2961c 100644 --- a/fixtures/golden/integration/settings-buildscript.groovy.json +++ b/fixtures/golden/integration/settings-buildscript.groovy.json @@ -1,215 +1,157 @@ { "com.googlecode.javaewah:JavaEWAH:1.1.6": { "JavaEWAH-1.1.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" - ], + "url": "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar", "hash": "sha256-941EoeOHfxznSLSoXfUXHl6Omlw8b2O7kAPbb4TM6VI=" }, "JavaEWAH-1.1.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom" - ], + "url": "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom", "hash": "sha256-f0/5GbHuF783duBYo/IOYXPbI6XkTPLRB+x1cMGGq/A=" } }, "com.jcraft:jsch:0.1.54": { "jsch-0.1.54.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" - ], + "url": "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar", "hash": "sha256-kusnOjMWdiR4/dT+A6DOGELFb0lsnBL+EjXbgEUOH9s=" }, "jsch-0.1.54.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom" - ], + "url": "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom", "hash": "sha256-q49RIDm+f2riDhjnQ7Sp2KIJWElEMZF9pYrlqu+KNHg=" } }, "commons-codec:commons-codec:1.6": { "commons-codec-1.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" - ], + "url": "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar", "hash": "sha256-VLNOlBuOFBS9PkDXNu/TSBdy3CbbMpb2qkXOyfYgPYY=" }, "commons-codec-1.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom" - ], + "url": "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom", "hash": "sha256-oG410//zprgT2UiU6/PkmPlUDIZMWzmueDkH46bHKIk=" } }, "commons-logging:commons-logging:1.1.3": { "commons-logging-1.1.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" - ], + "url": "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar", "hash": "sha256-cJA/b8gumQjI2p8gRD9h2Q8IcKMSZCmR/oRioLk5F4Q=" }, "commons-logging-1.1.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom" - ], + "url": "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom", "hash": "sha256-MlCsOsa9YO0GMfXNAzUDKymT1j5AWmrgVV0np+SGWEk=" } }, "gradle.plugin.net.vivin:gradle-semantic-build-versioning:4.0.0": { "gradle-semantic-build-versioning-4.0.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar" - ], + "url": "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar", "hash": "sha256-UTjmfOjgGUN4ALk8n2+dD8vr763Jb7xOvAl1yZomHvg=" }, "gradle-semantic-build-versioning-4.0.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom" - ], + "url": "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom", "hash": "sha256-TygodBYH7RAtletfGJ1JbHhA7UY6zqifHlGmBWdxTvc=" } }, "org.apache:apache:13": { "apache-13.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/13/apache-13.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/apache/13/apache-13.pom", "hash": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0=" } }, "org.apache:apache:9": { "apache-9.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/9/apache-9.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/apache/9/apache-9.pom", "hash": "sha256-SUbmClR8jtpp87wjxbbw2tz4Rp6kmx0dp940rs/PGN0=" } }, "org.apache.commons:commons-parent:28": { "commons-parent-28.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/28/commons-parent-28.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/28/commons-parent-28.pom", "hash": "sha256-FHM6aOixILad5gzZbSIhRtzzLwPBxsxqdQsSabr+hsc=" } }, "org.apache.commons:commons-parent:22": { "commons-parent-22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/22/commons-parent-22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/22/commons-parent-22.pom", "hash": "sha256-+4xeVeMKet20/yEIWKDo0klO1nV7vhkBLamdUVhsPLs=" } }, "org.apache.httpcomponents:httpclient:4.3.6": { "httpclient-4.3.6.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" - ], + "url": "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar", "hash": "sha256-eYONnq73PU+FLGOkgIMMOi1LWQ8Ks66BWkiUY+RxQAQ=" }, "httpclient-4.3.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom", "hash": "sha256-0CY09hMekUlhwCqoNnEeuscnBLJ+JsW9Iju62JsbZMM=" } }, "org.apache.httpcomponents:httpcomponents-client:4.3.6": { "httpcomponents-client-4.3.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-client/4.3.6/httpcomponents-client-4.3.6.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-client/4.3.6/httpcomponents-client-4.3.6.pom", "hash": "sha256-StooJ7SWM5gmiRx8gdzrpkcCneb8GIixazyrVlCrzGM=" } }, "org.apache.httpcomponents:httpcomponents-core:4.3.3": { "httpcomponents-core-4.3.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core/4.3.3/httpcomponents-core-4.3.3.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core/4.3.3/httpcomponents-core-4.3.3.pom", "hash": "sha256-wW4vwNSbp6As71teJgBYWp9nNVMyim+eWPJClt8d0DE=" } }, "org.apache.httpcomponents:httpcore:4.3.3": { "httpcore-4.3.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" - ], + "url": "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar", "hash": "sha256-UoXegK8WUcSJMTuRqfQMZaTNy2s73nFvzAKNFoaaWpM=" }, "httpcore-4.3.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom", "hash": "sha256-tCf3z2fHWk4/niEI01v0UwNXPBRex3j8rc/6zvF6EmQ=" } }, "org.apache.httpcomponents:project:7": { "project-7.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/project/7/project-7.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/httpcomponents/project/7/project-7.pom", "hash": "sha256-PW66QoVVpVjeBGtddurMH1pUtPXyC4TWNu16/xiqSMM=" } }, "org.eclipse.jgit:org.eclipse.jgit:4.8.0.201706111038-r": { "org.eclipse.jgit-4.8.0.201706111038-r.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar" - ], + "url": "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar", "hash": "sha256-SdkS6NXM4N0I3KPTkBiduGkqj34zY8274YJYFGIACro=" }, "org.eclipse.jgit-4.8.0.201706111038-r.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom" - ], + "url": "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom", "hash": "sha256-pVap9a38avSbKhLnLcPNfkPbj9whbA81iFlyovWton0=" } }, "org.eclipse.jgit:org.eclipse.jgit-parent:4.8.0.201706111038-r": { "org.eclipse.jgit-parent-4.8.0.201706111038-r.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit-parent/4.8.0.201706111038-r/org.eclipse.jgit-parent-4.8.0.201706111038-r.pom" - ], + "url": "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit-parent/4.8.0.201706111038-r/org.eclipse.jgit-parent-4.8.0.201706111038-r.pom", "hash": "sha256-OWpMyJQgaHP/EH0GapliUrC0f1hbiM9X/Dsx6T1JKHg=" } }, "org.slf4j:slf4j-api:1.7.2": { "slf4j-api-1.7.2.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" - ], + "url": "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar", "hash": "sha256-O654m0ATM7Kh0WA7f6Vz4ZkIYoGRcHID9utwjN7iwFI=" }, "slf4j-api-1.7.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom" - ], + "url": "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom", "hash": "sha256-LqynGv4KFRb0q9jp/5B4ONJo84yBw6VCzOjX87h8XUw=" } }, "org.slf4j:slf4j-parent:1.7.2": { "slf4j-parent-1.7.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-parent/1.7.2/slf4j-parent-1.7.2.pom" - ], + "url": "https://plugins.gradle.org/m2/org/slf4j/slf4j-parent/1.7.2/slf4j-parent-1.7.2.pom", "hash": "sha256-HY4ISm8jhK3kJoUzK1Kg7OCQR4ZB3BTA+oxS4eKYRCU=" } }, "org.sonatype.oss:oss-parent:6": { "oss-parent-6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/6/oss-parent-6.pom" - ], + "url": "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/6/oss-parent-6.pom", "hash": "sha256-tDBtE+j1OSRYobMIZvHP8WGz0uaZmojQWe6jkyyKhJk=" } }, "org.sonatype.oss:oss-parent:5": { "oss-parent-5.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom" - ], + "url": "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom", "hash": "sha256-FnjUEgpYXYpjATGu7ExSTZKDmFg7fqthbufVqH9SDT0=" } } diff --git a/fixtures/golden/ivy/basic.kotlin.json b/fixtures/golden/ivy/basic.kotlin.json index bceb43b..ad920dc 100644 --- a/fixtures/golden/ivy/basic.kotlin.json +++ b/fixtures/golden/ivy/basic.kotlin.json @@ -1,29 +1,21 @@ { "org.opendof.core-java:dof-cipher-sms4:1.0": { "dof-cipher-sms4-1.0.jar": { - "urls": [ - "https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/jars/dof-cipher-sms4-1.0.jar" - ], + "url": "https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/jars/dof-cipher-sms4-1.0.jar", "hash": "sha256-/Joo51NA6nBPEwFuFcnDc10JQZDE8P3jF3P4gl0vpMA=" }, - "ivy.xml": { - "urls": [ - "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" - ], + "ivy-1.0.xml": { + "url": "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml", "hash": "sha256-rh+pQpXqPP/cmBD8slvwMrKlWCUb3JNzW3l58hd7oJ8=" } }, "org.opendof.core-java:dof-oal:7.0.2": { "dof-oal-7.0.2.jar": { - "urls": [ - "https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/jars/dof-oal-7.0.2.jar" - ], + "url": "https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/jars/dof-oal-7.0.2.jar", "hash": "sha256-u+FUhQGBA8MRl28mXMTSnZ2HY2ysPHq7h9lANmHBK40=" }, - "ivy.xml": { - "urls": [ - "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml" - ], + "ivy-7.0.2.xml": { + "url": "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml", "hash": "sha256-KZoUVyoDcfH/B/9V1SVqNiA/XIb3zlwoJkjb/jD+xig=" } } diff --git a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json index 595b40e..a88ff73 100644 --- a/fixtures/golden/plugin/resolves-from-default-repo.groovy.json +++ b/fixtures/golden/plugin/resolves-from-default-repo.groovy.json @@ -1,523 +1,361 @@ { "net.java.dev.jna:jna:5.6.0": { "jna-5.6.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], + "url": "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" }, "jna-5.6.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], + "url": "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" } }, "org.jetbrains:annotations:13.0": { "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar", "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" }, "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom", "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" }, "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } }, "org.jetbrains.kotlin:kotlin-android-extensions:1.7.21": { "kotlin-android-extensions-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar", "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" }, "kotlin-android-extensions-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom", "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" } }, "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.21": { "kotlin-annotation-processing-gradle-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar", "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" }, "kotlin-annotation-processing-gradle-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom", "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" } }, "org.jetbrains.kotlin:kotlin-build-common:1.7.21": { "kotlin-build-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar", "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" }, "kotlin-build-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom", "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" } }, "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21": { "kotlin-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" }, "kotlin-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" } }, "org.jetbrains.kotlin:kotlin-compiler-runner:1.7.21": { "kotlin-compiler-runner-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar", "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" }, "kotlin-compiler-runner-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom", "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" } }, "org.jetbrains.kotlin:kotlin-daemon-client:1.7.21": { "kotlin-daemon-client-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar", "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" }, "kotlin-daemon-client-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom", "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" } }, "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.21": { "kotlin-daemon-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" }, "kotlin-daemon-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21": { "kotlin-gradle-plugin-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar", "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" }, "kotlin-gradle-plugin-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module", "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" }, "kotlin-gradle-plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom", "hash": "sha256-0gTXpKcf6Scv44M9x0IAkan/EJaky6JfcnihlUI1BGk=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.21": { "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar", "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" }, "kotlin-gradle-plugin-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar", "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" }, "kotlin-gradle-plugin-api-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module", "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" }, "kotlin-gradle-plugin-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom", "hash": "sha256-89unBFqYcdah5QnkF+tjQa3bmHFaL409ZnJlAdq0s0Y=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.7.21": { "kotlin-gradle-plugin-idea-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar", "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" }, "kotlin-gradle-plugin-idea-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module", "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" }, "kotlin-gradle-plugin-idea-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom", "hash": "sha256-Flz/idoRsXIpiJPHg0sNQadm1/PdIPoIvfiJxlXD5zc=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.7.21": { "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar", "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" }, "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom", "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.7.21": { "kotlin-gradle-plugin-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar", "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" }, "kotlin-gradle-plugin-model-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module", "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" }, "kotlin-gradle-plugin-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom", "hash": "sha256-y2vKOdHhBWBXcMCj3ubUXw58XtPFNGiZ9ycQsf//HaY=" } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.7.21": { "kotlin-klib-commonizer-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar", "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" }, "kotlin-klib-commonizer-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom", "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.21": { "kotlin-klib-commonizer-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar", "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" }, "kotlin-klib-commonizer-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom", "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" } }, "org.jetbrains.kotlin:kotlin-native-utils:1.7.21": { "kotlin-native-utils-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar", "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" }, "kotlin-native-utils-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom", "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" } }, "org.jetbrains.kotlin:kotlin-project-model:1.7.21": { "kotlin-project-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar", "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" }, "kotlin-project-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom", "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.7.21": { "kotlin-reflect-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar", "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" }, "kotlin-reflect-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom", "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" } }, "org.jetbrains.kotlin:kotlin-script-runtime:1.7.21": { "kotlin-script-runtime-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar", "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" }, "kotlin-script-runtime-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom", "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" } }, "org.jetbrains.kotlin:kotlin-scripting-common:1.7.21": { "kotlin-scripting-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" }, "kotlin-scripting-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.7.21": { "kotlin-scripting-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" }, "kotlin-scripting-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.7.21": { "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" }, "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" } }, "org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.21": { "kotlin-scripting-jvm-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" }, "kotlin-scripting-jvm-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.7.21": { "kotlin-stdlib-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar", "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" }, "kotlin-stdlib-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom", "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.7.21": { "kotlin-stdlib-common-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar", "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" }, "kotlin-stdlib-common-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom", "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21": { "kotlin-stdlib-jdk7-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar", "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" }, "kotlin-stdlib-jdk7-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom", "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21": { "kotlin-stdlib-jdk8-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar", "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" }, "kotlin-stdlib-jdk8-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom", "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" } }, "org.jetbrains.kotlin:kotlin-tooling-core:1.7.21": { "kotlin-tooling-core-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar", "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" }, "kotlin-tooling-core-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom", "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" } }, "org.jetbrains.kotlin:kotlin-util-io:1.7.21": { "kotlin-util-io-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar", "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" }, "kotlin-util-io-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom", "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" } }, "org.jetbrains.kotlin:kotlin-util-klib:1.7.21": { "kotlin-util-klib-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar", "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" }, "kotlin-util-klib-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom", "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" } }, "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.21": { "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom", "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" }, "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" }, "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } } diff --git a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json index 595b40e..a88ff73 100644 --- a/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json +++ b/fixtures/golden/plugin/resolves-from-default-repo.kotlin.json @@ -1,523 +1,361 @@ { "net.java.dev.jna:jna:5.6.0": { "jna-5.6.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar" - ], + "url": "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar", "hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8=" }, "jna-5.6.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom" - ], + "url": "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom", "hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg=" } }, "org.jetbrains:annotations:13.0": { "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar", "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" }, "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom", "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" }, "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } }, "org.jetbrains.kotlin:kotlin-android-extensions:1.7.21": { "kotlin-android-extensions-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar", "hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8=" }, "kotlin-android-extensions-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom", "hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0=" } }, "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.21": { "kotlin-annotation-processing-gradle-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar", "hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk=" }, "kotlin-annotation-processing-gradle-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom", "hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4=" } }, "org.jetbrains.kotlin:kotlin-build-common:1.7.21": { "kotlin-build-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar", "hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8=" }, "kotlin-build-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom", "hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718=" } }, "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21": { "kotlin-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar", "hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk=" }, "kotlin-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom", "hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs=" } }, "org.jetbrains.kotlin:kotlin-compiler-runner:1.7.21": { "kotlin-compiler-runner-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar", "hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc=" }, "kotlin-compiler-runner-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom", "hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw=" } }, "org.jetbrains.kotlin:kotlin-daemon-client:1.7.21": { "kotlin-daemon-client-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar", "hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU=" }, "kotlin-daemon-client-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom", "hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk=" } }, "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.21": { "kotlin-daemon-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar", "hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00=" }, "kotlin-daemon-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom", "hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21": { "kotlin-gradle-plugin-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar", "hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI=" }, "kotlin-gradle-plugin-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module", "hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E=" }, "kotlin-gradle-plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom", "hash": "sha256-0gTXpKcf6Scv44M9x0IAkan/EJaky6JfcnihlUI1BGk=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.21": { "kotlin-gradle-plugin-api-1.7.21-gradle71.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar", "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" }, "kotlin-gradle-plugin-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar", "hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE=" }, "kotlin-gradle-plugin-api-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module", "hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10=" }, "kotlin-gradle-plugin-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom", "hash": "sha256-89unBFqYcdah5QnkF+tjQa3bmHFaL409ZnJlAdq0s0Y=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.7.21": { "kotlin-gradle-plugin-idea-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar", "hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY=" }, "kotlin-gradle-plugin-idea-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module", "hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg=" }, "kotlin-gradle-plugin-idea-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom", "hash": "sha256-Flz/idoRsXIpiJPHg0sNQadm1/PdIPoIvfiJxlXD5zc=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.7.21": { "kotlin-gradle-plugin-idea-proto-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar", "hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg=" }, "kotlin-gradle-plugin-idea-proto-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom", "hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.7.21": { "kotlin-gradle-plugin-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar", "hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg=" }, "kotlin-gradle-plugin-model-1.7.21.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module", "hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U=" }, "kotlin-gradle-plugin-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom", "hash": "sha256-y2vKOdHhBWBXcMCj3ubUXw58XtPFNGiZ9ycQsf//HaY=" } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.7.21": { "kotlin-klib-commonizer-api-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar", "hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI=" }, "kotlin-klib-commonizer-api-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom", "hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA=" } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.21": { "kotlin-klib-commonizer-embeddable-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar", "hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y=" }, "kotlin-klib-commonizer-embeddable-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom", "hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA=" } }, "org.jetbrains.kotlin:kotlin-native-utils:1.7.21": { "kotlin-native-utils-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar", "hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs=" }, "kotlin-native-utils-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom", "hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY=" } }, "org.jetbrains.kotlin:kotlin-project-model:1.7.21": { "kotlin-project-model-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar", "hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8=" }, "kotlin-project-model-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom", "hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.7.21": { "kotlin-reflect-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar", "hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ=" }, "kotlin-reflect-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom", "hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM=" } }, "org.jetbrains.kotlin:kotlin-script-runtime:1.7.21": { "kotlin-script-runtime-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar", "hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y=" }, "kotlin-script-runtime-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom", "hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ=" } }, "org.jetbrains.kotlin:kotlin-scripting-common:1.7.21": { "kotlin-scripting-common-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar", "hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q=" }, "kotlin-scripting-common-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom", "hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4=" } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.7.21": { "kotlin-scripting-compiler-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar", "hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE=" }, "kotlin-scripting-compiler-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom", "hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM=" } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.7.21": { "kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar", "hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg=" }, "kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom", "hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM=" } }, "org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.21": { "kotlin-scripting-jvm-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar", "hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4=" }, "kotlin-scripting-jvm-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom", "hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.7.21": { "kotlin-stdlib-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar", "hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk=" }, "kotlin-stdlib-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom", "hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.7.21": { "kotlin-stdlib-common-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar", "hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo=" }, "kotlin-stdlib-common-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom", "hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21": { "kotlin-stdlib-jdk7-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar", "hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU=" }, "kotlin-stdlib-jdk7-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom", "hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21": { "kotlin-stdlib-jdk8-1.7.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar", "hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044=" }, "kotlin-stdlib-jdk8-1.7.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom", "hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k=" } }, "org.jetbrains.kotlin:kotlin-tooling-core:1.7.21": { "kotlin-tooling-core-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar", "hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg=" }, "kotlin-tooling-core-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom", "hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY=" } }, "org.jetbrains.kotlin:kotlin-util-io:1.7.21": { "kotlin-util-io-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar", "hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800=" }, "kotlin-util-io-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom", "hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8=" } }, "org.jetbrains.kotlin:kotlin-util-klib:1.7.21": { "kotlin-util-klib-1.7.21.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar", "hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs=" }, "kotlin-util-klib-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom", "hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU=" } }, "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.21": { "org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom", "hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" }, "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" }, "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } } diff --git a/fixtures/golden/settings/buildscript.groovy.json b/fixtures/golden/settings/buildscript.groovy.json index d4c2a74..b0018c6 100644 --- a/fixtures/golden/settings/buildscript.groovy.json +++ b/fixtures/golden/settings/buildscript.groovy.json @@ -1,15 +1,11 @@ { "org.apache:test:1.0.0": { "test-1.0.0.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar", "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" }, "test-1.0.0.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom", "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" } } diff --git a/fixtures/golden/settings/dependency-resolution-management.kotlin.json b/fixtures/golden/settings/dependency-resolution-management.kotlin.json index d4c2a74..b0018c6 100644 --- a/fixtures/golden/settings/dependency-resolution-management.kotlin.json +++ b/fixtures/golden/settings/dependency-resolution-management.kotlin.json @@ -1,15 +1,11 @@ { "org.apache:test:1.0.0": { "test-1.0.0.jar": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar", "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" }, "test-1.0.0.pom": { - "urls": [ - "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom" - ], + "url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom", "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" } } diff --git a/fixtures/golden/subprojects/multi-module.groovy.json b/fixtures/golden/subprojects/multi-module.groovy.json index eff775d..696d117 100644 --- a/fixtures/golden/subprojects/multi-module.groovy.json +++ b/fixtures/golden/subprojects/multi-module.groovy.json @@ -1,145 +1,105 @@ { "com.squareup.moshi:moshi:1.8.0": { "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar", "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" }, "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom", "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" } }, "com.squareup.moshi:moshi-parent:1.8.0": { "moshi-parent-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom", "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c=" } }, "com.squareup.okio:okio:2.2.2": { "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar", "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" }, "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom", "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } }, "com.squareup.okio:okio:1.16.0": { "okio-1.16.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar", "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" }, "okio-1.16.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom", "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" } }, "com.squareup.okio:okio-parent:1.16.0": { "okio-parent-1.16.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom", "hash": "sha256-C3Qkw/qrO7UzMJbjmVf4j41QzgyYv7pxo/z6oKrwVSw=" } }, "junit:junit:4.12": { "junit-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" - ], + "url": "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar", "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" }, "junit-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" - ], + "url": "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom", "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" } }, "org.hamcrest:hamcrest-core:1.3": { "hamcrest-core-1.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar", "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" }, "hamcrest-core-1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom", "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" } }, "org.hamcrest:hamcrest-parent:1.3": { "hamcrest-parent-1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom", "hash": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps=" } }, "org.jetbrains:annotations:13.0": { "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar", "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" }, "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom", "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar", "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" }, "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom", "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar", "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" }, "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom", "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" } }, "org.sonatype.oss:oss-parent:7": { "oss-parent-7.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } } diff --git a/fixtures/golden/subprojects/multi-module.kotlin.json b/fixtures/golden/subprojects/multi-module.kotlin.json index eff775d..696d117 100644 --- a/fixtures/golden/subprojects/multi-module.kotlin.json +++ b/fixtures/golden/subprojects/multi-module.kotlin.json @@ -1,145 +1,105 @@ { "com.squareup.moshi:moshi:1.8.0": { "moshi-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar", "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" }, "moshi-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom", "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8=" } }, "com.squareup.moshi:moshi-parent:1.8.0": { "moshi-parent-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom", "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c=" } }, "com.squareup.okio:okio:2.2.2": { "okio-2.2.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar", "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs=" }, "okio-2.2.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom", "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs=" } }, "com.squareup.okio:okio:1.16.0": { "okio-1.16.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar", "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4=" }, "okio-1.16.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom", "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY=" } }, "com.squareup.okio:okio-parent:1.16.0": { "okio-parent-1.16.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom", "hash": "sha256-C3Qkw/qrO7UzMJbjmVf4j41QzgyYv7pxo/z6oKrwVSw=" } }, "junit:junit:4.12": { "junit-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" - ], + "url": "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar", "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=" }, "junit-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom" - ], + "url": "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom", "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" } }, "org.hamcrest:hamcrest-core:1.3": { "hamcrest-core-1.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar", "hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" }, "hamcrest-core-1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom", "hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM=" } }, "org.hamcrest:hamcrest-parent:1.3": { "hamcrest-parent-1.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom", "hash": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps=" } }, "org.jetbrains:annotations:13.0": { "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar", "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" }, "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom", "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": { "kotlin-stdlib-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar", "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" }, "kotlin-stdlib-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom", "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": { "kotlin-stdlib-common-1.2.60.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar", "hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" }, "kotlin-stdlib-common-1.2.60.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom", "hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE=" } }, "org.sonatype.oss:oss-parent:7": { "oss-parent-7.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } } diff --git a/fixtures/metadata/verification-metadata.xml b/fixtures/metadata/verification-metadata.xml deleted file mode 100644 index 8409abf..0000000 --- a/fixtures/metadata/verification-metadata.xml +++ /dev/null @@ -1,5292 +0,0 @@ - - - - true - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/fixtures/projects/ivy/basic/kotlin/build.gradle.kts b/fixtures/projects/ivy/basic/kotlin/build.gradle.kts index e3f4b8a..66b4535 100644 --- a/fixtures/projects/ivy/basic/kotlin/build.gradle.kts +++ b/fixtures/projects/ivy/basic/kotlin/build.gradle.kts @@ -8,7 +8,6 @@ repositories { patternLayout { ivy("ivy2/[organisation]/[module]/[revision]/ivy(.[platform]).xml") artifact("artifact/[organisation]/[module]/[revision](/[platform])(/[type]s)/[artifact]-[revision](-[classifier]).[ext]") - } } } diff --git a/flake.nix b/flake.nix index 23fbc87..fac545a 100644 --- a/flake.nix +++ b/flake.nix @@ -11,16 +11,13 @@ flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; - buildGradle = pkgs.callPackage ./gradle.nix {}; in { - packages.default = pkgs.callPackage ./gradle2nix.nix { - inherit buildGradle; - }; + packages.default = pkgs.callPackage ./gradle2nix.nix {}; apps.default = { type = "app"; - program = "${self.packages.gradle2nix}/bin/gradle2nix"; + program = "${self.packages.${system}.default}/bin/gradle2nix"; }; }); } diff --git a/gradle.lock b/gradle.lock index 721903c..3dd2072 100644 --- a/gradle.lock +++ b/gradle.lock @@ -1,3299 +1,2327 @@ { "com.fasterxml:oss-parent:48": { "oss-parent-48.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/oss-parent/48/oss-parent-48.pom" - ], + "url": "https://plugins.gradle.org/m2/com/fasterxml/oss-parent/48/oss-parent-48.pom", "hash": "sha256-EbuiLYYxgW4JtiOiAHR0U9ZJGmbqyPXAicc9ordJAU8=" } }, "com.fasterxml.jackson:jackson-bom:2.14.1": { "jackson-bom-2.14.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.14.1/jackson-bom-2.14.1.pom" - ], + "url": "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.14.1/jackson-bom-2.14.1.pom", "hash": "sha256-eP35nlBQ/EhfQRfauMzL+2+mxoOF6184oJtlU3HUpsw=" } }, "com.fasterxml.jackson:jackson-parent:2.14": { "jackson-parent-2.14.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.14/jackson-parent-2.14.pom" - ], + "url": "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.14/jackson-parent-2.14.pom", "hash": "sha256-CQat2FWuOfkjV9Y/SFiJsI/KTEOl/kM1ItdTROB1exk=" } }, "com.github.ajalt:colormath:1.2.0": { "colormath-1.2.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.jar", "hash": "sha256-hqUffbsyq+QQ1UMx7GGsBoSlQ7JO6Xlnu6wKTmcp8DE=" }, "colormath-1.2.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.pom", "hash": "sha256-a3EKjQoQu+PgV5Xvf03ux3j9eQBbDBvA5cF4Ae5r3Z0=" } }, "com.github.ajalt:mordant:1.2.1": { "mordant-1.2.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.jar", "hash": "sha256-enFOuNJbTZun8lalTHVZzKh9heyQ1pQ98ZE8rUPbldY=" }, "mordant-1.2.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.pom", "hash": "sha256-8DLcV/gHnB9WJvvF8PZfz14SNA3ictgpsLVOkpeacro=" } }, "com.github.ajalt.clikt:clikt:4.4.0": { "clikt-4.4.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.jar", "hash": "sha256-pGJRQhCAqew0Cm92KHhUIOuyx9Ccw7BVOZ+j+676doY=" }, "clikt-4.4.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.module", "hash": "sha256-Z84+Rk1+r4GaBRQVd6IERrjkWbfk6RqCzoh7WKiOrWg=" }, "clikt-4.4.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.pom", "hash": "sha256-lrjYoujSS0misWTzN9LnAW3aiURAFFgNv/R4nilVZGk=" } }, "com.github.ajalt.clikt:clikt-jvm:4.4.0": { "clikt-jvm-4.4.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt-jvm/4.4.0/clikt-jvm-4.4.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt-jvm/4.4.0/clikt-jvm-4.4.0.jar", "hash": "sha256-3UJMfEETwRTvwQPaP6uCzL7nSElwEpwHZKRXi1hnc3E=" }, "clikt-jvm-4.4.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt-jvm/4.4.0/clikt-jvm-4.4.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt-jvm/4.4.0/clikt-jvm-4.4.0.module", "hash": "sha256-+7VuRAdirxrynHnd26lK40PX+e8ha6m57IjMkaxhoMs=" }, "clikt-jvm-4.4.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt-jvm/4.4.0/clikt-jvm-4.4.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt-jvm/4.4.0/clikt-jvm-4.4.0.pom", "hash": "sha256-EsmrEMyQ/YPRPASDj5a8q/NksORNjdJ65V4VLGMxPA4=" } }, "com.github.ajalt.colormath:colormath:3.5.0": { "colormath-3.5.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.jar", "hash": "sha256-vSKbrzuv1VbRid5yRx2dF8KaofXTJEVgJwvvjmOiMZo=" }, "colormath-3.5.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.module", "hash": "sha256-WgMLkC+VqHlsIUX2sppgwpeNxmQR4I6miLT7eK6p7wk=" }, "colormath-3.5.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.pom", "hash": "sha256-HZZBrdkDXN1gex2qgJ7sFks8m6zFTysQOFHu1FHRefc=" } }, "com.github.ajalt.colormath:colormath-jvm:3.5.0": { "colormath-jvm-3.5.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.5.0/colormath-jvm-3.5.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.5.0/colormath-jvm-3.5.0.jar", "hash": "sha256-Q5NdsGVYtKrD3ZAKd1vj6JtUyfSIYBRX3yfSoXQxZ7A=" }, "colormath-jvm-3.5.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.5.0/colormath-jvm-3.5.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.5.0/colormath-jvm-3.5.0.module", "hash": "sha256-51pnwJ14NuUBlxvoNHiCxmFpsgcn3S4sQjmT8VLuAns=" }, "colormath-jvm-3.5.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.5.0/colormath-jvm-3.5.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.5.0/colormath-jvm-3.5.0.pom", "hash": "sha256-YGXSHOrrGuPcE0P00XWKWojHTj5hwg60TUknp8G3MtY=" } }, "com.github.ajalt.mordant:mordant:2.5.0": { "mordant-2.5.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.jar", "hash": "sha256-j80uWaxhZQy8d7paxqDaZlMD6xvVURejzZSpi+ir0xM=" }, "mordant-2.5.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.module", "hash": "sha256-KMoVBsOzOqA5GK9FWSHfiv49oLtN3O5sezdOAG3g4bY=" }, "mordant-2.5.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.pom", "hash": "sha256-CM7jeOmaKfiAw1DUfe6R2H1ypc75WfaoysEd2FYT4VU=" } }, "com.github.ajalt.mordant:mordant-jvm:2.5.0": { "mordant-jvm-2.5.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant-jvm/2.5.0/mordant-jvm-2.5.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant-jvm/2.5.0/mordant-jvm-2.5.0.jar", "hash": "sha256-E9wdFUB0kM+j6bxUAQ8DHWpcUrc100FcxxRPC0aAqtc=" }, "mordant-jvm-2.5.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant-jvm/2.5.0/mordant-jvm-2.5.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant-jvm/2.5.0/mordant-jvm-2.5.0.module", "hash": "sha256-HDNjczAEy0z54b/mT9xjIiW8dTXVbrhxApdGf8V7wK8=" }, "mordant-jvm-2.5.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant-jvm/2.5.0/mordant-jvm-2.5.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant-jvm/2.5.0/mordant-jvm-2.5.0.pom", "hash": "sha256-095n7fFjX1ytZvkcVnXx+IfJDTuVlPfngQUgfxK04F0=" } }, "com.github.johnrengelman:shadow:8.1.1": { "shadow-8.1.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.jar" - ], + "url": "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.jar", "hash": "sha256-CEGXVVWQpTuyG1lQijMwVZ9TbdtEjq/R7GdfVGIDb88=" }, "shadow-8.1.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.module" - ], + "url": "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.module", "hash": "sha256-nQ87SqpniYcj6vbF6c0nOHj5V03azWSqNwJDYgzgLko=" }, "shadow-8.1.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.pom" - ], + "url": "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.pom", "hash": "sha256-Mu55f8hDI3xM5cSeX0FSxYoIlK/OCg6SY25qLU/JjDU=" } }, "com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:8.1.1": { "com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/8.1.1/com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom" - ], + "url": "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/8.1.1/com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom", "hash": "sha256-PLOIa5ffbgZvEIwxayGfJiyXw8st9tp4kn5kXetkPLA=" } }, "com.gradle.plugin-publish:com.gradle.plugin-publish.gradle.plugin:1.2.1": { "com.gradle.plugin-publish.gradle.plugin-1.2.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/plugin-publish/com.gradle.plugin-publish.gradle.plugin/1.2.1/com.gradle.plugin-publish.gradle.plugin-1.2.1.pom" - ], + "url": "https://plugins.gradle.org/m2/com/gradle/plugin-publish/com.gradle.plugin-publish.gradle.plugin/1.2.1/com.gradle.plugin-publish.gradle.plugin-1.2.1.pom", "hash": "sha256-60lBRA8TGZbmT6SCDc264js95UhBi6ke9MY0pqcfVMs=" } }, "com.gradle.publish:plugin-publish-plugin:1.2.1": { "plugin-publish-plugin-1.2.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" - ], + "url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar", "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" }, "plugin-publish-plugin-1.2.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" - ], + "url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module", "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" }, "plugin-publish-plugin-1.2.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom" - ], + "url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom", "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" } }, "com.squareup.okio:okio:3.9.0": { "okio-3.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar", "hash": "sha256-5RilmFYnOh/OGKx9E938aQ3vphItflzQDK4Zti0DR9k=" }, "okio-3.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.module", "hash": "sha256-aNHIef9liTHQKzrb6vu1EuFjwgqQyt8H2QyNvqfnYhA=" }, "okio-3.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.pom", "hash": "sha256-FPNR2puXtDaeP26PaWsK1ANtFNIbD9l6pcjG7BW+fZA=" } }, "com.squareup.okio:okio-jvm:3.9.0": { "okio-jvm-3.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.jar", "hash": "sha256-3cOG/xS9JdXJNBZxlur0WxjeTyjhxVpNs3rllMv9N+Q=" }, "okio-jvm-3.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.module", "hash": "sha256-z5coTsYbtR5t/Lx/K22VVsm3s+PLIswOLU8O7782GVs=" }, "okio-jvm-3.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.pom", "hash": "sha256-VEiNRUqsyvaPcZnz3l3Ns4CBblfUYJBJF06FZSAROH4=" } }, "com.typesafe:config:1.4.3": { "config-1.4.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.jar", "hash": "sha256-itpMGFznJBZxLWPgta/cXwCcDN9AXl8m7+zfFWql37Y=" }, "config-1.4.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.pom", "hash": "sha256-tn6vqd0iD/h9ANumiACDpSlqXgxsAxA/XUuOHaEDD/M=" } }, "commons-io:commons-io:2.11.0": { "commons-io-2.11.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar" - ], + "url": "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar", "hash": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=" }, "commons-io-2.11.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.pom" - ], + "url": "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.pom", "hash": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k=" } }, "io.fabric8:kubernetes-client-bom:5.12.2": { "kubernetes-client-bom-5.12.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/io/fabric8/kubernetes-client-bom/5.12.2/kubernetes-client-bom-5.12.2.pom" - ], + "url": "https://plugins.gradle.org/m2/io/fabric8/kubernetes-client-bom/5.12.2/kubernetes-client-bom-5.12.2.pom", "hash": "sha256-6qA8FpVlaNVKa6Q31J1Ay/DdjpOXf5hDGCQldrZQvDs=" } }, "io.github.classgraph:classgraph:4.8.172": { "classgraph-4.8.172.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.jar", "hash": "sha256-wWseIxpziZL3KVC1Jc774FSkCP9kLsy7IcrdVHCgXyI=" }, "classgraph-4.8.172.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.pom", "hash": "sha256-gD2mlHTiB6oi/xnshXE3MGrU4ahz4V98Xv0sqer9W74=" } }, "io.github.java-diff-utils:java-diff-utils:4.12": { "java-diff-utils-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar", "hash": "sha256-mZCiA5d49rTMlHkBQcKGiGTqzuBiDGxFlFESGpAc1bU=" }, "java-diff-utils-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.pom", "hash": "sha256-wm4JftyOxoBdExmBfSPU5JbMEBXMVdxSAhEtj2qRZfw=" } }, "io.github.java-diff-utils:java-diff-utils-parent:4.12": { "java-diff-utils-parent-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.12/java-diff-utils-parent-4.12.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.12/java-diff-utils-parent-4.12.pom", "hash": "sha256-2BHPnxGMwsrRMMlCetVcF01MCm8aAKwa4cm8vsXESxk=" } }, "io.github.pdvrieze.xmlutil:core:0.86.3": { "core-0.86.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.jar", "hash": "sha256-ikZHG7Y7PHhzlsu6WqL2TU4zOgOSAiRBrhIRHn5yjJE=" }, "core-0.86.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.module", "hash": "sha256-MzlXsdCR2LrPqwYCCGgi+a2S9hMCy3Ru8g4Z9nprTbk=" }, "core-0.86.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.pom", "hash": "sha256-ngeyUCJI+U7AYn9Wsn3wiBySBCrfzoCg35oa6sQWg4M=" } }, "io.github.pdvrieze.xmlutil:core-jvm:0.86.3": { "core-jvm-0.86.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar", "hash": "sha256-kVJ9hv6gS9YYPRQKCfENqy3qcnrxLSfZFl7jQuo9Dt4=" }, "core-jvm-0.86.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.module", "hash": "sha256-FgIJExZWo2dDGWXYAYk7J3fuguD3ZmaD+nXE+Wck/wc=" }, "core-jvm-0.86.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.pom", "hash": "sha256-oBGIoPlVW1s7nZLlQz242AJ6vjleD/cIBRU+8v6qf4U=" } }, "io.github.pdvrieze.xmlutil:serialization-jvm:0.86.3": { "serialization-jvm-0.86.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar", "hash": "sha256-nOJz3LhguSpb8uw2rR4qEbQa7YnGyYTKc+h+/17aG9A=" }, "serialization-jvm-0.86.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.module", "hash": "sha256-3ppDm3mA++bMPDS8rZyEqIMVmdyHZNceD2c93Ho91Jo=" }, "serialization-jvm-0.86.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.pom", "hash": "sha256-OX1XqPVTaUEf7HRETH1NTLaeyYANUkSTrGHekJIl4wc=" } }, "io.kotest:kotest-assertions-api:5.9.0": { "kotest-assertions-api-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.jar", "hash": "sha256-JmNIEcOE+VRVVMJUBfLZCMEaeupal1mZM/gsAIRsVAg=" }, "kotest-assertions-api-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.module", "hash": "sha256-qFQu4m/P0+8yxm5e3mjeuvjql90heZH0HSAje7UpT4U=" }, "kotest-assertions-api-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.pom", "hash": "sha256-GjEMzEBJd0cpFIPrOwUMbIle7KTONzPwHdkkZ6ZV8sw=" } }, "io.kotest:kotest-assertions-api-jvm:5.9.0": { "kotest-assertions-api-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.jar", "hash": "sha256-Sv9MqD6SBssjiDJd+HKXb1GekloGlJSr7CkuwxFMDQk=" }, "kotest-assertions-api-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.module", "hash": "sha256-XITlW45flkCcy1pCoS3ElCbl1ucWSnMy3wy4wrK21L4=" }, "kotest-assertions-api-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.pom", "hash": "sha256-1g6ynf1tj7NSGYTX+sJaE0AHFHa7ceksV1X70VpaZzY=" } }, "io.kotest:kotest-assertions-core:5.9.0": { "kotest-assertions-core-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.jar", "hash": "sha256-+uWJ9I5hs7uiaHvvMbbneu2Ji6dswFU3rdFQ7pSsmkY=" }, "kotest-assertions-core-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.module", "hash": "sha256-p3KZqaKYbphakO0KsWd0pzMPeu/CUnOT3E1HeNPI4sM=" }, "kotest-assertions-core-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.pom", "hash": "sha256-qvu+DMIo9BTt2Va2lHINRZLna47v+MiK211RRQRhu7o=" } }, "io.kotest:kotest-assertions-core-jvm:5.9.0": { "kotest-assertions-core-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.jar", "hash": "sha256-TIngmms4JoES/eJqC1LvVLsXhDtBv9IV958s9M3QJ4w=" }, "kotest-assertions-core-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.module", "hash": "sha256-OinQMJG5EyNIVgv1DKJKzEvBzIq+MGE8y/5alzt/F48=" }, "kotest-assertions-core-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.pom", "hash": "sha256-pmgjeAvzFo5CAqPmg6PWZ1K5yg4aaqx4FL/mng155NU=" } }, "io.kotest:kotest-assertions-shared:5.9.0": { "kotest-assertions-shared-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.jar", "hash": "sha256-EoSglpgVz7PTk/TOTF2tW1Dc1wvxN4h78MA0yqIVYeE=" }, "kotest-assertions-shared-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.module", "hash": "sha256-KK3K96Q94fICNFI+4csorIc7ztp2VESW8cU1NF2gCJM=" }, "kotest-assertions-shared-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.pom", "hash": "sha256-IGd1Qmuhf36c1WjpZMWGMMNCt2c67pNPIiFVLNDwBww=" } }, "io.kotest:kotest-assertions-shared-jvm:5.9.0": { "kotest-assertions-shared-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.jar", "hash": "sha256-b9wtfMr8N1c/rhZ/hOMditN/2DHArXclPzDbuyedJlY=" }, "kotest-assertions-shared-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.module", "hash": "sha256-VGmhRQo07HywKyDjaY3dkHYsEVH6tba/RlWXlrl4OAs=" }, "kotest-assertions-shared-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.pom", "hash": "sha256-VQxkW4k0LR9iU/CXo+CzdyLsOTFxctB+E02E7A8IxKY=" } }, "io.kotest:kotest-common:5.9.0": { "kotest-common-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.jar", "hash": "sha256-DGXHvQS/2EX3Lt6hmNrNtLWyBebrIbnsgzSvYMZNpfU=" }, "kotest-common-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.module", "hash": "sha256-lqW8WbrWuITytzfvAR+ytKiZW+NO9eTnDSw99nKoh4M=" }, "kotest-common-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.pom", "hash": "sha256-LGnqBsbRBz1dH/ruD2wS3Lv6W8qOYXgbi8QNi2t+BzY=" } }, "io.kotest:kotest-common-jvm:5.9.0": { "kotest-common-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.jar", "hash": "sha256-yLAfI5/3kmxV/2oDYRqXpWSdWS6a0GqhBPM9RJR2uIg=" }, "kotest-common-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.module", "hash": "sha256-uWwklcyvr/yACGF+Sk7NRBmR/tU8QyGhECjxxIspgLE=" }, "kotest-common-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.pom", "hash": "sha256-DJw4J3/CngNTIDXkXDgi3C4B4yC9lPysTGsxMUIJAhM=" } }, "io.kotest:kotest-extensions:5.9.0": { "kotest-extensions-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.module", "hash": "sha256-mr4zuEi4bBoBg3YOreTLxF1OEvxEySCz+Dnn6A146rs=" }, "kotest-extensions-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.pom", "hash": "sha256-r36/K79pkmBmSLcdzJdHqDG43LML6A/hCfMDgOf1veU=" } }, "io.kotest:kotest-extensions-jvm:5.9.0": { "kotest-extensions-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.jar", "hash": "sha256-Mb5rCyZdL3cS0KdeaOQv6wuOYV+r8BkInn+/5Zc04dA=" }, "kotest-extensions-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.module", "hash": "sha256-BOtQGGme33ZRDZkDA3UZf1+XLUhkfrBNVr4B2EgdTkU=" }, "kotest-extensions-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.pom", "hash": "sha256-6eDaRU1z0/8r4unJOC2QiGFdpHmLjeu6d71tQ0bOa9I=" } }, "io.kotest:kotest-framework-api:5.9.0": { "kotest-framework-api-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.module", "hash": "sha256-aGM5P0GVr+lxcVUTl0jDYdWU7KIlL+zs2qZQFg2moXI=" }, "kotest-framework-api-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.pom", "hash": "sha256-DR9H1blAce2rfDWIUeqSozNx5xpjl2AZiLf9cZEZCAs=" } }, "io.kotest:kotest-framework-api-jvm:5.9.0": { "kotest-framework-api-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.jar", "hash": "sha256-2SRLxofIOCISZyWzynZ25FZEemBRIQ4lF1z4qyDAtCM=" }, "kotest-framework-api-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.module", "hash": "sha256-losVlXIzbDC3+cKX/PvrfRyPgg6u1lx8d6TLMznY7WI=" }, "kotest-framework-api-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.pom", "hash": "sha256-+M0upKNYQEr5M+QjsDDRT5bGVfO+fqryE9H9cywekwg=" } }, "io.kotest:kotest-framework-concurrency:5.9.0": { "kotest-framework-concurrency-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.module", "hash": "sha256-3X24UL0kQmjOFPnvo70y25AKgbmAW5TYJCSnWJIDxB0=" }, "kotest-framework-concurrency-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.pom", "hash": "sha256-ML0NEgw6Tr0BJp5gw3CrNhStctHDX3/qq+/lDSlVC7I=" } }, "io.kotest:kotest-framework-concurrency-jvm:5.9.0": { "kotest-framework-concurrency-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.jar", "hash": "sha256-B5txinLAdedCmHOz+VGoVROoA2xeOnbd3ocWEPKbd7U=" }, "kotest-framework-concurrency-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.module", "hash": "sha256-p8YMX+xNYGBE50UAR+JfoGITADC4xYDfDikqYBWzTbQ=" }, "kotest-framework-concurrency-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.pom", "hash": "sha256-xoO5KKNSADRo0j5ZQOnEJEjpknBpfEu8pHOavXSLDbc=" } }, "io.kotest:kotest-framework-discovery:5.9.0": { "kotest-framework-discovery-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.module", "hash": "sha256-L+Hiv5t/+eBNzZXjEI7jtfFURkTgZAP7lLkHZIOVCUA=" }, "kotest-framework-discovery-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.pom", "hash": "sha256-ts05NMKO1qZRr4RysuNqOuQMRWldI7As5JE7IULEgnE=" } }, "io.kotest:kotest-framework-discovery-jvm:5.9.0": { "kotest-framework-discovery-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.jar", "hash": "sha256-miiiFNkV20R5bwZcHP+7s8I2uJtqazg5UFjYCrg+ggM=" }, "kotest-framework-discovery-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.module", "hash": "sha256-7Xaj5/OnkkcbTUm+u+5pKPGEU0gLopHp5yBJlgAASCE=" }, "kotest-framework-discovery-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.pom", "hash": "sha256-sGGEOZMEvWc0UeszHyP3aqPtPf1dpMeb8dbiIb2MjFs=" } }, "io.kotest:kotest-framework-engine:5.9.0": { "kotest-framework-engine-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.module", "hash": "sha256-gZN/CF6jy3S1hxETTtC7VsDymc/DFz27IUVCrMyVJxc=" }, "kotest-framework-engine-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.pom", "hash": "sha256-xBA8Jfhv52zZKiA1irX1jbAUMtcKuBphBChd2MW998U=" } }, "io.kotest:kotest-framework-engine-jvm:5.9.0": { "kotest-framework-engine-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.jar", "hash": "sha256-h6Dxzb4o39OyLp5GgSEzCx1zPdoFwkTvhs/ZHaoWYlU=" }, "kotest-framework-engine-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.module", "hash": "sha256-ESmBvZzHXpTgQAm6W7dkWm8AeVEwU79W72QiUnSoBDs=" }, "kotest-framework-engine-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.pom", "hash": "sha256-v8ljQokqqX+yqFM+r+m1elKQlQdCH6sw2K71m5QpGpI=" } }, "io.kotest:kotest-runner-junit5:5.9.0": { "kotest-runner-junit5-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.jar", "hash": "sha256-CJ4kQXv59sNO7Fcg7rssvMguooVezvkBM+sX4QedWGg=" }, "kotest-runner-junit5-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.module", "hash": "sha256-AfB70s+KHo+Z+dDmSpQ7X6cxE//szocwqMQ08nZSgvc=" }, "kotest-runner-junit5-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.pom", "hash": "sha256-xeE4b8vdz+kKt18wWVnzltXRxu7l2y/549Ik8QVsmpM=" } }, "io.kotest:kotest-runner-junit5-jvm:5.9.0": { "kotest-runner-junit5-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.jar", "hash": "sha256-dpV0ADmfVaJBZFgUGfKj0H9yfEiwPcOXLiV24YdH6iI=" }, "kotest-runner-junit5-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.module", "hash": "sha256-v6MTM0BhaveK/YqdH3bwAQ02Wx6GE2DWpzMqowrKy4s=" }, "kotest-runner-junit5-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.pom", "hash": "sha256-wuOpHya7dfndAfMnW8E5OL6Lp3KEIBwbov4DODC2xKo=" } }, "io.ktor:ktor-events:2.3.11": { "ktor-events-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.jar", "hash": "sha256-qfTivW7ALrt5prOcEEr++k281IA7ufrV2e1XCTRX8G0=" }, "ktor-events-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.module", "hash": "sha256-YScMYk6JE8UBLw87YF0ThAlwNl+5JOw8fuO0hLxTWXY=" }, "ktor-events-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.pom", "hash": "sha256-hcFsb/+tI+3auG+gJU68tB7hhOh9M3Va41ITctMZ8ug=" } }, "io.ktor:ktor-events-jvm:2.3.11": { "ktor-events-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.jar", "hash": "sha256-92Dmk7tpaq9srFhEXFI2hY0QzXwVCErCDHp1Ba50kac=" }, "ktor-events-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.module", "hash": "sha256-HW+ysABOvT9w8g0YdMXRR9zcSn4pjM1ogdM/msx9tkE=" }, "ktor-events-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.pom", "hash": "sha256-nssYQanQ3FgvP+/Yl7vKKpqntHd69GbL65epV0IHdAY=" } }, "io.ktor:ktor-http:2.3.11": { "ktor-http-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.jar", "hash": "sha256-9PADOhT6whJBqLu+HFzxkzvRA+3I6eJ37j7gwcvTRkI=" }, "ktor-http-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.module", "hash": "sha256-UBgBa5qlACv5oFBoGsFuBRp/uICUhPFWnvdqFpxKKiU=" }, "ktor-http-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.pom", "hash": "sha256-tw7Nks9eqraVRQQDQ19SvqCDJe1VtNKDM1FN0diI0Dc=" } }, "io.ktor:ktor-http-cio:2.3.11": { "ktor-http-cio-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.module", "hash": "sha256-/lHSv+0gYTxLvcY4yT1X1ZmldFlXloNtjO7Zybep+n8=" }, "ktor-http-cio-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.pom", "hash": "sha256-p4wT0HqIQfw3MAGgGVPYKT2YDL972n81+FR3+1Ya+RA=" } }, "io.ktor:ktor-http-cio-jvm:2.3.11": { "ktor-http-cio-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.jar", "hash": "sha256-bIKoW5GMwAsSSn2w9HTtOH8FFIpCKWgQWG7lkTRNDn8=" }, "ktor-http-cio-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.module", "hash": "sha256-HzV2/lizf5nFj9TuJFmgRmiEoeWTw9Qb5/2/wQ5STtU=" }, "ktor-http-cio-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.pom", "hash": "sha256-vy9Vnf0Mx1NzkCGv7nlbr8U3U8ajWIiGa2J0Fg3stdY=" } }, "io.ktor:ktor-http-jvm:2.3.11": { "ktor-http-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.jar", "hash": "sha256-BQMz4biz/zBwvjIW4fPuePqdZQrI0hEEHQW/SCWbTfY=" }, "ktor-http-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.module", "hash": "sha256-BIraZkNbJkbTFrDOjX+aXfau8yuP1KEQ6vaPiqI8zII=" }, "ktor-http-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.pom", "hash": "sha256-CI9yJI9u5cZPW8Wa4i6MzE5ZqDVZ7U89ZGy9vtUDqIU=" } }, "io.ktor:ktor-io:2.3.11": { "ktor-io-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.jar", "hash": "sha256-skZKEoTyY57muhpCVDIsxUsFMmWHpG+AFUy9tXAYC7I=" }, "ktor-io-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.module", "hash": "sha256-RvrHp728UxfkD6bGYZpMUr7X02JaNP2kWRjDyq04r2A=" }, "ktor-io-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.pom", "hash": "sha256-lFDUN7vjB58G5wAePQmaH2l7Fc7UWO8BorXFd1cVrPI=" } }, "io.ktor:ktor-io-jvm:2.3.11": { "ktor-io-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.jar", "hash": "sha256-nJt0vx7xFuSybVyUUJoFd7yhQPgwqAzz9S0kVM0BEhs=" }, "ktor-io-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.module", "hash": "sha256-EIlmqdlJzZRN/9MqUTc0pPKJyCRGt4nACmopTWM7ER8=" }, "ktor-io-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.pom", "hash": "sha256-mbL5+MkKES6IVeY55AE+jXlYxCD8UVGq1iha3NdD0Ak=" } }, "io.ktor:ktor-network:2.3.11": { "ktor-network-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.module", "hash": "sha256-SlUAXFfLaTqLMK+eWk302ojX/kU93TRlvWsJEAkmbCw=" }, "ktor-network-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.pom", "hash": "sha256-eV7oO+aNHBYV/JibHkjPGNbeNvWK9vBb/7QjtOnsC18=" } }, "io.ktor:ktor-network-jvm:2.3.11": { "ktor-network-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.jar", "hash": "sha256-9njugGQUgEV28XM5R2Lg4busruMHOaBI1Oy0g4fe5GY=" }, "ktor-network-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.module", "hash": "sha256-jrPuxh+wtawI9Xvqfr83Q/Bcim9DImLUcuVu7JsuGZU=" }, "ktor-network-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.pom", "hash": "sha256-MdRLyv4uXbBWgn3XwoxljAHVxY5NC2IsHJ0m63SpqwM=" } }, "io.ktor:ktor-serialization:2.3.11": { "ktor-serialization-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.jar", "hash": "sha256-I/oFsvofdMi+5JsvpNCmzRaXdvXLw7e00I5nfmr7n14=" }, "ktor-serialization-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.module", "hash": "sha256-RY1rJzbNfObY9IMGdTEbJiZbM5tYoX0nLc0RFXI8lHI=" }, "ktor-serialization-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.pom", "hash": "sha256-Cr072jnh1FQGF7zPRAO3J56g7KkUSo1q/+F/OPc8PGU=" } }, "io.ktor:ktor-serialization-jvm:2.3.11": { "ktor-serialization-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.jar", "hash": "sha256-TC80IiaKlf63dwx10dJ+CdAJ3Wl8m0vyb9kxczLbUD4=" }, "ktor-serialization-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.module", "hash": "sha256-9ys7vY/D7I5DSDSPQt3OUq8+Y/Cens9C5M2WkG2R1Tg=" }, "ktor-serialization-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.pom", "hash": "sha256-nVGClI7BadSZPzuAFmETNuh/2PrjgidwH1imzh/Enp8=" } }, "io.ktor:ktor-server-core:2.3.11": { "ktor-server-core-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.jar", "hash": "sha256-PztUA1uh8KXfyq3LoJd62JDVDEUa7iLVPvTVa1Om/O4=" }, "ktor-server-core-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.module", "hash": "sha256-9KlYTH9QBmFcpCiXTk3Tz6Rr9fgq9AgjV51bPBTHYhQ=" }, "ktor-server-core-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.pom", "hash": "sha256-111k/+joPoOX6n+cgCufGnnAjtYXzbHpj1hAzqNEVZo=" } }, "io.ktor:ktor-server-core-jvm:2.3.11": { "ktor-server-core-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.jar", "hash": "sha256-6mi102OoWntBxzISf3BLDpj+OqwSJSl2PYrnAEf788o=" }, "ktor-server-core-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.module", "hash": "sha256-FMtHfiKcHfwZgmJjHqajyNXVabXFm0zExQ7fM++s0DE=" }, "ktor-server-core-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.pom", "hash": "sha256-maADHI6bP1m7Bkt2pdkoD4tx19nGLtwl2hfC1E+CeeE=" } }, "io.ktor:ktor-server-host-common:2.3.11": { "ktor-server-host-common-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.module", "hash": "sha256-cg0+sO8u7FRrD4iq4pL0uILk+Pze6GY7D6KyiEXHt04=" }, "ktor-server-host-common-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.pom", "hash": "sha256-B8Z/z3Xv1x18tmbpWfd/dSwCj1iywfoiUHLzYhGYVqw=" } }, "io.ktor:ktor-server-host-common-jvm:2.3.11": { "ktor-server-host-common-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.jar", "hash": "sha256-HjvNeLHpjsoQjZJ7u1QdDZtyP7IYcm1h6Fucpq4cjis=" }, "ktor-server-host-common-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.module", "hash": "sha256-xwLIGRtpP1d1ZpHRRkZ4u6mOhtCEXQKDdiGZS+uRlTI=" }, "ktor-server-host-common-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.pom", "hash": "sha256-Gr877I0aFWryXIDK700+sC3wxIGN1CghIW2+SCeZXfQ=" } }, "io.ktor:ktor-server-netty:2.3.11": { "ktor-server-netty-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.jar", "hash": "sha256-Wkb9vED9LXglmIPEzG6vO14pDdB9HEbqiO6j1I9QV3I=" }, "ktor-server-netty-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.module", "hash": "sha256-LUtE8EMgnpzg9IDdZmgoSbkyOfKIIBo1UqglQd1rE30=" }, "ktor-server-netty-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.pom", "hash": "sha256-qxGxtuLNQMM816OjnKeeSZlw/rFhIoI3ClZfEn0kXSM=" } }, "io.ktor:ktor-server-netty-jvm:2.3.11": { "ktor-server-netty-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.jar", "hash": "sha256-+YxIUr325irKzWu54yreP13lsmM+UY7F7B2tmD1XX5E=" }, "ktor-server-netty-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.module", "hash": "sha256-NYOIDN8BaY3r8qB3UPuenAvD369DZCLiRZw+f31Arig=" }, "ktor-server-netty-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.pom", "hash": "sha256-J+fP+sEa+ugSVjyPhVozJlMEIYLAGp6UfEg/Rzme35A=" } }, "io.ktor:ktor-utils:2.3.11": { "ktor-utils-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.jar", "hash": "sha256-SJeUj4AL85YHGPuaWv9QErcht7iWZjhZWCbGstp8TiU=" }, "ktor-utils-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.module", "hash": "sha256-wFGiUpPmUdQIGWPVFfMxsnPBevWpKYBs88mYdisk9is=" }, "ktor-utils-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.pom", "hash": "sha256-pP/0keaxdRMn261KJ+UR/U4xNpR/NyD32ovBtl2Ny6M=" } }, "io.ktor:ktor-utils-jvm:2.3.11": { "ktor-utils-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.jar", "hash": "sha256-1QjohTKUyKcuVhoSkBJ97q+SdC4tgQNqa5tzyCsx7WE=" }, "ktor-utils-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.module", "hash": "sha256-41aI1T/NEKfizORi3PjCB81MGkOD8ZU46xU/9wogbp4=" }, "ktor-utils-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.pom", "hash": "sha256-H412FDKI60HeKk4U/pf7CtRtMdfUpXwHo7voHSTOTKA=" } }, "io.ktor:ktor-websockets:2.3.11": { "ktor-websockets-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.jar", "hash": "sha256-XdKULp+AhVyqGFXiShT3DxqHWcg3tFTplRdqPMl3QVg=" }, "ktor-websockets-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.module", "hash": "sha256-t4zNNnaq5vyJ3WfnvqhKG8Dy1Wj2dS+njB8umGelDY4=" }, "ktor-websockets-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.pom", "hash": "sha256-j87iI7x63u3+9R+IaRZJrsf3edm+JowIJ7tuiow0Nmw=" } }, "io.ktor:ktor-websockets-jvm:2.3.11": { "ktor-websockets-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.jar", "hash": "sha256-0DB7Dv/GNJYymcO1L1E/eM+1xWY67t6dxCS4VZtT66o=" }, "ktor-websockets-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.module" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.module", "hash": "sha256-NHCtWpjcwUnywUXqTgiQ1wY6UMd8JsXOk/fhySJqKQY=" }, "ktor-websockets-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.pom", "hash": "sha256-y26TtzMFAIabQ+RBnTzdYMa7FoD493PwfLGLAZ2S7V8=" } }, "io.netty:netty-bom:4.1.86.Final": { "netty-bom-4.1.86.Final.pom": { - "urls": [ - "https://plugins.gradle.org/m2/io/netty/netty-bom/4.1.86.Final/netty-bom-4.1.86.Final.pom" - ], + "url": "https://plugins.gradle.org/m2/io/netty/netty-bom/4.1.86.Final/netty-bom-4.1.86.Final.pom", "hash": "sha256-EnFsH+ZM9b2qcETTfROq46iIIbkdR5hCDEanR2kXiv0=" } }, "io.netty:netty-buffer:4.1.106.Final": { "netty-buffer-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.jar", "hash": "sha256-1QZ72+R21jy0MpOCKDKnSafDijjBxRYQfHPSV8Ob7SE=" }, "netty-buffer-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.pom", "hash": "sha256-2gY34YJ9Uw2h2PQwsObNaT7Ee32qBnQrKKw02xy1RqY=" } }, "io.netty:netty-codec:4.1.106.Final": { "netty-codec-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.jar", "hash": "sha256-k4Y9/WkPes58JuTICP3CR4CtrUZbPNy3zj/HPEIt928=" }, "netty-codec-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.pom", "hash": "sha256-NA+IHwoS9itNCY+bcQo0fASTjV/z38wvw8pw1X7a70s=" } }, "io.netty:netty-codec-http:4.1.106.Final": { "netty-codec-http-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.jar", "hash": "sha256-uhd6A63Fh/pj6W8duunEb/JfWTl+o02WC0XgXQKWAm4=" }, "netty-codec-http-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.pom", "hash": "sha256-DE+4Y7F3o8Z9NhZistW8Gx43Vgubamtxfbc+lnlW2Ro=" } }, "io.netty:netty-codec-http2:4.1.106.Final": { "netty-codec-http2-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.jar", "hash": "sha256-wrgh1XpzPNZx6iqwZCACsX4KK4kATKAmxuro9Tgc+B4=" }, "netty-codec-http2-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.pom", "hash": "sha256-JZlznLzUACvwLSkABPTYxyvdhZ2VOyGAR7HvdW55jEY=" } }, "io.netty:netty-common:4.1.106.Final": { "netty-common-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.jar", "hash": "sha256-X/vgG9hFYXqRbeNhMBDV/aV8XraUFH040E95Hpg01cM=" }, "netty-common-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.pom", "hash": "sha256-4ayZMJpA1e76IEs6GBXHIcuS5K5t1UHsIoRQ2cnUgA0=" } }, "io.netty:netty-handler:4.1.106.Final": { "netty-handler-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.jar", "hash": "sha256-WpGa2Ittnp8IwwaZgLxlamKSagDmui2lhZqg7k4gLkQ=" }, "netty-handler-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.pom", "hash": "sha256-lhoCD6DBskT1io9MYS+egEEokLlgO/WTzmiUKaRlC0Y=" } }, "io.netty:netty-parent:4.1.106.Final": { "netty-parent-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-parent/4.1.106.Final/netty-parent-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-parent/4.1.106.Final/netty-parent-4.1.106.Final.pom", "hash": "sha256-eV8c7NBEHGSvry5vEN+yHCRtRI9sQ1cFHt6mjpw+s2U=" } }, "io.netty:netty-resolver:4.1.106.Final": { "netty-resolver-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.jar", "hash": "sha256-QElYuPBZDuUmAT0BHNI1Tat4rbqtdD19RE2zOj+eq6w=" }, "netty-resolver-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.pom", "hash": "sha256-phbG6XmPmDwsK0BiFDvaWM8tD2mGnZ00yMJiPdZMXXc=" } }, "io.netty:netty-transport:4.1.106.Final": { "netty-transport-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.jar", "hash": "sha256-I+qaOQCbQenQqhUVswc6+e5NpOFsLoabWqiqnxCdQlE=" }, "netty-transport-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.pom", "hash": "sha256-qyxCFnnBmSuuT3UyvpdpbK5L9g5pbwskf/vPunrynM4=" } }, "io.netty:netty-transport-classes-epoll:4.1.106.Final": { "netty-transport-classes-epoll-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.jar", "hash": "sha256-676g9nii85R+sgC+Az7X/lUwZ+Octd9Ldp0bn8aimHI=" }, "netty-transport-classes-epoll-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.pom", "hash": "sha256-kancuAlsq6lJCbohCze/4/M7qjAuZXAap/4nnWlRzGc=" } }, "io.netty:netty-transport-classes-kqueue:4.1.106.Final": { "netty-transport-classes-kqueue-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.jar", "hash": "sha256-9o7UQlABZcajhz4HMeG2IIS0L4QtD0dmdHSA7x/Jdj4=" }, "netty-transport-classes-kqueue-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.pom", "hash": "sha256-5VnP7dwvVFIUCbLypQY8gXefTgvpcG/+2QR0B3xBHU4=" } }, "io.netty:netty-transport-native-epoll:4.1.106.Final": { "netty-transport-native-epoll-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.jar", "hash": "sha256-ZgOaFRY1MCriM9/Rh9kcfddzoRrM0Sc1wWU7gndOd/A=" }, "netty-transport-native-epoll-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.pom", "hash": "sha256-U51mdWvcdwISzdMD7mJMrY2xbu9KgZiyqOKEg+ljb04=" } }, "io.netty:netty-transport-native-kqueue:4.1.106.Final": { "netty-transport-native-kqueue-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.jar", "hash": "sha256-FC/1C6Wcdbv2c6bBQ53Prjy3RprbgQXcP7ZqpAVRpK4=" }, "netty-transport-native-kqueue-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.pom", "hash": "sha256-BuxVaGByijbJpVnBVpIl5kzOGvQPqZ7T3GdZgmHMlOs=" } }, "io.netty:netty-transport-native-unix-common:4.1.106.Final": { "netty-transport-native-unix-common-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.jar" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.jar", "hash": "sha256-9S1LOMVxBmv6rpZKeGf6k38OVPtf9GfFdstlCiCoVOg=" }, "netty-transport-native-unix-common-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.pom" - ], + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.pom", "hash": "sha256-h19sn7JG3Vygm8Lc/LF4wpsBxx6lE/M3jm/Osp1KCjo=" } }, "it.unimi.dsi:fastutil-core:8.5.12": { "fastutil-core-8.5.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil-core/8.5.12/fastutil-core-8.5.12.jar" - ], + "url": "https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil-core/8.5.12/fastutil-core-8.5.12.jar", "hash": "sha256-8xwg9bBjEvPV4G5hYKMuJ02BmqbOvydSiya2tcDB3xk=" }, "fastutil-core-8.5.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil-core/8.5.12/fastutil-core-8.5.12.pom" - ], + "url": "https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil-core/8.5.12/fastutil-core-8.5.12.pom", "hash": "sha256-g5JDu+YWEfk3uwtdmzHQyOCWx9DWeZIs9u05+Cxu4NI=" } }, "jakarta.platform:jakarta.jakartaee-bom:9.0.0": { "jakarta.jakartaee-bom-9.0.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/jakarta/platform/jakarta.jakartaee-bom/9.0.0/jakarta.jakartaee-bom-9.0.0.pom" - ], + "url": "https://plugins.gradle.org/m2/jakarta/platform/jakarta.jakartaee-bom/9.0.0/jakarta.jakartaee-bom-9.0.0.pom", "hash": "sha256-kZA9Ddh23sZ/i5I/EzK6cr8pWwa9OX0Y868ZMHzhos4=" } }, "jakarta.platform:jakartaee-api-parent:9.0.0": { "jakartaee-api-parent-9.0.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/jakarta/platform/jakartaee-api-parent/9.0.0/jakartaee-api-parent-9.0.0.pom" - ], + "url": "https://plugins.gradle.org/m2/jakarta/platform/jakartaee-api-parent/9.0.0/jakartaee-api-parent-9.0.0.pom", "hash": "sha256-9l3PFLbh2RSOGYo5D6/hVfrKCTJT3ekAMH8+DqgsrTs=" } }, "net.bytebuddy:byte-buddy:1.10.9": { "byte-buddy-1.10.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.jar" - ], + "url": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.jar", "hash": "sha256-B7nKbi+XDLA/SyVlHfHy/OJx1JG0TgQJgniHeG9pLU0=" }, "byte-buddy-1.10.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.pom", "hash": "sha256-QIgdSUiocRWTRicPNpRbwpAlV3xstX9qXdDHwiIGnaw=" } }, "net.bytebuddy:byte-buddy-agent:1.10.9": { "byte-buddy-agent-1.10.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.jar" - ], + "url": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.jar", "hash": "sha256-+9BS0tTNFvcHVHxGhiHGt/uELH7Ihm0BLsvGF43h85Q=" }, "byte-buddy-agent-1.10.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.pom", "hash": "sha256-GZB0lfvBwjFsjrrXbwe5bRAf6xp+PAm/4VJv0/xu7J0=" } }, "net.bytebuddy:byte-buddy-parent:1.10.9": { "byte-buddy-parent-1.10.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.10.9/byte-buddy-parent-1.10.9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.10.9/byte-buddy-parent-1.10.9.pom", "hash": "sha256-k9nTgHec0XaMUrS87oLL+u3vmkow3oeuBrRB4WNP04w=" } }, "net.java.dev.jna:jna:5.14.0": { "jna-5.14.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar", "hash": "sha256-NO0eHyf6iWvKUNvE6ZzzcylnzsOHp6DV40hsCWc/6MY=" }, "jna-5.14.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.14.0/jna-5.14.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.14.0/jna-5.14.0.pom", "hash": "sha256-4E4llRUB3yWtx7Hc22xTNzyUiXuE0+FJISknY+4Hrj0=" } }, "net.java.dev.jna:jna:5.9.0": { "jna-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar", "hash": "sha256-6vzHgLRFQ008Wuf6L7ZmXeGnVg1TfSxAio6AzRTScWE=" }, "jna-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.pom", "hash": "sha256-a8i4RZFQtZ6VmPPa2a0kWh7yFQ0IJYEBcYTrFj5ZKCk=" } }, "net.java.dev.jna:jna-platform:5.9.0": { "jna-platform-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.jar", "hash": "sha256-GQO8bYfzq5ICOVe5H0WpyOs1FbrQMDVs6XcgHlFBtyQ=" }, "jna-platform-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.pom", "hash": "sha256-C9pdmOS+kmHwnN+u5vokWYh5CDTX/K3I4v3ZPH1kGCU=" } }, "org.apache:apache:27": { "apache-27.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/27/apache-27.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/apache/27/apache-27.pom", "hash": "sha256-srD8aeIqZQw4kvHDZtdwdvKVdcZzjfTHpwpEhESEzfk=" } }, "org.apache:apache:23": { "apache-23.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/23/apache-23.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/apache/23/apache-23.pom", "hash": "sha256-vBBiTgYj82V3+sVjnKKTbTJA7RUvttjVM6tNJwVDSRw=" } }, "org.apache:apache:21": { "apache-21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom", "hash": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A=" } }, "org.apache.ant:ant:1.10.13": { "ant-1.10.13.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.jar" - ], + "url": "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.jar", "hash": "sha256-vvv8eedE6Yks+n25bfO26C3BfSVxr0KqQnl2/CIpmDg=" }, "ant-1.10.13.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.pom", "hash": "sha256-J5NR7tkLj3QbtIyVvmHD7CRU48ipr7Q7zB0LrB3aE3o=" } }, "org.apache.ant:ant-launcher:1.10.13": { "ant-launcher-1.10.13.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.jar" - ], + "url": "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.jar", "hash": "sha256-zXaVs7+2lkq3G2oLMdrWAAWud/5QITI2Rnmqzwj3eXA=" }, "ant-launcher-1.10.13.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.pom", "hash": "sha256-ApkvvDgFU1bzyU0B6qJJmcsCoJuqnB/fXqx2t8MVY8o=" } }, "org.apache.ant:ant-parent:1.10.13": { "ant-parent-1.10.13.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-parent/1.10.13/ant-parent-1.10.13.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/ant/ant-parent/1.10.13/ant-parent-1.10.13.pom", "hash": "sha256-blv8hwgiFD8f+7LG8I7EiHctsxSlKDMC9IFLEms0aTk=" } }, "org.apache.commons:commons-parent:52": { "commons-parent-52.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/52/commons-parent-52.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/52/commons-parent-52.pom", "hash": "sha256-ddvo806Y5MP/QtquSi+etMvNO18QR9VEYKzpBtu0UC4=" } }, "org.apache.logging:logging-parent:7": { "logging-parent-7.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/logging-parent/7/logging-parent-7.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/logging/logging-parent/7/logging-parent-7.pom", "hash": "sha256-5YkR3J/GsXOhDlqp7bk8eZStBmAnBd0Gftz8bh6eFys=" } }, "org.apache.logging.log4j:log4j:2.20.0": { "log4j-2.20.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j/2.20.0/log4j-2.20.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j/2.20.0/log4j-2.20.0.pom", "hash": "sha256-mje0qPZ+jUG8JHNxejAhYz1qPD8xBXnbmtC+PyRlnGk=" } }, "org.apache.logging.log4j:log4j-api:2.20.0": { "log4j-api-2.20.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.jar" - ], + "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.jar", "hash": "sha256-L0PupnnqZvFMoPE/7CqGAKwST1pSMdy034OT7dy5dVA=" }, "log4j-api-2.20.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.pom", "hash": "sha256-zUWDKj1s0hlENcDWPKAV8ZSWjy++pPKRVTv3r7hOFjc=" } }, "org.apache.logging.log4j:log4j-bom:2.20.0": { "log4j-bom-2.20.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-bom/2.20.0/log4j-bom-2.20.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-bom/2.20.0/log4j-bom-2.20.0.pom", "hash": "sha256-+LtpLpWmt72mAehxAJWOg9AGG38SMlC2gSiUOhlenaE=" } }, "org.apache.logging.log4j:log4j-core:2.20.0": { "log4j-core-2.20.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.jar" - ], + "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.jar", "hash": "sha256-YTffhIza7Z9NUHb3VRPGyF2oC5U/TnrMo4CYt3B2P1U=" }, "log4j-core-2.20.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.pom", "hash": "sha256-3nGsEAVR9KB3rsrQd70VPnHfeqacMELXZRbMXM4Ice4=" } }, "org.apache.maven:maven:3.6.3": { "maven-3.6.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven/3.6.3/maven-3.6.3.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/maven/maven/3.6.3/maven-3.6.3.pom", "hash": "sha256-0thiRepmFJvBTS3XK7uWH5ZN1li4CaBXMlLAZTHu7BY=" } }, "org.apache.maven:maven-model:3.6.3": { "maven-model-3.6.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" - ], + "url": "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar", "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" }, "maven-model-3.6.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom", "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" } }, "org.apache.maven:maven-parent:33": { "maven-parent-33.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-parent/33/maven-parent-33.pom" - ], + "url": "https://plugins.gradle.org/m2/org/apache/maven/maven-parent/33/maven-parent-33.pom", "hash": "sha256-OFbj/NFpUC1fEv4kUmBOv2x8Al8VZWv6VY6pntKdc+o=" } }, "org.apiguardian:apiguardian-api:1.1.2": { "apiguardian-api-1.1.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", "hash": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=" }, "apiguardian-api-1.1.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.module", "hash": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=" }, "apiguardian-api-1.1.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.pom", "hash": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA=" } }, "org.codehaus.groovy:groovy-bom:3.0.14": { "groovy-bom-3.0.14.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/groovy/groovy-bom/3.0.14/groovy-bom-3.0.14.pom" - ], + "url": "https://plugins.gradle.org/m2/org/codehaus/groovy/groovy-bom/3.0.14/groovy-bom-3.0.14.pom", "hash": "sha256-JODptzjecRjennNWD/0GA0u1zwfKE6fgNFnoi6nRric=" } }, "org.codehaus.plexus:plexus:10": { "plexus-10.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus/10/plexus-10.pom" - ], + "url": "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus/10/plexus-10.pom", "hash": "sha256-u6nFIQZLnKEyzpfMHMfrSvwtvjK8iMuHLIjpn2FiMB8=" } }, "org.codehaus.plexus:plexus-utils:3.5.1": { "plexus-utils-3.5.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar" - ], + "url": "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar", "hash": "sha256-huAlXUyHnGG0gz7X8TEk6LtnnfR967EnMm59t91JoHs=" }, "plexus-utils-3.5.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.pom" - ], + "url": "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.pom", "hash": "sha256-lP9o7etIIE0SyZGJx2cWTTqfd4oTctHc4RpBRi5iNvI=" } }, "org.eclipse.ee4j:project:1.0.6": { "project-1.0.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/ee4j/project/1.0.6/project-1.0.6.pom" - ], + "url": "https://plugins.gradle.org/m2/org/eclipse/ee4j/project/1.0.6/project-1.0.6.pom", "hash": "sha256-Tn2DKdjafc8wd52CQkG+FF8nEIky9aWiTrkHZ3vI1y0=" } }, "org.eclipse.jetty:jetty-bom:9.4.50.v20221201": { "jetty-bom-9.4.50.v20221201.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jetty/jetty-bom/9.4.50.v20221201/jetty-bom-9.4.50.v20221201.pom" - ], + "url": "https://plugins.gradle.org/m2/org/eclipse/jetty/jetty-bom/9.4.50.v20221201/jetty-bom-9.4.50.v20221201.pom", "hash": "sha256-TN5uUz1gHq+LZazulWt3BsGBkvJ1XQI9fo0Zu31bOUM=" } }, "org.eclipse.jetty:jetty-parent:21": { "jetty-parent-21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-parent/21/jetty-parent-21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-parent/21/jetty-parent-21.pom", "hash": "sha256-eXLp7G84UqjuHuXU0Q3Mnc1gd7El+TWqlrNnpsgjN/U=" } }, "org.eclipse.jetty.alpn:alpn-api:1.1.3.v20160715": { "alpn-api-1.1.3.v20160715.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.jar", "hash": "sha256-B76ZdYtpnhlPcPuXhNlCAtxsmCEod4KePXKwIPJmBXY=" }, "alpn-api-1.1.3.v20160715.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.pom", "hash": "sha256-FrRveqUg7VDUR4oM9ndjje3AFDtCNMJ48WDLS9JUgq8=" } }, "org.fusesource:fusesource-pom:1.12": { "fusesource-pom-1.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/fusesource/fusesource-pom/1.12/fusesource-pom-1.12.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/fusesource/fusesource-pom/1.12/fusesource-pom-1.12.pom", "hash": "sha256-xA2WDarc73sBwbHGZXr7rE//teUxaPj8sLKLhOb9zKE=" } }, "org.fusesource.jansi:jansi:2.4.1": { "jansi-2.4.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.jar", "hash": "sha256-Ll53Wp3Fj/prvWqm8JnWL4ti3N60w8O7vlzyMBvC3ME=" }, "jansi-2.4.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.pom", "hash": "sha256-P5jZeaTTVZ+HefuwBLNK51Fq+t9RDhHffMPNBz6xuzs=" } }, "org.gradle:gradle-tooling-api:8.7": { "gradle-tooling-api-8.7.jar": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.jar" - ], + "url": "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.jar", "hash": "sha256-UjAREw062qfdwR14e/363TmgBDIAzGd7cJtPrATLhrM=" }, "gradle-tooling-api-8.7.module": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.module" - ], + "url": "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.module", "hash": "sha256-c08g/Bo2leG74FuBK7m7un/wNzQ8lCp5THbpiBdpNCg=" }, "gradle-tooling-api-8.7.pom": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.pom", - "https://repo.maven.apache.org/maven2/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.pom" - ], + "url": "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.pom", "hash": "sha256-Js9ia+mlUYCUZg1Vkot+NEGrQxuSkHTHc7+fL3V28/s=" } }, "org.jdom:jdom2:2.0.6.1": { "jdom2-2.0.6.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.jar", "hash": "sha256-CyD0XjoP2PDRLNxTFrBndukCsTZdsAEYh2+RdcYPMCw=" }, "jdom2-2.0.6.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.pom", "hash": "sha256-VXleEBi4rmR7k3lnz4EKmbCFgsI3TnhzwShzTIyRS/M=" } }, "org.jetbrains:annotations:23.0.0": { "annotations-23.0.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.jar", "hash": "sha256-ew8ZckCCy/y8ZuWr6iubySzwih6hHhkZM+1DgB6zzQU=" }, "annotations-23.0.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom", "hash": "sha256-yUkPZVEyMo3yz7z990P1P8ORbWwdEENxdabKbjpndxw=" } }, "org.jetbrains:annotations:13.0": { "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar", "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" }, "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom", "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" } }, "org.jetbrains:markdown:0.7.0": { "markdown-0.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.jar", "hash": "sha256-CyFbRlFaxzcfaK2efq6i+Pkr6R83v70DsAjLVvFnUCE=" }, "markdown-0.7.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.module", "hash": "sha256-fRDYKtUAs+iccbTS3Byl1L3Xq/BIcostrtWzsPuVxzs=" }, "markdown-0.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.pom", "hash": "sha256-AplTmbCmzpt9dfH4f1yR1QwUg+m0oSH2a0ZAcsVIVVU=" } }, "org.jetbrains:markdown-jvm:0.7.0": { "markdown-jvm-0.7.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.7.0/markdown-jvm-0.7.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.7.0/markdown-jvm-0.7.0.jar", "hash": "sha256-yLRL4zhZiRLou4pJmLAX333RmBUszv/vAc8SipkAE54=" }, "markdown-jvm-0.7.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.7.0/markdown-jvm-0.7.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.7.0/markdown-jvm-0.7.0.module", "hash": "sha256-PL1M+XdGeY3ODzCIf/TgGig9DvoO5m3en/CvARrLdAU=" }, "markdown-jvm-0.7.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.7.0/markdown-jvm-0.7.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.7.0/markdown-jvm-0.7.0.pom", "hash": "sha256-0VsK0umlc/l87P+p7UDP5TTV/HazLigPhd0C/lVIn84=" } }, "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" }, "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } }, "org.jetbrains.kotlin:kotlin-android-extensions:1.9.22": { "kotlin-android-extensions-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar", "hash": "sha256-Hl6IFkKpnduPbRPmmVoIwZK8OEGHOWZj2ER8CB2H4k8=" }, "kotlin-android-extensions-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom", "hash": "sha256-lEt8+zPgpvtoRVkEjwKMuWMmyTKiRdXLAhQ7zSwDEVk=" } }, "org.jetbrains.kotlin:kotlin-build-common:1.9.22": { "kotlin-build-common-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar", "hash": "sha256-U8PcxTA/WQPmJgrqc+zMaTD5o276KhHNO9On5V32OWY=" }, "kotlin-build-common-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom", "hash": "sha256-KXxfSYoHdIPvic06cQzSt/LlrjgPOjrt+5xBvGI7E0A=" } }, "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22": { "kotlin-build-tools-api-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar", "hash": "sha256-3UnLfij08zgvUlDPsFyGT9XwqW0yZbspPHezCtzJP/Y=" }, "kotlin-build-tools-api-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom", "hash": "sha256-DFZLu4fcXs32Q005buob886Xar8IgYCN0Wb6SbBGSfs=" } }, "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22": { "kotlin-build-tools-impl-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar", "hash": "sha256-G0jW3gQqUl9jtVdROuEmbWmTSCJbAT+UDjLGPeJolCg=" }, "kotlin-build-tools-impl-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom", "hash": "sha256-tWM/E0m+lcdHRuHimiqm51LoneGrmmUjSS85j6aVWN0=" } }, "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22": { "kotlin-compiler-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar", "hash": "sha256-K/6t7lmrGYjDNtvW5l2ZH3Zq4d2Gg/Km3tX6oCefDKA=" }, "kotlin-compiler-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom", "hash": "sha256-s9o0u29ClqzzoPRDRm8FBsbJnaXNliTW4LdFsiKHhOs=" } }, "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22": { "kotlin-compiler-runner-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar", "hash": "sha256-c+x1u5nr/6iySiSjuFPz9mCWvEapNRrw2sk967acFes=" }, "kotlin-compiler-runner-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom", "hash": "sha256-pO6KZ8HW8lODjAAnKAvLgFCsDc3MrZdIlhOKaaAX6wE=" } }, "org.jetbrains.kotlin:kotlin-daemon-client:1.9.22": { "kotlin-daemon-client-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar", "hash": "sha256-XXPhgVsRZ+Sv4gjwCyp1wIC8WoEHhsqtuOFHh1k6k7k=" }, "kotlin-daemon-client-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom", "hash": "sha256-YsRKZZ2lXbb7El4pKbmNUEow4fSvgU4I5JIUJqpST4o=" } }, "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22": { "kotlin-daemon-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar", "hash": "sha256-kqV4ExcUR9U0Rh+hP+N9yM07f4bYPpsfe7GwvjBUH4s=" }, "kotlin-daemon-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom", "hash": "sha256-9uo9z2v7Og0GmER8SKa88I2Oqs+D/JX+nUGBpeXjwrE=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22": { "kotlin-gradle-plugin-1.9.22-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar", "hash": "sha256-1OcY3V8wxrqTLZPM/FswFendPkQUOgUrh3Ao8frlQtw=" }, "kotlin-gradle-plugin-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module", "hash": "sha256-pPRqwMq9jVzbaJ0tN9GdWFhPcIv59k/+TpgKL/dTS7U=" }, "kotlin-gradle-plugin-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom", "hash": "sha256-A3750tSupA9JKdglE1g+STwOBRVuDaix1/Ujurhobyc=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22": { "kotlin-gradle-plugin-annotations-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar", "hash": "sha256-lnaDy5jZkQFFYH+/W0VilbQ/Cq+Tsbunv2mS5zHLJOw=" }, "kotlin-gradle-plugin-annotations-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom", "hash": "sha256-Y7por+B4/3D3CPnpecaTxFv+iQQfeWQbC4H2tKEm7rs=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22": { "kotlin-gradle-plugin-api-1.9.22-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar", "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" }, "kotlin-gradle-plugin-api-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar", "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" }, "kotlin-gradle-plugin-api-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module", "hash": "sha256-H0SJxTBPmlEqVof/zAqvCTCvydcgUdOpBfrAcANi+3s=" }, "kotlin-gradle-plugin-api-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom", "hash": "sha256-ZAFewaGutVCqGCjCQuIoODDFD2g2TkCDH+FYj9wEEfU=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22": { "kotlin-gradle-plugin-idea-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar", "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" }, "kotlin-gradle-plugin-idea-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module", "hash": "sha256-z+LCbjMPaAMsAD+lJMAx5aYPzo2Jn/8uQjFBKL60QCs=" }, "kotlin-gradle-plugin-idea-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom", "hash": "sha256-3BSjKHVDun5QRs1OCVAtJ4hMqYfshwb1+xid54luOsw=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22": { "kotlin-gradle-plugin-idea-proto-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar", "hash": "sha256-9dgu5hlmotmK364Z8k1hcwIsFUBIls3yNjQANe5owPU=" }, "kotlin-gradle-plugin-idea-proto-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom", "hash": "sha256-huMsqCkn2ogKHPNDpA7MIJgHXm/XInOzTVDfpUTzRjs=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22": { "kotlin-gradle-plugin-model-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar", "hash": "sha256-UQj61b4UmCXs46ABA8PCHPGv6VS7ZLhweJVyk511OMs=" }, "kotlin-gradle-plugin-model-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module", "hash": "sha256-L/MBPfK6epteiwBOhIF1DI0PqVOtAHoZbYXSY2cdvq4=" }, "kotlin-gradle-plugin-model-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom", "hash": "sha256-gfUmlHml2X7oeSpITIMr495DgggSZxlhUAHKyI5C9qg=" } }, "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22": { "kotlin-gradle-plugins-bom-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module", "hash": "sha256-Qj401h0iCxoN3BgUCGqM6rTa2ed5ArDOjLRyG789xu0=" }, "kotlin-gradle-plugins-bom-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom", "hash": "sha256-da2/XHjOJHwiuvNijQs/8c9+19N9YB66cwTXerdb3Z8=" } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22": { "kotlin-klib-commonizer-api-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar", "hash": "sha256-jC9lQpwYLi5KLgnLkQ5iuW227tKFWUuPga+CO35ZROI=" }, "kotlin-klib-commonizer-api-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom", "hash": "sha256-EMrJcNMAo0icM/CzBBVv8DLZWVm+WqrDuIAoKtWGIv4=" } }, "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22": { "kotlin-klib-commonizer-embeddable-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar", "hash": "sha256-c/50PnTSEoPTg9C6voX9CMRCr8GnvYgIL42gUQ0FPUs=" }, "kotlin-klib-commonizer-embeddable-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom", "hash": "sha256-dxghItppe2YqSRPX3Z/mu68ATOhH/YZ9oj6v8MTIJEs=" } }, "org.jetbrains.kotlin:kotlin-native-utils:1.9.22": { "kotlin-native-utils-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar", "hash": "sha256-eGwSfdVTXbLDmuWXzQsMrZ6RS4PiNvHbAlEjXMnGUqw=" }, "kotlin-native-utils-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom", "hash": "sha256-EcUUwF7qOuno4Wq0l5bxEd9DxzSCMeNfr0xCjMT3Q+o=" } }, "org.jetbrains.kotlin:kotlin-project-model:1.9.22": { "kotlin-project-model-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar", "hash": "sha256-zBHVwLGQnFsKCP0l7w51T/0r9Wyu9mX7eFEiI15UKhg=" }, "kotlin-project-model-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom", "hash": "sha256-659KFngb/ADM7IAw++XuIo5vKydxxQwmezIY/rAGW0A=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.9.23": { "kotlin-reflect-1.9.23.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.jar", "hash": "sha256-dHwpJ6Yjtuu3NLRl1qJoYukg3dGCjvQ3Foh8CEmjEx8=" }, "kotlin-reflect-1.9.23.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.pom", "hash": "sha256-WXD72CdKWAyk6I/nhkeMR8i5ufo3TFsK3ekyhFYiX2o=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.9.22": { "kotlin-reflect-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar", "hash": "sha256-d/MRyhOEgR1Rn9o4n8sSaL2qBY1gUEbg7edsA7DfPpc=" }, "kotlin-reflect-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom", "hash": "sha256-xxLjWN97kxi2j1RjlxsIhnODf8DKQoXRw4LIEC7da18=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.8.22": { "kotlin-reflect-1.8.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.jar", "hash": "sha256-ZVgl+mURIg/tDK5arU3+oqv5j9EPCud+uNr2q/zQ8Cc=" }, "kotlin-reflect-1.8.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.pom", "hash": "sha256-KeHqCKPTq0gtH9/UH76TRZEt9Gbbr6+0sS0YN8cr4yg=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.6.10": { "kotlin-reflect-1.6.10.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar", "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" }, "kotlin-reflect-1.6.10.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom", "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" } }, "org.jetbrains.kotlin:kotlin-script-runtime:1.9.22": { "kotlin-script-runtime-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar", "hash": "sha256-uAZwV59/ktRz2NWDTwsST3dVxFmP6UskQYOwKDSDRXQ=" }, "kotlin-script-runtime-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom", "hash": "sha256-/ra0ns9pEG1MEoXnH5ob2noSfO9oMC4+n9yCmKTjR5U=" } }, "org.jetbrains.kotlin:kotlin-scripting-common:1.9.22": { "kotlin-scripting-common-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar", "hash": "sha256-+lAMvwNJQ++BJvPT3GWvCf+Z3//kTFCZtPwu1b8vXcc=" }, "kotlin-scripting-common-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom", "hash": "sha256-ROURI7DCfm/ZM/wma00Nrw8GhKYq7Z/mhC6Noz8qKz8=" } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22": { "kotlin-scripting-compiler-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar", "hash": "sha256-Ij/shIMCNEmc1MeiPqHJLroSfEGzXZux1LYdJBVa6zU=" }, "kotlin-scripting-compiler-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom", "hash": "sha256-wWCPP7yyqfdSPq0zWZwurc5MgSFhqeBmufSwBa97Qxw=" } }, "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22": { "kotlin-scripting-compiler-impl-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar", "hash": "sha256-OJkYFqKH/3YkHxp35/ERZIHU6To9tjJZplfd4g5tD2U=" }, "kotlin-scripting-compiler-impl-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom", "hash": "sha256-gmccM6lXsuKoINZqaSwvzmPjvwR/HLJeb7A5HF3c8uc=" } }, "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22": { "kotlin-scripting-jvm-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar", "hash": "sha256-jRJ9dvz6BRfDbB6g4ijs4D1aRoJkKgH2R5prvccxKik=" }, "kotlin-scripting-jvm-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom", "hash": "sha256-cBJS6huo/4f8M0dqYePVxtnS3aQbqpiZTdaYDuE/vG0=" } }, "org.jetbrains.kotlin:kotlin-serialization:1.9.22": { "kotlin-serialization-1.9.22-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22-gradle82.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22-gradle82.jar", "hash": "sha256-AcrgEEPdT3sLAttWbZPHVoiwlsNAkJ9o0OSVcqvF6VQ=" }, "kotlin-serialization-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.module", "hash": "sha256-s3cuUZFg/is2t9G6MkGQYU27lLFZzmBk9M1z+RhhWiI=" }, "kotlin-serialization-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.pom", "hash": "sha256-D9yUsPEx2Ct3RpAEB0r0f/yntGfVeIn762oVSWg+rL0=" } }, "org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:1.9.22": { "kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar", "hash": "sha256-OFR9AAsWYbFLkkZxz7F6tSAL64NOOj2kJ37gkGLppQA=" }, "kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom", "hash": "sha256-i8LheiTLbQ4CMzLkjKq5e3P+MyuSdVWhGjAsb1xcPGQ=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.9.23": { "kotlin-stdlib-1.9.23-all.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23-all.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23-all.jar", "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" }, "kotlin-stdlib-1.9.23.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.jar", "hash": "sha256-iRDMI4gH2G71UMsfCxDdXtQLNaTsGlJSX3YK7ehOrTc=" }, "kotlin-stdlib-1.9.23.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.module", "hash": "sha256-UZUZOzfc2touHAqw1RLEIrKtdq81V4Q6G5w0gPTnHQ4=" }, "kotlin-stdlib-1.9.23.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.pom", "hash": "sha256-wm0n8mcQrUDiPu2f/gpkuFkejBPSI8ypDFk+5j87KKs=" } }, "org.jetbrains.kotlin:kotlin-stdlib:1.9.22": { "kotlin-stdlib-1.9.22-all.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar", "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" }, "kotlin-stdlib-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar", "hash": "sha256-ar4UbCeGQTi4dMzM/l9TTj65I8maG3tdRUlO5WlPPgo=" }, "kotlin-stdlib-1.9.22.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module", "hash": "sha256-9IIxS1B5wUVfb7DUJXp0XRAcYSTOlhUiuob53JCQHkc=" }, "kotlin-stdlib-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom", "hash": "sha256-zOLxUoXsgHijd0a1cwigVAQt1cwlQgxD9zt4V8JGjwM=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.23": { "kotlin-stdlib-common-1.9.23.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.module", "hash": "sha256-hjnwBfqZd67wjDL8jnonedoi7iYkZNcnMpiq/Ug3Fc0=" }, "kotlin-stdlib-common-1.9.23.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.pom", "hash": "sha256-OuBxRYdw47aGCafTGet5emeJ9fBAyqQUQJgJmGhb5PY=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22": { "kotlin-stdlib-common-1.9.22.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.22/kotlin-stdlib-common-1.9.22.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.22/kotlin-stdlib-common-1.9.22.module", "hash": "sha256-+Tyemr+NUtjo/Y6FGqgC7OxVEyFhxK7ufTzZJL95QkY=" }, "kotlin-stdlib-common-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.22/kotlin-stdlib-common-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.22/kotlin-stdlib-common-1.9.22.pom", "hash": "sha256-10k21oh1ZK63EOhCmLVCB/U+m88jpSrSv6IsIIZ3V2c=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.22": { "kotlin-stdlib-jdk7-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.jar", "hash": "sha256-+R8kz606dWaIo1Ep5fM1SA0OtAjxVooX9wfCifh2m90=" }, "kotlin-stdlib-jdk7-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.pom", "hash": "sha256-SHnKgQKDPIraP0bHep/6+uGXDK/AvGIfUSAbatl0zp0=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.21": { "kotlin-stdlib-jdk7-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.jar", "hash": "sha256-v+IfQkbIvKNQsYQEBv+803awXto36ypksBHeGMLKeBg=" }, "kotlin-stdlib-jdk7-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.pom", "hash": "sha256-AVFiDhh0XvJ2ECNw/GdHBPcN821kgsxBmh5S263Cg2I=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22": { "kotlin-stdlib-jdk7-1.8.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.jar", "hash": "sha256-BV9cskKH+hBhAJlae0erkhJrgegy6HX1+izwvVVpPQs=" }, "kotlin-stdlib-jdk7-1.8.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.pom", "hash": "sha256-T5WKqZPVmE+PXr7UFGVipfOp9pW2BJyfKHOBN5ytqzM=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.22": { "kotlin-stdlib-jdk8-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.jar", "hash": "sha256-RwRsPtwy/g2xo2v+PTgilYu1vkQRxbqA866JWj7CcpE=" }, "kotlin-stdlib-jdk8-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.pom", "hash": "sha256-yUBIJZxtAAdXi6r+tx74/3ut6wjy1ZQ3/DllHg+396s=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.21": { "kotlin-stdlib-jdk8-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.jar", "hash": "sha256-BwLWS6qpDlxW5GdzeCTJvjreHlFWJHPBQ60DWByVUSc=" }, "kotlin-stdlib-jdk8-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.pom", "hash": "sha256-J79Q6ETwZc0emFT8m8K9pRIrh4ZOoDBL1pW7En0AMvQ=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22": { "kotlin-stdlib-jdk8-1.8.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.jar", "hash": "sha256-QZiw6vCQpPJbb35aWVgfQxS6jJ9s0dE+6dNI5l7Y9wc=" }, "kotlin-stdlib-jdk8-1.8.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.pom", "hash": "sha256-ko8hhyF0djE8uBbUgHC8dlSqO5pa6B0/xfjCecyPjZ4=" } }, "org.jetbrains.kotlin:kotlin-tooling-core:1.9.22": { "kotlin-tooling-core-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar", "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" }, "kotlin-tooling-core-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom", "hash": "sha256-FPx/NcY15fzRvqU3q0+kQxLoQyUtUzNRnjaxJeoImyE=" } }, "org.jetbrains.kotlin:kotlin-util-io:1.9.22": { "kotlin-util-io-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar", "hash": "sha256-9telhJGjeLCDrRvq1IikheEdFgsx52wYwa1SDx0o9Gs=" }, "kotlin-util-io-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom", "hash": "sha256-ZP1qINbsBAE7ttdWJ/ZYC7c2QdlIkJ1cFmTi53MQbe4=" } }, "org.jetbrains.kotlin:kotlin-util-klib:1.9.22": { "kotlin-util-klib-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar", "hash": "sha256-pnnuL1EPOrkmkYGN5etbCQLobYjJdnTn20TcTyJSxfk=" }, "kotlin-util-klib-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom", "hash": "sha256-Dep9//Cit0CIrJlwQ8vCQINdK/9Zs5/MiwysbqPrNpc=" } }, "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.9.22": { "org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.9.22/org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.9.22/org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom", "hash": "sha256-HLTsuTPJGbL7/XZe/KX+SQeghxLoyZQsM6IIsrFpsYw=" } }, "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin:1.9.22": { "org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.22/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.22/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom", "hash": "sha256-+9WDi7OolDJys/EfhJrIlDeJL9MJstA012QjjEVPoyI=" } }, "org.jetbrains.kotlinx:atomicfu:0.23.1": { "atomicfu-0.23.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.jar", "hash": "sha256-fbhmDr5LkbtHjts2FsTjpQulnAfcpRfR4ShMA/6GrFc=" }, "atomicfu-0.23.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.module", "hash": "sha256-Pokf5ja1UQgZIQD884saObzRwlM+I8Ri/AdkTur8sg8=" }, "atomicfu-0.23.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.pom", "hash": "sha256-aIt5ABn0F87APmldZWexc7o7skGJVBZi8U/2ZEG1Pas=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1": { "kotlinx-coroutines-bom-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.1/kotlinx-coroutines-bom-1.8.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.1/kotlinx-coroutines-bom-1.8.1.pom", "hash": "sha256-Vj5Kop+o/gmm4XRtCltRMI98fe3EaNxaDKgQpIWHcDA=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0": { "kotlinx-coroutines-bom-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.0/kotlinx-coroutines-bom-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.0/kotlinx-coroutines-bom-1.8.0.pom", "hash": "sha256-Ejnp2+E5fNWXE0KVayURvDrOe2QYQuQ3KgiNz6i5rVU=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.1": { "kotlinx-coroutines-bom-1.7.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.7.1/kotlinx-coroutines-bom-1.7.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.7.1/kotlinx-coroutines-bom-1.7.1.pom", "hash": "sha256-uSWqmIxApceqDHeyE3P+sYw5QUkmvVHHbvRENPW66cI=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1": { "kotlinx-coroutines-core-1.8.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.jar", "hash": "sha256-2vUPHJQEsiSh1t1Shvjo7n1j/oB/eOqY9xeVwYO2Al8=" }, "kotlinx-coroutines-core-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.module", "hash": "sha256-CMuvMyW1Tg+O+NqF5OtZb32Ub4Q+XRYAOFRj8yaKTvA=" }, "kotlinx-coroutines-core-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.pom", "hash": "sha256-+IkY2/qHh8TRcasCVToUrR3viqmwxcLCDMmUVdMkHiI=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0": { "kotlinx-coroutines-core-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.jar", "hash": "sha256-IKpDS2qTDqZtLmGwDe764J/qPTL5ZA0uDCcTEogOCt0=" }, "kotlinx-coroutines-core-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.module", "hash": "sha256-FE7s1TZd4+MNe0YibAWAUeOZVbXBieMfpMfP+5nWILo=" }, "kotlinx-coroutines-core-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.pom", "hash": "sha256-yglaS/iLR0+trOgzLBCXC3nLgBu/XfBHo5Ov4Ql28yE=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.1": { "kotlinx-coroutines-core-jvm-1.8.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.jar", "hash": "sha256-89T13hw5G7zCDzs0Ncy6wBNSHna2kC19WWNewVwfeX4=" }, "kotlinx-coroutines-core-jvm-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.module", "hash": "sha256-CbgcnRHC3uvxM62HtweSfB8ECZy2Ee8AjHcls+swgyk=" }, "kotlinx-coroutines-core-jvm-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.pom", "hash": "sha256-R8alCxQVHo+vfzUKlSNcN9EqvDi/sFW2aJdCkxctryw=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0": { "kotlinx-coroutines-core-jvm-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.jar", "hash": "sha256-mGCQahk3SQv187BtLw4Q70UeZblbJp8i2vaKPR9QZcU=" }, "kotlinx-coroutines-core-jvm-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.module", "hash": "sha256-/2oi2kAECTh1HbCuIRd+dlF9vxJqdnlvVCZye/dsEig=" }, "kotlinx-coroutines-core-jvm-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.pom", "hash": "sha256-pWM6vVNGfOuRYi2B8umCCAh3FF4LduG3V4hxVDSIXQs=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" }, "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" }, "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.1": { "kotlinx-coroutines-debug-1.8.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.jar", "hash": "sha256-JFUwMZoX18m8ShFSb0LpV1Dkqz/IZMlA2evo9UjqGHA=" }, "kotlinx-coroutines-debug-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.module", "hash": "sha256-CA+LzOocTvqCk+0p/5z3xKfR0s3ekBzIZKz3Ly6AdXI=" }, "kotlinx-coroutines-debug-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.pom", "hash": "sha256-x9+Ci/O0+ofumYH7ATaN1NwHmV0XzLqPpmEhcTwF69Q=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.0": { "kotlinx-coroutines-debug-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.jar", "hash": "sha256-Zy1UU0UXCoyrgoeygZRL55DWdUWXK+vdVKor9MhsxT8=" }, "kotlinx-coroutines-debug-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.module", "hash": "sha256-piquUrrd+ncw5Wey6kHzYOoQqbN8FiJDqNIaWnySHGI=" }, "kotlinx-coroutines-debug-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.pom", "hash": "sha256-EZPR60nUsUgNqlrGIBctfcmZFidM2Ra+NpQVLA5vb3w=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1": { "kotlinx-coroutines-jdk8-1.8.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.jar", "hash": "sha256-2M+0w2PJHHczU7EVvUprWgRgjnkW/iNdOp2H78uZbAE=" }, "kotlinx-coroutines-jdk8-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.module", "hash": "sha256-Ifl7EL6TJkGBfTULclRP+LoyQYf/uREMbo2IESdv2TM=" }, "kotlinx-coroutines-jdk8-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.pom", "hash": "sha256-3uCuamO2M1ETIAqW2eHHgJ32DQ1CS7/xy7tTsxQWWvk=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.0": { "kotlinx-coroutines-jdk8-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.jar", "hash": "sha256-2EGf2zy6quxAfmKrFL5WQ20edrW/MyRMV2VWH8E/0Gs=" }, "kotlinx-coroutines-jdk8-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.module", "hash": "sha256-HKyxz+5adTBFR1rzCF+4DcnMzjA3VKnVIApB3/W+AOk=" }, "kotlinx-coroutines-jdk8-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.pom", "hash": "sha256-4ZIahLHW5/k6SUgCfRhUHXWjDi6KZNem5DEAMZVR8r0=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.7.1": { "kotlinx-coroutines-jdk8-1.7.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.module", "hash": "sha256-sJV+aTzxwefUrWJGqm4weV2/S/t1jB5LMv25wkQJuXM=" }, "kotlinx-coroutines-jdk8-1.7.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.pom", "hash": "sha256-x3kWU2lOpaVLnN1HCAgtv7i9apeKX0IYSxFBz7SjDnU=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1": { "kotlinx-coroutines-test-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.module", "hash": "sha256-oc7i2rKWwTt47BwGDhj+QDNKRAyKB36QzKbeclJ9jN4=" }, "kotlinx-coroutines-test-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.pom", "hash": "sha256-TyiEIOjObP+RUgyfq9bK9o0C2GtkCp8hKPh6TkZtwlg=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0": { "kotlinx-coroutines-test-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.module", "hash": "sha256-DsPHX/2ZpqLfto8wfy8vcxQckz5Yt3sQTxyMrDr9U5Q=" }, "kotlinx-coroutines-test-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.pom", "hash": "sha256-NV8/pvBjDl6ZuHxywcQ4YgKin0lpFeOHWaOK3gsGkAQ=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.1": { "kotlinx-coroutines-test-jvm-1.8.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.jar", "hash": "sha256-xO8d6zG+P4HtguzyNyIMyViGhop+xSekGFmd//FZ3ts=" }, "kotlinx-coroutines-test-jvm-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.module", "hash": "sha256-+wj8JXyQBDPS35l71sKeBJzZ979UHAt3YYDgmYJB9XY=" }, "kotlinx-coroutines-test-jvm-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.pom", "hash": "sha256-4qht+xaCAWeYuVoPAGy0tdAQRsVaAS6hs2vSAjLcVXQ=" } }, "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0": { "kotlinx-coroutines-test-jvm-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.jar", "hash": "sha256-FTXMH0MjXYVm+NW8bRwR8HBBF+TlY/Ls5+aqPmhpXyA=" }, "kotlinx-coroutines-test-jvm-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.module", "hash": "sha256-HS0Zc6L0GowMEmPmCyXneS9ji4xV18ocbQZztkvlfac=" }, "kotlinx-coroutines-test-jvm-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.pom", "hash": "sha256-BtHlPqNm5to7FxkwV1+RYnzxnkUqTnqfDeMNLwQdZFE=" } }, "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3": { "kotlinx-serialization-bom-1.6.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.3/kotlinx-serialization-bom-1.6.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.3/kotlinx-serialization-bom-1.6.3.pom", "hash": "sha256-KdaYQrt9RJviqkreakp85qpVgn0KsT0Wh0X+bZVzkzI=" } }, "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.2": { "kotlinx-serialization-bom-1.6.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.2/kotlinx-serialization-bom-1.6.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.2/kotlinx-serialization-bom-1.6.2.pom", "hash": "sha256-ew4dde6GIUmc+VQwyhL9qjL0p/kg1cMBv+lfoYfyczc=" } }, "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3": { "kotlinx-serialization-core-1.6.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.jar", "hash": "sha256-L6Ba/w8zpw2oc8CaD/ZrXVTM3BXjnnykuCYz5wx5LzQ=" }, "kotlinx-serialization-core-1.6.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.module", "hash": "sha256-Nh6eMetylhdLdAhaxJ7dhKTzkAupQxpOQM0cI952oyg=" }, "kotlinx-serialization-core-1.6.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.pom", "hash": "sha256-0tv2/BU2TIlp1qq24+zMdROZU/LMBXtzDjUmdGWztX4=" } }, "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2": { "kotlinx-serialization-core-1.6.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.module", "hash": "sha256-arz0gTrJTfA3AS4xZzaKNEUHD9+OqyHQjYhtTtnC+2c=" }, "kotlinx-serialization-core-1.6.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.pom", "hash": "sha256-BibddZLIUwKToOPoHgiBltNRh3o422hHaTY3S6ZJ+S8=" } }, "org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3": { "kotlinx-serialization-core-jvm-1.6.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.jar", "hash": "sha256-KcghqNTiXL/k8s6WzdRSb2H49OaaE1+WEqNKgdk7ZfE=" }, "kotlinx-serialization-core-jvm-1.6.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.module", "hash": "sha256-MpEE29NOS96QVhHUJ8dYTlPD+MQRg2+59pmsnbpbqmw=" }, "kotlinx-serialization-core-jvm-1.6.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.pom", "hash": "sha256-K0qolJn8AbMNHBB1lmmOCvQ0BBLVQBnFAdm6ayk7oro=" } }, "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3": { "kotlinx-serialization-json-1.6.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.jar", "hash": "sha256-jAAWiQp5q1mA3VIKWrGmc4AjwpqjtkN8SC4OX9wG2rE=" }, "kotlinx-serialization-json-1.6.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.module", "hash": "sha256-gNHYf6CmO/+Dleo5EL2oDQnw9YNQTd6o7QB7x6hrTNQ=" }, "kotlinx-serialization-json-1.6.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.pom", "hash": "sha256-KcIhdhjlMdfYMsyICupu0aj0B3PkN/WkHXC9FUaNPOM=" } }, "org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.3": { "kotlinx-serialization-json-jvm-1.6.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.jar", "hash": "sha256-0yNBebz/GIbVPWfBHspH9/PPe2PDSdFpZfbbUbfz3Zo=" }, "kotlinx-serialization-json-jvm-1.6.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.module", "hash": "sha256-InoqmtOMAQsQe8gFjNYVF32lqqhts399WNSdnJt/l9A=" }, "kotlinx-serialization-json-jvm-1.6.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.pom", "hash": "sha256-eN9n0GTTuq8a9Ohi6YFGl3YpfGyHi7e/G0Ljky9vr48=" } }, "org.junit:junit-bom:5.9.1": { "junit-bom-5.9.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.module" - ], + "url": "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.module", "hash": "sha256-kCbBZWaQ+hRa117Og2dCEaoSrYkwqRsQfC9c3s4vGxw=" }, "junit-bom-5.9.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.pom" - ], + "url": "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.pom", "hash": "sha256-sWPBz8j8H9WLRXoA1YbATEbphtdZBOnKVMA6l9ZbSWw=" } }, "org.junit:junit-bom:5.8.2": { "junit-bom-5.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.module", "hash": "sha256-QM+tmT+nDs3yr3TQxW2hSE7iIJZL6Pkyz+YyvponM/o=" }, "junit-bom-5.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom", "hash": "sha256-g2Bpyp6O48VuSDdiItopEmPxN70/0W2E/dR+/MPyhuI=" } }, "org.junit:junit-bom:5.7.2": { "junit-bom-5.7.2.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.module" - ], + "url": "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.module", "hash": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=" }, "junit-bom-5.7.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.pom" - ], + "url": "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.pom", "hash": "sha256-zRSqqGmZH4ICHFhdVw0x/zQry6WLtEIztwGTdxuWSHs=" } }, "org.junit.jupiter:junit-jupiter-api:5.8.2": { "junit-jupiter-api-5.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar", "hash": "sha256-GAjuh+D3GM1uJfO3WvwXlWrIo+3EjH6bq58Z+aeeOAE=" }, "junit-jupiter-api-5.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.module", "hash": "sha256-fpr03/9iZ6zd0VfZ4Rug1dyRszL6dLxMZZOeRReht3A=" }, "junit-jupiter-api-5.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.pom", "hash": "sha256-yb3jYieVswp3NTHoXFgy+NyKp37N0xPu4jXJg8v9Anc=" } }, "org.junit.platform:junit-platform-commons:1.8.2": { "junit-platform-commons-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar", "hash": "sha256-0uAV/KcTDnmvL0YI3FRBXksQtZLXczPey0saJ0wYUFA=" }, "junit-platform-commons-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.module", "hash": "sha256-NChH0wRv6kNVlWkttPBdXwOeDh0eIE9NV1WQJVcIJiY=" }, "junit-platform-commons-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.pom", "hash": "sha256-zoUuNMahhKpsgO6N8EcXE6dAgTQTTwjjwcPdh8a1mrc=" } }, "org.junit.platform:junit-platform-engine:1.8.2": { "junit-platform-engine-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar", "hash": "sha256-C30AD4w+jl99a4GWSZNue5k4MU6HyPmDgFIY6ldWflk=" }, "junit-platform-engine-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.module", "hash": "sha256-66d7Nu/fdaZ/RkODM4JfnkSPVQ1SHnJJ2VA1hYDuY2s=" }, "junit-platform-engine-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.pom", "hash": "sha256-AWhkMmYGDtko71qBgjAD7PrnmpqMC7/Xb0IBxsnXccU=" } }, "org.junit.platform:junit-platform-launcher:1.8.2": { "junit-platform-launcher-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar", "hash": "sha256-giFWQJ/YPmguTFGZs0YAVCmbU4oFjCxtD1ybalvbdZQ=" }, "junit-platform-launcher-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.module", "hash": "sha256-4XQA7HvnYIwfiI1yG0MAHpc2wVDUD5jIoLzalWPYyus=" }, "junit-platform-launcher-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.pom", "hash": "sha256-tfancaautzyJpud/Vtcp9LqOta/dDxD0TbRNaq25UJU=" } }, "org.junit.platform:junit-platform-suite-api:1.8.2": { "junit-platform-suite-api-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.jar", "hash": "sha256-lO80OwW4dbsuTvlKfMYuYQ4bnNeCR+Ky7EPtYYoe0Kc=" }, "junit-platform-suite-api-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.module", "hash": "sha256-kwagU4n8QNetnQsSigFEMOXRyldKGErujXhns+iRC3o=" }, "junit-platform-suite-api-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.pom", "hash": "sha256-QB/ZdNa5RmRSS+y3z4B8TUfXxXSy+vGxMeukiUn+mJg=" } }, "org.opentest4j:opentest4j:1.3.0": { "opentest4j-1.3.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar", "hash": "sha256-SOLfY2yrZWPO1k3N/4q7I1VifLI27wvzdZhoLd90Lxs=" }, "opentest4j-1.3.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.module" - ], + "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.module", "hash": "sha256-SL8dbItdyU90ZSvReQD2VN63FDUCSM9ej8onuQkMjg0=" }, "opentest4j-1.3.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.pom", "hash": "sha256-m/fP/EEPPoNywlIleN+cpW2dQ72TfjCUhwbCMqlDs1U=" } }, "org.opentest4j:opentest4j:1.2.0": { "opentest4j-1.2.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar", "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" }, "opentest4j-1.2.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom", "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" } }, "org.ow2:ow2:1.5.1": { "ow2-1.5.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/ow2/1.5.1/ow2-1.5.1.pom" - ], + "url": "https://plugins.gradle.org/m2/org/ow2/ow2/1.5.1/ow2-1.5.1.pom", "hash": "sha256-Mh3bt+5v5PU96mtM1tt0FU1r+kI5HB92OzYbn0hazwU=" } }, "org.ow2.asm:asm:9.4": { "asm-9.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.jar" - ], + "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.jar", "hash": "sha256-OdDis9xFr2Wgmwl5RXUKlKEm4FLhJPk0aEQ6HQ4V84E=" }, "asm-9.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.pom" - ], + "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.pom", "hash": "sha256-SDdR5I+y0fQ8Ya06sA/6Rm7cAzPY/C/bWibpXTKYI5Q=" } }, "org.ow2.asm:asm-commons:9.4": { "asm-commons-9.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.jar" - ], + "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.jar", "hash": "sha256-DBKKnsPzPJiVknL20WzxQke1CPWJUVdLzb0rVtYyY2Q=" }, "asm-commons-9.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.pom" - ], + "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.pom", "hash": "sha256-tCyiq8+IEXdqXdwCkPIQbX8xP4LHiw3czVzOTGOjUXk=" } }, "org.ow2.asm:asm-tree:9.4": { "asm-tree-9.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.jar" - ], + "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.jar", "hash": "sha256-xC1HnPJFZqIesgr37q7vToa9tKiGMGz3L0g7ZedbKs8=" }, "asm-tree-9.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.pom" - ], + "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.pom", "hash": "sha256-x+nvk73YqzYwMs5TgvzGTQAtbFicF1IzI2zSmOUaPBY=" } }, "org.slf4j:slf4j-api:1.7.36": { "slf4j-api-1.7.36.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar", "hash": "sha256-0+9XXj5JeWeNwBvx3M5RAhSTtNEft/G+itmCh3wWocA=" }, "slf4j-api-1.7.36.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.pom", "hash": "sha256-+wRqnCKUN5KLsRwtJ8i113PriiXmDL0lPZhSEN7cJoQ=" } }, "org.slf4j:slf4j-parent:1.7.36": { "slf4j-parent-1.7.36.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.36/slf4j-parent-1.7.36.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.36/slf4j-parent-1.7.36.pom", "hash": "sha256-uziNN/vN083mTDzt4hg4aTIY3EUfBAQMXfNgp47X6BI=" } }, "org.slf4j:slf4j-simple:1.7.36": { "slf4j-simple-1.7.36.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.7.36/slf4j-simple-1.7.36.jar" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.7.36/slf4j-simple-1.7.36.jar", "hash": "sha256-Lzm+2UPWJN+o9BAtBXEoOhCHC2qjbxl6ilBvFHAQwQ8=" }, "slf4j-simple-1.7.36.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.7.36/slf4j-simple-1.7.36.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.7.36/slf4j-simple-1.7.36.pom", "hash": "sha256-xWuAoKa+oqBGPnDQiSrjOKnlB+SGdnpSBFNAmBIFjRs=" } }, "org.sonatype.oss:oss-parent:9": { "oss-parent-9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom" - ], + "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom", "hash": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno=" } }, "org.sonatype.oss:oss-parent:7": { "oss-parent-7.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], + "url": "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } }, "org.springframework:spring-framework-bom:5.3.24": { "spring-framework-bom-5.3.24.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.module" - ], + "url": "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.module", "hash": "sha256-GZbh9hfLA/p26hGFD+Kh4gsOMKEEa6bV2zvbv0QRP84=" }, "spring-framework-bom-5.3.24.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.pom" - ], + "url": "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.pom", "hash": "sha256-U1ITVmu77+Jjag1OjdGnOt5hLiQwyP/TENzCo7O5ukE=" } }, "org.vafer:jdependency:2.8.0": { "jdependency-2.8.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.jar" - ], + "url": "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.jar", "hash": "sha256-v9LMfhv8eKqDtEwKVL8s3jikOC7CRyivaD2Y3GvngZI=" }, "jdependency-2.8.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.pom" - ], + "url": "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.pom", "hash": "sha256-EBhn8/npJlei74mjELYE1D0JDJuQqj4LBS3NFqO78y0=" } } diff --git a/gradle.nix b/gradle.nix index dba9916..99d1c31 100644 --- a/gradle.nix +++ b/gradle.nix @@ -119,14 +119,12 @@ let # Fetch urls using the scheme for the first entry only; there isn't a # straightforward way to tell Nix to try multiple fetchers in turn # and short-circuit on the first successful fetch. - fetch = name: { urls, hash }: + fetch = name: { url, hash }: let - first = head urls; - scheme = head (builtins.match "([a-z0-9+.-]+)://.*" first); + scheme = head (builtins.match "([a-z0-9+.-]+)://.*" url); fetch' = getAttr scheme fetchers'; - urls' = filter (hasPrefix scheme) urls; in - fetch' { urls = urls'; inherit hash; }; + fetch' { inherit url hash; }; mkModule = id: artifacts: let diff --git a/gradle2nix.nix b/gradle2nix.nix index 474d2ab..428d913 100644 --- a/gradle2nix.nix +++ b/gradle2nix.nix @@ -1,8 +1,13 @@ { lib +, callPackage , gradle -, buildGradle }: +let + buildGradle = callPackage ./gradle.nix { + inherit gradle; + }; +in buildGradle { pname = "gradle2nix"; version = "2.0.0"; diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySet.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySet.kt index 4688ea5..3c491b1 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySet.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencySet.kt @@ -1,7 +1,6 @@ package org.nixos.gradle2nix.model import java.io.Serializable -import org.nixos.gradle2nix.model.impl.DefaultRepository interface DependencySet : Serializable { val dependencies: List diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt deleted file mode 100644 index c994e69..0000000 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/Repository.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.nixos.gradle2nix.model - -import java.io.Serializable - -interface Repository : Serializable { - val id: String - val type: Type - val metadataSources: List - val metadataResources: List - val artifactResources: List - - enum class Type { - MAVEN, - IVY, - } -} diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt index d75e381..0871ac3 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/ResolvedArtifact.kt @@ -4,6 +4,6 @@ import java.io.Serializable interface ResolvedArtifact : Serializable { val name: String - val filename: String - val urls: List + val hash: String + val url: String } diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultRepository.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultRepository.kt deleted file mode 100644 index 2cbd508..0000000 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultRepository.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.nixos.gradle2nix.model.impl - -import org.nixos.gradle2nix.model.Repository - -data class DefaultRepository( - override val id: String, - override val type: Repository.Type, - override val metadataSources: List, - override val metadataResources: List, - override val artifactResources: List, -) : Repository diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedArtifact.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedArtifact.kt index 7d659b0..3d2a053 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedArtifact.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultResolvedArtifact.kt @@ -4,6 +4,6 @@ import org.nixos.gradle2nix.model.ResolvedArtifact data class DefaultResolvedArtifact( override val name: String, - override val filename: String, - override val urls: List + override val hash: String, + override val url: String, ) : ResolvedArtifact diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index c153d98..3dd678a 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -10,6 +10,7 @@ dependencies { shadow(kotlin("stdlib-jdk8")) shadow(kotlin("reflect")) implementation(project(":model")) + implementation(libs.serialization.json) testImplementation(libs.kotest.assertions) testImplementation(libs.kotest.runner) } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt index fbf4158..b22b424 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt @@ -11,17 +11,22 @@ import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry import org.nixos.gradle2nix.dependencygraph.DependencyExtractor import org.nixos.gradle2nix.forceresolve.ForceDependencyResolutionPlugin import org.nixos.gradle2nix.model.DependencySet -import org.nixos.gradle2nix.util.buildOperationAncestryTracker +import org.nixos.gradle2nix.util.artifactCachesProvider import org.nixos.gradle2nix.util.buildOperationListenerManager -import org.nixos.gradle2nix.util.service +import org.nixos.gradle2nix.util.checksumService +import org.nixos.gradle2nix.util.fileStoreAndIndexProvider abstract class Gradle2NixPlugin @Inject constructor( private val toolingModelBuilderRegistry: ToolingModelBuilderRegistry ): Plugin { + override fun apply(gradle: Gradle) { val dependencyExtractor = DependencyExtractor( - gradle.buildOperationAncestryTracker, + gradle.artifactCachesProvider, + gradle.checksumService, + gradle.fileStoreAndIndexProvider, ) + toolingModelBuilderRegistry.register(DependencySetModelBuilder(dependencyExtractor)) gradle.buildOperationListenerManager.addListener(dependencyExtractor) diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt index d7f4e17..1c62060 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt @@ -1,252 +1,115 @@ package org.nixos.gradle2nix.dependencygraph -import java.net.URI -import java.util.Collections +import java.io.File import java.util.concurrent.ConcurrentHashMap -import kotlin.jvm.optionals.getOrNull -import org.gradle.api.internal.artifacts.DownloadArtifactBuildOperationType -import org.gradle.api.internal.artifacts.configurations.ResolveConfigurationDependenciesBuildOperationType -import org.gradle.api.logging.Logging -import org.gradle.internal.operations.BuildOperationAncestryTracker +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.decodeFromStream +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider +import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider +import org.gradle.internal.hash.ChecksumService import org.gradle.internal.operations.BuildOperationDescriptor import org.gradle.internal.operations.BuildOperationListener import org.gradle.internal.operations.OperationFinishEvent import org.gradle.internal.operations.OperationIdentifier import org.gradle.internal.operations.OperationProgressEvent import org.gradle.internal.operations.OperationStartEvent +import org.gradle.internal.resource.ExternalResourceReadBuildOperationType import org.gradle.internal.resource.ExternalResourceReadMetadataBuildOperationType import org.nixos.gradle2nix.model.DependencyCoordinates import org.nixos.gradle2nix.model.DependencySet -import org.nixos.gradle2nix.model.Repository import org.nixos.gradle2nix.model.impl.DefaultDependencyCoordinates import org.nixos.gradle2nix.model.impl.DefaultDependencySet -import org.nixos.gradle2nix.model.impl.DefaultRepository import org.nixos.gradle2nix.model.impl.DefaultResolvedArtifact import org.nixos.gradle2nix.model.impl.DefaultResolvedDependency class DependencyExtractor( - private val ancestryTracker: BuildOperationAncestryTracker, + private val artifactCachesProvider: ArtifactCachesProvider, + private val checksumService: ChecksumService, + private val fileStoreAndIndexProvider: FileStoreAndIndexProvider, ) : BuildOperationListener { - // Repositories by ID - private val repositories: MutableMap = ConcurrentHashMap() + private val urls = ConcurrentHashMap() - private val thrownExceptions = Collections.synchronizedList(mutableListOf()) + override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) {} - private val artifacts: MutableMap< - OperationIdentifier, - DownloadArtifactBuildOperationType.Details - > = ConcurrentHashMap() - - private val files: MutableMap< - OperationIdentifier, - ExternalResourceReadMetadataBuildOperationType.Details - > = ConcurrentHashMap() + override fun progress(operationIdentifier: OperationIdentifier, progressEvent: OperationProgressEvent) {} - private val fileArtifacts: MutableMap = ConcurrentHashMap() + override fun finished(buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent) { + when (val details = buildOperation.details) { + is ExternalResourceReadBuildOperationType.Details -> urls.computeIfAbsent(details.location) { Unit } + is ExternalResourceReadMetadataBuildOperationType.Details -> urls.computeIfAbsent(details.location) { Unit } + else -> null + } ?: return + } fun buildDependencySet(): DependencySet { - println("DependencyExtractor: buildDependencySet (wtf)") - - val repoList = repositories.values.toList() - - val dependencies = buildMap>>>> { - for ((fileId, file) in files) { - val filename = file.location.substringAfterLast("/").substringBefore('#').substringBefore('?') - if (filename == "maven-metadata.xml") { - // Skip Maven metadata, we don't need it for the local repository - continue - } - - val artifactOperationId = fileArtifacts[fileId] - val artifact = artifactOperationId?.let { artifacts[it] } - val artifactIdentifier = artifact?.artifactIdentifier?.let(::parseArtifactIdentifier) - var coords = artifactIdentifier?.first - var name = artifactIdentifier?.second - - if (coords == null || name == null) { - val parsed = parseComponent(repoList, file.location) - if (parsed == null) { - LOGGER.info("Couldn't parse location for ${artifactIdentifier?.first?.toString() ?: name}: ${file.location}") - continue - } - coords = coords ?: parsed.first - name = name ?: parseArtifact(parsed.second, coords, file.location) - } - - getOrPut(coords) { mutableMapOf() } - .getOrPut(name) { mutableSetOf() } - .run { - val existing = find { it.first == filename } - if (existing != null) { - existing.second.add(file.location) - } else { - add(filename to mutableSetOf(file.location)) + val files = mutableMapOf>() + val mappings = mutableMapOf>() + + artifactCachesProvider.writableCacheAccessCoordinator.useCache { + for ((url, _) in urls) { + fileStoreAndIndexProvider.externalResourceIndex.lookup(url)?.let { cached -> + cached.cachedFile?.let { file -> + cachedComponentId(file)?.let { componentId -> + files.getOrPut(componentId, ::mutableMapOf)[file] = url + if (file.extension == "module") { + parseFileMappings(file)?.let { + mappings[componentId] = it + } + } } } + } } } return DefaultDependencySet( - dependencies = dependencies.map { (coords, artifacts) -> - DefaultResolvedDependency( - coords, - artifacts.flatMap { (name, files) -> - files.map { (filename, urls) -> - DefaultResolvedArtifact(name, filename, urls.toList()) + dependencies = buildList { + for ((componentId, componentFiles) in files) { + add(DefaultResolvedDependency( + componentId, + buildList { + val remoteMappings = mappings[componentId] + for ((file, url) in componentFiles) { + add(DefaultResolvedArtifact( + remoteMappings?.get(file.name) ?: file.name, + checksumService.sha256(file).toString(), + url + )) + } } - } - ) - } - ) - } - - override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) { - val id = buildOperation.id ?: return - - when (val details = buildOperation.details) { - is ResolveConfigurationDependenciesBuildOperationType.Details -> { - for (repository in details.repositories.orEmpty()) { - addRepository(repository) - } - } - - is DownloadArtifactBuildOperationType.Details -> { - artifacts[id] = details - } - - is ExternalResourceReadMetadataBuildOperationType.Details -> { - files[id] = details - - ancestryTracker.findClosestMatchingAncestor(id) { it in artifacts }.getOrNull()?.let { - fileArtifacts[id] = it + )) } } - } - } - - override fun progress(operationIdentifier: OperationIdentifier, progressEvent: OperationProgressEvent) {} - - override fun finished(buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent) {} - - private fun addRepository( - repository: ResolveConfigurationDependenciesBuildOperationType.Repository - ): DefaultRepository { - @Suppress("UNCHECKED_CAST") - val candidate = DefaultRepository( - id = repository.id, - type = enumValueOf(repository.type), - metadataSources = (repository.properties["METADATA_SOURCES"] as? List) ?: emptyList(), - metadataResources = metadataResources(repository), - artifactResources = artifactResources(repository), ) - - // Repository IDs are not unique across the entire build, unfortunately. - val existing = repositories.values.find { - it.type == candidate.type && - it.metadataSources == candidate.metadataSources && - it.metadataResources == candidate.metadataResources && - it.artifactResources == candidate.artifactResources - } - - if (existing != null) return existing - var inc = 0 - fun incId() = if (inc > 0) "${candidate.id}[$inc]" else candidate.id - while (incId() in repositories) inc++ - - val added = if (inc > 0) candidate else candidate.copy(id = incId()) - repositories[added.id] = added - return added } +} - companion object { - private val LOGGER = Logging.getLogger(DependencyExtractor::class.java) - - internal const val M2_PATTERN = - "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" - - private const val IVY_ARTIFACT_PATTERN = "[organisation]/[module]/[revision]/[type]s/[artifact](.[ext])"; - - private fun resources(urls: List, patterns: List): List { - if (urls.isEmpty()) { - return patterns - } - if (patterns.isEmpty()) { - return urls.map { it.toString() } - } - return mutableListOf().apply { - for (pattern in patterns) { - for (url in urls) { - add( - url.toString() - .removeSuffix("/") - .plus("/") - .plus(pattern.removePrefix("/")) - ) - } - } - } - } - - private fun metadataResources( - repository: ResolveConfigurationDependenciesBuildOperationType.Repository - ): List { - return when (repository.type) { - Repository.Type.MAVEN.name -> { - resources( - listOfNotNull(repository.properties["URL"] as? URI), - listOf(M2_PATTERN) - ) - } - Repository.Type.IVY.name -> { - @Suppress("UNCHECKED_CAST") - val patterns = repository.properties["IVY_PATTERNS"] as? List - ?: listOf(IVY_ARTIFACT_PATTERN) - - resources( - listOfNotNull(repository.properties["URL"] as? URI), - patterns - ) - } - else -> emptyList() - } - } - - private fun artifactResources( - repository: ResolveConfigurationDependenciesBuildOperationType.Repository - ): List { - return when (repository.type) { - Repository.Type.MAVEN.name -> { - @Suppress("UNCHECKED_CAST") - (resources( - listOfNotNull(repository.properties["URL"] as? URI) - .plus(repository.properties["ARTIFACT_URLS"] as? List ?: emptyList()), - listOf(M2_PATTERN) - )) - } - Repository.Type.IVY.name -> { - @Suppress("UNCHECKED_CAST") - val patterns = repository.properties["ARTIFACT_PATTERNS"] as? List - ?: listOf(IVY_ARTIFACT_PATTERN) - - resources( - listOfNotNull(repository.properties["URL"] as? URI), - patterns - ) - } - else -> emptyList() - } - } - - private val artifactRegex = Regex("(?\\S+) \\((?\\S+)\\)") +private fun cachedComponentId(file: File): DependencyCoordinates? { + val parts = file.invariantSeparatorsPath.split('/') + if (parts.size < 6) return null + if (parts[parts.size - 6] != "files-2.1") return null + return parts.dropLast(2).takeLast(3).joinToString(":").let(DefaultDependencyCoordinates::parse) +} - private fun parseArtifactIdentifier(input: String): Pair? { - val groups = artifactRegex.matchEntire(input)?.groups ?: return null.also { - LOGGER.warn("artifact regex didn't match $input") - } - val coords = groups["coordinates"]?.value?.let(DefaultDependencyCoordinates::parse) ?: return null - val name = groups["name"]?.value ?: return null - return coords to name +@OptIn(ExperimentalSerializationApi::class) +private fun parseFileMappings(file: File): Map? = try { + Json.decodeFromStream(file.inputStream()) + .jsonObject["variants"]?.jsonArray + ?.flatMap { it.jsonObject["files"]?.jsonArray ?: emptyList() } + ?.map { it.jsonObject } + ?.mapNotNull { + val name = it["name"]?.jsonPrimitive?.content ?: return@mapNotNull null + val url = it["url"]?.jsonPrimitive?.content ?: return@mapNotNull null + name to url } - } + ?.toMap() + ?.takeUnless { it.isEmpty() } +} catch (e: Throwable) { + null } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParser.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParser.kt deleted file mode 100644 index 1f137b2..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParser.kt +++ /dev/null @@ -1,158 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph - -import java.util.concurrent.ConcurrentHashMap -import org.nixos.gradle2nix.model.DependencyCoordinates -import org.nixos.gradle2nix.model.Repository -import org.nixos.gradle2nix.model.impl.DefaultDependencyCoordinates - - -private val partRegex = Regex("\\[(?[^]]+)]|\\((?([^)]+))\\)") - -private fun StringBuilder.appendPattern( - input: String, - seen: MutableList, -) { - var literalStart = 0 - partRegex.findAll(input).forEach { match -> - val literal = input.substring(literalStart, match.range.first) - if (literal.isNotEmpty()) { - append(Regex.escape(literal)) - } - literalStart = match.range.last + 1 - - val optionalValue = match.groups["optional"]?.value - val attrValue = match.groups["attr"]?.value - if (optionalValue != null) { - append("(") - appendPattern(optionalValue, seen) - append(")?") - } else if (attrValue != null) { - if (attrValue !in seen) { - seen.add(attrValue) - append("(?<$attrValue>[^/]+)") - } else { - append("\\k<$attrValue>") - } - } - } - val tail = input.substring(literalStart) - if (tail.isNotEmpty()) { - append(Regex.escape(input.substring(literalStart))) - } -} - -private fun String.replaceAttrs( - attrs: Map -): String { - return partRegex.replace(this) { match -> - val optionalValue = match.groups["optional"]?.value - val attrValue = match.groups["attr"]?.value - if (optionalValue != null) { - val replaced = optionalValue.replaceAttrs(attrs) - if (replaced != optionalValue) replaced else match.value - } else if (attrValue != null) { - attrs[attrValue] ?: match.value - } else { - match.value - } - } -} - - -private fun interface ArtifactMatcher { - fun match(url: String): Map? -} - -private fun regexMatcher(regex: Regex, attrs: List): ArtifactMatcher { - return ArtifactMatcher { url -> - regex.matchEntire(url)?.groups?.let { groups -> - buildMap { - for (attr in attrs) { - groups[attr]?.let { put(attr, it.value) } - } - } - } - } -} - -private fun patternMatcher(pattern: String): ArtifactMatcher { - val attrs = mutableListOf() - val exp = buildString { appendPattern(pattern, attrs) }.toRegex() - return regexMatcher(exp, attrs) -} - -private fun mavenMatcher(pattern: String): ArtifactMatcher { - val attrs = mutableListOf() - val exp = buildString { appendPattern(pattern.replaceAfterLast("/", ""), attrs) } - .replace("[^/]+", ".+") - .plus("[^/]+") - .toRegex() - return regexMatcher(exp, attrs) -} - -private val matcherCache: MutableMap = ConcurrentHashMap() - -private fun matcher( - pattern: String, -): ArtifactMatcher = matcherCache.getOrPut(pattern) { - if (pattern.endsWith(DependencyExtractor.M2_PATTERN)) mavenMatcher(pattern) else patternMatcher(pattern) -} - -fun parseComponent( - repositories: List, - url: String, -): Pair? { - for (repository in repositories) { - for (pattern in (repository.metadataResources + repository.artifactResources).distinct()) { - val matcher = matcher(pattern) - val attrs = matcher.match(url) - if (attrs != null) { - val group = attrs["organisation"]?.replace('/', '.') ?: continue - val artifact = attrs["module"] ?: continue - val revision = attrs["revision"] ?: continue - return DefaultDependencyCoordinates(group, artifact, revision) to pattern.replaceAttrs(attrs) - } - } - } - return null -} - -fun parseArtifact( - resource: String, - component: DependencyCoordinates, - url: String -): String { - val attrs = mutableListOf() - var pattern = buildString { appendPattern(resource, attrs) } - if (component.version.endsWith("-SNAPSHOT")) { - val base = component.version.substringBeforeLast("-SNAPSHOT", "") - pattern = pattern.replace("\\Q-${component.version}\\E", "\\Q-$base-\\E(?:.+)") - } - - val values = regexMatcher(pattern.toRegex(), attrs).match(url) - val artifact = values?.get("artifact") - val classifier = values?.get("classifier") - val ext = values?.get("ext") - - if (artifact == null) return artifactFromFilename( - url.substringAfterLast('/').substringBefore('#').substringBefore('?'), - component.version, - classifier - ) - - return buildString { - append("$artifact-${component.version}") - if (classifier != null) append("-$classifier") - if (ext != null) append(".$ext") - } -} - -private fun artifactFromFilename(filename: String, version: String, classifier: String?): String { - val name = filename.substringBeforeLast('.') - val extension = filename.substringAfterLast('.', "") - return buildString { - append("$name-$version") - if (classifier != null) append("-$classifier") - if (extension.isNotEmpty()) append(".$extension") - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt index 32b2503..81f5c78 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt @@ -3,16 +3,25 @@ package org.nixos.gradle2nix.util import java.lang.reflect.Method import org.gradle.api.artifacts.Configuration import org.gradle.api.internal.GradleInternal +import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider +import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider import org.gradle.api.invocation.Gradle +import org.gradle.internal.hash.ChecksumService import org.gradle.internal.operations.BuildOperationAncestryTracker import org.gradle.internal.operations.BuildOperationListenerManager -internal inline val Gradle.buildOperationAncestryTracker: BuildOperationAncestryTracker +internal inline val Gradle.artifactCachesProvider: ArtifactCachesProvider get() = service() internal inline val Gradle.buildOperationListenerManager: BuildOperationListenerManager get() = service() +internal inline val Gradle.checksumService: ChecksumService + get() = service() + +internal inline val Gradle.fileStoreAndIndexProvider: FileStoreAndIndexProvider + get() = service() + internal inline fun Gradle.service(): T = (this as GradleInternal).services.get(T::class.java) diff --git a/plugin/src/test/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParserTest.kt b/plugin/src/test/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParserTest.kt deleted file mode 100644 index f4ebe8e..0000000 --- a/plugin/src/test/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyUrlParserTest.kt +++ /dev/null @@ -1,58 +0,0 @@ -package org.nixos.gradle2nix.dependencygraph - -import io.kotest.core.spec.style.FunSpec -import io.kotest.matchers.nulls.shouldNotBeNull -import io.kotest.matchers.shouldBe -import org.nixos.gradle2nix.model.Repository -import org.nixos.gradle2nix.model.impl.DefaultDependencyCoordinates -import org.nixos.gradle2nix.model.impl.DefaultRepository - -class DependencyUrlParserTest : FunSpec({ - val mavenCentral = DefaultRepository( - "MavenRepo", - Repository.Type.MAVEN, - metadataSources = listOf("mavenPom"), - metadataResources = listOf("https://repo.maven.apache.org/maven2/${DependencyExtractor.M2_PATTERN}"), - artifactResources = listOf("https://repo.maven.apache.org/maven2/${DependencyExtractor.M2_PATTERN}") - ) - - test("parses maven url") { - val url = "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.jar" - val (coords, pattern) = parseComponent(listOf(mavenCentral), url).shouldNotBeNull() - coords shouldBe DefaultDependencyCoordinates("com.github.ajalt", "clikt-metadata", "2.8.0") - parseArtifact(pattern, coords, url) shouldBe "clikt-metadata-2.8.0.jar" - } - - test("parses maven snapshot url") { - val url = "https://repo.maven.apache.org/maven2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" - val (coords, pattern) = parseComponent(listOf(mavenCentral), url).shouldNotBeNull() - coords shouldBe DefaultDependencyCoordinates("org.apache", "test-SNAPSHOT2", "2.0.2-SNAPSHOT") - parseArtifact(pattern, coords, url) shouldBe "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" - } - - test("parses maven timestamped snapshot url") { - val url = "https://repo.maven.apache.org/maven2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar" - val (coords, pattern) = parseComponent(listOf(mavenCentral), url).shouldNotBeNull() - coords shouldBe DefaultDependencyCoordinates("org.apache", "test-SNAPSHOT1", "2.0.2-SNAPSHOT") - parseArtifact(pattern, coords, url) shouldBe "test-SNAPSHOT1-2.0.2-SNAPSHOT.jar" - } - - test("parses ivy descriptor url") { - val url = "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" - val (coords, pattern) = parseComponent( - listOf( - DefaultRepository( - "ivy", - Repository.Type.IVY, - metadataSources = listOf("ivyDescriptor"), - metadataResources = listOf("https://asset.opendof.org/ivy2/[organisation]/[module]/[revision]/ivy(.[platform]).xml"), - artifactResources = listOf("https://asset.opendof.org/artifact/[organisation]/[module]/[revision](/[platform])(/[type]s)/[artifact]-[revision](-[classifier]).[ext]") - ) - ), - url - ).shouldNotBeNull() - - coords shouldBe DefaultDependencyCoordinates("org.opendof.core-java", "dof-cipher-sms4", "1.0") - parseArtifact(pattern, coords, url) shouldBe "ivy-1.0.xml" - } -}) From 799fb3debc147a04c3af4d679afd4156f3de5a13 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 24 May 2024 14:24:41 -0700 Subject: [PATCH 14/34] Allow overriding dependencies in gradle.nix --- app/build.gradle.kts | 2 +- app/src/dist/share/gradle.nix | 290 ---------------------------------- default.nix | 10 ++ flake.lock | 15 -- flake.nix | 3 +- gradle.nix | 227 +++++++++++++++----------- gradle2nix.nix | 46 ------ 7 files changed, 146 insertions(+), 447 deletions(-) delete mode 100644 app/src/dist/share/gradle.nix delete mode 100644 gradle2nix.nix diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 896149e..91fa305 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -34,7 +34,7 @@ application { "-Dslf4j.internal.verbosity=ERROR" ) applicationDistribution - .from(configurations.named("share")) + .from(configurations.named("share"), files("../gradle.nix")) .into("share") .rename("plugin.*\\.jar", "plugin.jar") } diff --git a/app/src/dist/share/gradle.nix b/app/src/dist/share/gradle.nix deleted file mode 100644 index 99d1c31..0000000 --- a/app/src/dist/share/gradle.nix +++ /dev/null @@ -1,290 +0,0 @@ -# This file is generated by gradle2nix. -# -# Example usage (e.g. in default.nix): -# -# with (import {}); -# let -# buildGradle = callPackage ./gradle.nix {}; -# in -# buildGradle { -# lockFile = ./gradle.lock; -# -# src = ./.; -# -# gradleFlags = [ "installDist" ]; -# -# installPhase = '' -# mkdir -p $out -# cp -r app/build/install/myproject $out -# ''; -# } - -{ lib -, stdenv -, buildEnv -, fetchs3 -, fetchurl -, gradle -, maven -, runCommandLocal -, symlinkJoin -, writeText -, writeTextDir -}: - -{ - # Path to the lockfile generated by gradle2nix (e.g. gradle.lock). - lockFile -, pname ? "project" -, version ? null -, enableParallelBuilding ? true -# Arguments to Gradle used to build the project in buildPhase. -, gradleFlags ? [ "build" ] -# Enable debugging for the Gradle build; this will cause Gradle to run a debug server -# and wait for a JVM debugging client to attach. -, enableDebug ? false -# Additional code to run in the Gradle init script (init.gradle). -, extraInit ? "" -# Override the default JDK used to run Gradle itself. -, buildJdk ? null -# Override functions which fetch dependency artifacts. -# Keys in this set are URL schemes such as "https" or "s3". -# Values are functions which take a dependency in the form -# `{ urls, hash }` and fetch into the Nix store. For example: -# -# { -# s3 = { name, urls, hash }: fetchs3 { -# s3url = builtins.head urls; -# # TODO This doesn't work without patching fetchs3 to accept SRI hashes -# inherit name hash; -# region = "us-west-2"; -# credentials = { -# access_key_id = "foo"; -# secret_access_key = "bar"; -# }; -# }; -# } -, fetchers ? { } -, ... } @ args: - -let - inherit (builtins) - attrValues concatStringsSep elemAt filter fromJSON getAttr hasAttr head length match - removeAttrs replaceStrings sort; - - inherit (lib) - assertMsg concatMapStringsSep findFirst foldl' groupBy' hasSuffix hasPrefix last mapAttrs - mapAttrsToList optionalAttrs optionalString readFile removeSuffix unique versionAtLeast - versionOlder; - - inherit (lib.strings) sanitizeDerivationName; - - lockedDeps = fromJSON (readFile lockFile); - - toCoordinates = id: - let - coords = builtins.split ":" id; - in rec { - group = elemAt coords 0; - module = elemAt coords 2; - version = elemAt coords 4; - versionParts = parseVersion version; - }; - - parseVersion = version: - let - parts = builtins.split ":" version; - base = elemAt parts 0; - in - { - inherit base; - exact = base; - } - // optionalAttrs (length parts >= 2) ( - let - snapshot = elemAt parts 2; - exact = replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base; - parts = builtins.split "-" timestamp; - timestamp = findFirst (match "[0-9]{8}\.[0-9]{6}") parts; - buildNumber = let lastPart = last parts; in if match "[0-9]+" lastPart then lastPart else null; - in - { inherit snapshot exact timestamp buildNumber; } - ); - - fetchers' = { - http = fetchurl; - https = fetchurl; - } // fetchers; - - # Fetch urls using the scheme for the first entry only; there isn't a - # straightforward way to tell Nix to try multiple fetchers in turn - # and short-circuit on the first successful fetch. - fetch = name: { url, hash }: - let - scheme = head (builtins.match "([a-z0-9+.-]+)://.*" url); - fetch' = getAttr scheme fetchers'; - in - fetch' { inherit url hash; }; - - mkModule = id: artifacts: - let - coords = toCoordinates id; - modulePath = "${replaceStrings ["."] ["/"] coords.group}/${coords.module}/${coords.version}"; - in - stdenv.mkDerivation { - pname = sanitizeDerivationName "${coords.group}-${coords.module}"; - version = coords.versionParts.exact; - - srcs = mapAttrsToList fetch artifacts; - - dontPatch = true; - dontConfigure = true; - dontBuild = true; - dontFixup = true; - dontInstall = true; - - preUnpack = '' - mkdir -p "$out/${modulePath}" - ''; - - unpackCmd = '' - cp "$curSrc" "$out/${modulePath}/$(stripHash "$curSrc")" - ''; - - sourceRoot = "."; - - preferLocalBuild = true; - allowSubstitutes = false; - }; - - offlineRepo = symlinkJoin { - name = if version != null then "${pname}-${version}-gradle-repo" else "${pname}-gradle-repo"; - paths = mapAttrsToList mkModule lockedDeps; - }; - - initScript = - let - inSettings = pred: script: - optionalString pred ( - if versionAtLeast gradle.version "6.0" then '' - gradle.beforeSettings { - ${script} - } - '' else '' - gradle.settingsEvaluated { - ${script} - } - '' - ); - in - writeText "init.gradle" '' - static def offlineRepo(RepositoryHandler repositories) { - repositories.clear() - repositories.mavenLocal { - url 'file:${offlineRepo}' - metadataSources { - gradleMetadata() - mavenPom() - artifact() - } - } - } - - ${inSettings (versionAtLeast gradle.version "6.0") '' - offlineRepo(it.buildscript.repositories) - ''} - - ${inSettings true '' - offlineRepo(it.pluginManagement.repositories) - ''} - - gradle.projectsLoaded { - allprojects { - buildscript { - offlineRepo(repositories) - } - } - } - - ${if versionAtLeast gradle.version "6.8" - then '' - gradle.beforeSettings { - it.dependencyResolutionManagement { - offlineRepo(repositories) - repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) - } - } - '' - else '' - gradle.projectsLoaded { - allprojects { - offlineRepo(repositories) - } - } - '' - } - - ${extraInit} - ''; - - buildProject = flags: '' - gradle --offline --no-daemon --no-build-cache \ - --info --full-stacktrace --warning-mode=all \ - --no-configuration-cache \ - -Dmaven.repo.local=${offlineRepo} \ - ${optionalString enableParallelBuilding "--parallel"} \ - ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ - ${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \ - --init-script ${initScript} \ - ${concatStringsSep " " flags} - ''; - -in stdenv.mkDerivation ({ - - dontStrip = true; - - nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ gradle ]; - - buildPhase = args.buildPhase or '' - runHook preBuild - - ( - set -eux - - ${optionalString (versionOlder gradle.version "8.0") '' - # Work around https://github.com/gradle/gradle/issues/1055 - TMPHOME="$(mktemp -d)" - mkdir -p "$TMPHOME/init.d" - export GRADLE_USER_HOME="$TMPHOME" - cp ${initScript} $TMPHOME/ - ''} - - gradle --offline --no-daemon --no-build-cache \ - --info --full-stacktrace --warning-mode=all \ - --no-configuration-cache --console=plain \ - -Dmaven.repo.local=${offlineRepo} \ - ${optionalString enableParallelBuilding "--parallel"} \ - ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ - ${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \ - --init-script ${initScript} \ - ${concatStringsSep " " gradleFlags} - ) - - runHook postBuild - ''; - - passthru = (args.passthru or {}) // { - inherit offlineRepo; - }; - -} // (removeAttrs args [ - "nativeBuildInputs" - "passthru" - "lockFile" - "gradleFlags" - "gradle" - "enableDebug" - "extraInit" - "buildJdk" - "fetchers" -])) diff --git a/default.nix b/default.nix index 6e568fb..4a79742 100644 --- a/default.nix +++ b/default.nix @@ -33,8 +33,18 @@ let ''; passthru = { + build = buildGradle; plugin = "${gradle2nix}/share/plugin.jar"; }; + + meta = with lib; { + inherit (gradle.meta) platforms; + description = "Wrap Gradle builds with Nix"; + homepage = "https://github.com/tadfisher/gradle2nix"; + license = licenses.asl20; + maintainers = with maintainers; [ tadfisher ]; + mainProgram = "gradle2nix"; + }; }; in gradle2nix diff --git a/flake.lock b/flake.lock index cda6dde..3b7699d 100644 --- a/flake.lock +++ b/flake.lock @@ -1,19 +1,5 @@ { "nodes": { - "flake-compat": { - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "revCount": 57, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" - } - }, "flake-utils": { "inputs": { "systems": "systems" @@ -50,7 +36,6 @@ }, "root": { "inputs": { - "flake-compat": "flake-compat", "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } diff --git a/flake.nix b/flake.nix index fac545a..1ccebb5 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,6 @@ description = "Wrap Gradle builds with Nix"; inputs = { - flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"; flake-utils.url = "github:numtide/flake-utils"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small"; }; @@ -13,7 +12,7 @@ pkgs = nixpkgs.legacyPackages.${system}; in { - packages.default = pkgs.callPackage ./gradle2nix.nix {}; + packages.default = pkgs.callPackage ./default.nix {}; apps.default = { type = "app"; diff --git a/gradle.nix b/gradle.nix index 99d1c31..509a3e5 100644 --- a/gradle.nix +++ b/gradle.nix @@ -32,16 +32,20 @@ , writeTextDir }: +let defaultGradle = gradle; in + { # Path to the lockfile generated by gradle2nix (e.g. gradle.lock). - lockFile + lockFile ? null , pname ? "project" , version ? null , enableParallelBuilding ? true +# The Gradle package to use. Default is 'pkgs.gradle'. +, gradle ? defaultGradle # Arguments to Gradle used to build the project in buildPhase. , gradleFlags ? [ "build" ] -# Enable debugging for the Gradle build; this will cause Gradle to run a debug server -# and wait for a JVM debugging client to attach. +# Enable debugging for the Gradle build; this will cause Gradle to run +# a debug server and wait for a JVM debugging client to attach. , enableDebug ? false # Additional code to run in the Gradle init script (init.gradle). , extraInit ? "" @@ -65,52 +69,79 @@ # }; # } , fetchers ? { } +# Overlays for dependencies in the offline Maven repository. +# +# Acceps an attrset of dependencies (usually parsed from 'lockFile'), and produces an attrset +# containing dependencies to merge into the final set. +# +# The attrset is of the form: +# +# { +# "${group}:${module}:${version}" = ; +# # ... +# } +# +# A dependency derivation unpacks multiple source files into a single Maven-style directory named +# "${out}/${groupPath}/${module}/${version}/", where 'groupPath' is the dependency group ID with dot +# characters ('.') replaced by the path separator ('/'). +# +# Examples: +# +# 1. Add or replace a dependency with a single JAR file: +# +# (_: { +# "com.squareup.okio:okio:3.9.0" = fetchurl { +# url = "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar"; +# hash = "..."; +# downloadToTemmp = true; +# postFetch = "install -Dt $out/com/squareup/okio/okio/3.9.0/ $downloadedFile" +# }; +# }) +# +# 2. Remove a dependency entirely: +# +# # This works because the result is filtered for values that are derivations. +# (_: { +# "org.apache.log4j:core:2.23.1" = null; +# }) +, overlays ? [] , ... } @ args: let inherit (builtins) - attrValues concatStringsSep elemAt filter fromJSON getAttr hasAttr head length match - removeAttrs replaceStrings sort; + attrValues concatStringsSep elemAt filter fromJSON getAttr head length mapAttrs removeAttrs + replaceStrings; inherit (lib) - assertMsg concatMapStringsSep findFirst foldl' groupBy' hasSuffix hasPrefix last mapAttrs - mapAttrsToList optionalAttrs optionalString readFile removeSuffix unique versionAtLeast - versionOlder; + mapAttrsToList optionalString readFile versionAtLeast versionOlder; inherit (lib.strings) sanitizeDerivationName; - lockedDeps = fromJSON (readFile lockFile); - toCoordinates = id: let coords = builtins.split ":" id; + + parseVersion = version: + let + parts = builtins.split ":" version; + base = elemAt parts 0; + in + if length parts >= 2 + then + let + snapshot = elemAt parts 2; + in + replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base + else + base; + in rec { group = elemAt coords 0; module = elemAt coords 2; version = elemAt coords 4; - versionParts = parseVersion version; + uniqueVersion = parseVersion version; }; - parseVersion = version: - let - parts = builtins.split ":" version; - base = elemAt parts 0; - in - { - inherit base; - exact = base; - } - // optionalAttrs (length parts >= 2) ( - let - snapshot = elemAt parts 2; - exact = replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base; - parts = builtins.split "-" timestamp; - timestamp = findFirst (match "[0-9]{8}\.[0-9]{6}") parts; - buildNumber = let lastPart = last parts; in if match "[0-9]+" lastPart then lastPart else null; - in - { inherit snapshot exact timestamp buildNumber; } - ); - fetchers' = { http = fetchurl; https = fetchurl; @@ -133,7 +164,7 @@ let in stdenv.mkDerivation { pname = sanitizeDerivationName "${coords.group}-${coords.module}"; - version = coords.versionParts.exact; + version = coords.uniqueVersion; srcs = mapAttrsToList fetch artifacts; @@ -157,9 +188,30 @@ let allowSubstitutes = false; }; + # Intermediate dependency spec. + # + # We want to allow overriding dependencies via the 'dependencies' function, + # so we pass an intermediate set that maps each Maven coordinate to the + # derivation created with 'mkModule'. This allows users extra flexibility + # to do things like patching native libraries with patchelf or replacing + # artifacts entirely. + lockedDependencies = final: if lockFile == null then {} else + let + lockedDependencySpecs = fromJSON (readFile lockFile); + in mapAttrs mkModule lockedDependencySpecs; + + + finalDependencies = + let + composedExtension = lib.composeManyExtensions overlays; + extended = lib.extends composedExtension lockedDependencies; + fixed = lib.fix extended; + in + filter lib.isDerivation (attrValues fixed); + offlineRepo = symlinkJoin { name = if version != null then "${pname}-${version}-gradle-repo" else "${pname}-gradle-repo"; - paths = mapAttrsToList mkModule lockedDeps; + paths = finalDependencies; }; initScript = @@ -227,64 +279,53 @@ let ${extraInit} ''; - buildProject = flags: '' - gradle --offline --no-daemon --no-build-cache \ - --info --full-stacktrace --warning-mode=all \ - --no-configuration-cache \ - -Dmaven.repo.local=${offlineRepo} \ - ${optionalString enableParallelBuilding "--parallel"} \ - ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ - ${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \ - --init-script ${initScript} \ - ${concatStringsSep " " flags} - ''; - -in stdenv.mkDerivation ({ - - dontStrip = true; - - nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ gradle ]; - - buildPhase = args.buildPhase or '' - runHook preBuild - - ( - set -eux - - ${optionalString (versionOlder gradle.version "8.0") '' - # Work around https://github.com/gradle/gradle/issues/1055 - TMPHOME="$(mktemp -d)" - mkdir -p "$TMPHOME/init.d" - export GRADLE_USER_HOME="$TMPHOME" - cp ${initScript} $TMPHOME/ - ''} - - gradle --offline --no-daemon --no-build-cache \ - --info --full-stacktrace --warning-mode=all \ - --no-configuration-cache --console=plain \ - -Dmaven.repo.local=${offlineRepo} \ - ${optionalString enableParallelBuilding "--parallel"} \ - ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ - ${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \ - --init-script ${initScript} \ - ${concatStringsSep " " gradleFlags} - ) - - runHook postBuild - ''; - - passthru = (args.passthru or {}) // { - inherit offlineRepo; - }; -} // (removeAttrs args [ - "nativeBuildInputs" - "passthru" - "lockFile" - "gradleFlags" - "gradle" - "enableDebug" - "extraInit" - "buildJdk" - "fetchers" -])) + buildGradle = stdenv.mkDerivation (finalAttrs: { + + inherit buildJdk enableParallelBuilding enableDebug gradle gradleFlags pname version; + + dontStrip = true; + + nativeBuildInputs = [ finalAttrs.gradle ] + ++ lib.optional (finalAttrs.buildJdk != null) finalAttrs.buildJdk; + + buildPhase = '' + runHook preBuild + + ( + set -eux + + ${optionalString (versionOlder finalAttrs.gradle.version "8.0") '' + # Work around https://github.com/gradle/gradle/issues/1055 + TMPHOME="$(mktemp -d)" + mkdir -p "$TMPHOME/init.d" + export GRADLE_USER_HOME="$TMPHOME" + cp ${initScript} $TMPHOME/ + ''} + + gradle --offline --no-daemon --no-build-cache \ + --info --full-stacktrace --warning-mode=all \ + --no-configuration-cache --console=plain \ + -Dmaven.repo.local=${offlineRepo} \ + ${optionalString finalAttrs.enableParallelBuilding "--parallel"} \ + ${optionalString finalAttrs.enableDebug "-Dorg.gradle.debug=true"} \ + ${optionalString (finalAttrs.buildJdk != null) "-Dorg.gradle.java.home=${finalAttrs.buildJdk.home}"} \ + --init-script ${initScript} \ + ${concatStringsSep " " finalAttrs.gradleFlags} + ) + + runHook postBuild + ''; + + passthru = { + inherit offlineRepo; + }; + } // removeAttrs args [ + "lockFile" + "extraInit" + "fetchers" + "overlays" + ]); + +in +buildGradle diff --git a/gradle2nix.nix b/gradle2nix.nix deleted file mode 100644 index 428d913..0000000 --- a/gradle2nix.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ lib -, callPackage -, gradle -}: - -let - buildGradle = callPackage ./gradle.nix { - inherit gradle; - }; -in -buildGradle { - pname = "gradle2nix"; - version = "2.0.0"; - lockFile = ./gradle.lock; - - src = lib.cleanSourceWith { - filter = lib.cleanSourceFilter; - src = lib.cleanSourceWith { - filter = path: type: let baseName = builtins.baseNameOf path; in !( - (type == "directory" && ( - baseName == "build" || - baseName == ".idea" || - baseName == ".gradle" - )) || - (lib.hasSuffix ".iml" baseName) - ); - src = ./.; - }; - }; - - gradleFlags = [ "installDist" ]; - - installPhase = '' - mkdir -p $out - cp -r app/build/install/gradle2nix/* $out/ - ''; - - meta = with lib; { - inherit (gradle.meta) platforms; - description = "Wrap Gradle builds with Nix"; - homepage = "https://github.com/tadfisher/gradle2nix"; - license = licenses.asl20; - maintainers = with maintainers; [ tadfisher ]; - mainProgram = "gradle2nix"; - }; -} From f82c91be9fefd7d216fb1fda2a117086f1989729 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 24 May 2024 16:10:01 -0700 Subject: [PATCH 15/34] Allow overriding the Gradle installation --- README.org | 48 ++++++++++++------- .../org/nixos/gradle2nix/GradleRunner.kt | 7 ++- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 45 +++++++++++++---- 3 files changed, 71 insertions(+), 29 deletions(-) diff --git a/README.org b/README.org index 9803d1d..07f9b87 100644 --- a/README.org +++ b/README.org @@ -95,18 +95,25 @@ nix run github:tadfisher/gradle2nix -- --help #+begin_example Usage: gradle2nix [] []... +Gradle installation: + + Where to find Gradle. By default, use the project's wrapper. + + --gradle-dist= Gradle distribution URI + --gradle-home= Gradle home path (e.g. `nix eval nixpkgs#gradle.outPath`/lib/gradle) + --gradle-wrapper= Gradle wrapper version + Options: - -t, --tasks= Gradle tasks to run - -p, --project= Path to the project root (default: Current directory) - -o, --out-dir= Path to write generated files (default: ) - -l, --lock-file= Name of the generated lock file (default: gradle.lock) - -n, --nix-file= Name of the generated Nix file (default: gradle.nix) - -g, --gradle-version= Use a specific Gradle version - -j, --gradle-jdk= JDK home directory to use for launching Gradle (default: JAVA_HOME) - --log=(debug|info|warn|error) Print messages with this priority or higher (default: error) - --dump-events Dump Gradle event logs to the output directory - --stacktrace Print a stack trace on error - -h, --help Show this message and exit + -t, --task= Gradle tasks to run + -p, --project= Path to the project root (default: Current directory) + -o, --out-dir= Path to write generated files (default: ) + -l, --lock-file= Name of the generated lock file (default: gradle.lock) + -n, --nix-file= Name of the generated Nix file (default: gradle.nix) + -j, --gradle-jdk= JDK home to use for launching Gradle (e.g. nix eval nixpkgs#openjdk.home) + --log=(debug|info|warn|error) Print messages with this priority or higher (default: error) + --dump-events Dump Gradle event logs to the output directory + --stacktrace Print a stack trace on error + -h, --help Show this message and exit Arguments: Extra arguments to pass to Gradle @@ -137,16 +144,21 @@ gradle2nix -t :app:installDist /Note:/ This may be *required* if the build resolves configurations at execution time. -*** Specifying the Gradle version +*** Specifying the Gradle installation -By default, if the project has configured the Gradle wrapper, that -version will be detected and pinned; otherwise, the version of Gradle -installed on your system will be pinned. You can override this with -the =--gradle-version= argument, which also avoids the need to have -Gradle installed. +By default, if the project has configured the Gradle wrapper, it will +be used; otherwise, the version of Gradle used to build gradle2nix +will be used. You can override this to use any of the following: #+begin_example -gradle2nix -g 6.1 +# Gradle distribution URL: +gradle2nix --gradle-dist='https://services.gradle.org/distributions/gradle-8.7-bin.zip' + +# Path to a local Gradle installation: +gradle2nix --gradle-home=`nix eval nixpkgs#gradle.outPath`/lib/gradle + +# A specific wrapper version: +gradle2nix --gradle-wrapper=8.7 #+end_example ** Contributing diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt index 0ca87ce..fc92bb7 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt @@ -16,8 +16,11 @@ import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK fun connect(config: Config, projectDir: File = config.projectDir): ProjectConnection = GradleConnector.newConnector() .apply { - if (config.gradleVersion != null) { - useGradleVersion(config.gradleVersion) + when (val source = config.gradleSource) { + is GradleSource.Distribution -> useDistribution(source.uri) + is GradleSource.Path -> useInstallation(source.path) + GradleSource.Project -> useBuildDistribution() + is GradleSource.Wrapper -> useGradleVersion(source.version) } } .forProjectDirectory(projectDir) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index 46a48b0..b459802 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -5,26 +5,33 @@ import com.github.ajalt.clikt.core.context import com.github.ajalt.clikt.output.MordantHelpFormatter import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.arguments.multiple +import com.github.ajalt.clikt.parameters.groups.default +import com.github.ajalt.clikt.parameters.groups.mutuallyExclusiveOptions +import com.github.ajalt.clikt.parameters.groups.single +import com.github.ajalt.clikt.parameters.options.convert import com.github.ajalt.clikt.parameters.options.default import com.github.ajalt.clikt.parameters.options.defaultLazy import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.multiple import com.github.ajalt.clikt.parameters.options.option +import com.github.ajalt.clikt.parameters.options.optionalValue import com.github.ajalt.clikt.parameters.options.validate import com.github.ajalt.clikt.parameters.types.enum import com.github.ajalt.clikt.parameters.types.file import java.io.File +import java.net.URI import kotlinx.coroutines.runBlocking import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.json.encodeToStream +import org.gradle.internal.service.scopes.Scopes.Gradle import org.gradle.tooling.model.gradle.GradleBuild import org.nixos.gradle2nix.model.DependencySet data class Config( val appHome: File, val gradleHome: File, - val gradleVersion: String?, + val gradleSource: GradleSource, val gradleJdk: File?, val gradleArgs: List, val outDir: File, @@ -41,6 +48,13 @@ val JsonFormat = Json { prettyPrintIndent = " " } +sealed interface GradleSource { + data class Distribution(val uri: URI) : GradleSource + data class Path(val path: File) : GradleSource + data object Project : GradleSource + data class Wrapper(val version: String) : GradleSource +} + enum class LogLevel { debug, info, @@ -49,7 +63,7 @@ enum class LogLevel { } class Gradle2Nix : CliktCommand( - name = "gradle2nix" + name = "gradle2nix", ) { private val tasks: List by option( "--task", "-t", @@ -88,16 +102,29 @@ class Gradle2Nix : CliktCommand( help = "Name of the generated Nix file" ).default("gradle.nix") - private val gradleVersion: String? by option( - "--gradle-version", "-g", - metavar = "VERSION", - help = "Use a specific Gradle version" - ) + private val gradleSource: GradleSource by mutuallyExclusiveOptions( + option( + "--gradle-dist", + metavar = "URI", + help = "Gradle distribution URI" + ).convert { GradleSource.Distribution(URI(it)) }, + option( + "--gradle-home", + metavar = "DIR", + help = "Gradle home path (e.g. \\`nix eval nixpkgs#gradle.outPath\\`/lib/gradle)" + ).file(mustExist = true, canBeFile = false).convert { GradleSource.Path(it) }, + option( + "--gradle-wrapper", + help = "Gradle wrapper version" + ).convert { GradleSource.Wrapper(it) }, + name = "Gradle installation", + help = "Where to find Gradle. By default, use the project's wrapper." + ).single().default(GradleSource.Project) private val gradleJdk: File? by option( "--gradle-jdk", "-j", metavar = "DIR", - help = "JDK home directory to use for launching Gradle (default: ${System.getProperty("java.home")})" + help = "JDK home to use for launching Gradle (e.g. `nix eval nixpkgs#openjdk.home`)", ).file(canBeFile = false, canBeDir = true) private val logLevel: LogLevel by option( @@ -138,7 +165,7 @@ class Gradle2Nix : CliktCommand( val config = Config( appHome, gradleHome, - gradleVersion, + gradleSource, gradleJdk, gradleArgs, outDir ?: projectDir, From bdce8389fb18a66b02e5761fa2c7a3ffad87fd85 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 24 May 2024 16:10:19 -0700 Subject: [PATCH 16/34] Rename buildGradle to buildGradlePackage --- default.nix | 6 +++--- flake.nix | 2 ++ gradle.nix | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/default.nix b/default.nix index 4a79742..e0009a4 100644 --- a/default.nix +++ b/default.nix @@ -3,9 +3,9 @@ with pkgs; let - buildGradle = callPackage ./gradle.nix {}; + buildGradlePackage = callPackage ./gradle.nix {}; - gradle2nix = buildGradle { + gradle2nix = buildGradlePackage { pname = "gradle2nix"; version = "2.0.0"; lockFile = ./gradle.lock; @@ -33,7 +33,7 @@ let ''; passthru = { - build = buildGradle; + inherit buildGradlePackage; plugin = "${gradle2nix}/share/plugin.jar"; }; diff --git a/flake.nix b/flake.nix index 1ccebb5..d8bfb58 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,8 @@ pkgs = nixpkgs.legacyPackages.${system}; in { + builders.default = pkgs.callPackage ./gradle.nix {}; + packages.default = pkgs.callPackage ./default.nix {}; apps.default = { diff --git a/gradle.nix b/gradle.nix index 509a3e5..71be006 100644 --- a/gradle.nix +++ b/gradle.nix @@ -280,7 +280,7 @@ let ''; - buildGradle = stdenv.mkDerivation (finalAttrs: { + buildGradlePackage = stdenv.mkDerivation (finalAttrs: { inherit buildJdk enableParallelBuilding enableDebug gradle gradleFlags pname version; @@ -328,4 +328,4 @@ let ]); in -buildGradle +buildGradlePackage From d13b7b0d6d1baf99c1bdf68934cc23b9092ee77b Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Wed, 29 May 2024 12:37:44 -0700 Subject: [PATCH 17/34] Apply offline repo on-demand --- gradle.nix | 93 ++++++++++++++++++++++-------------------------------- 1 file changed, 38 insertions(+), 55 deletions(-) diff --git a/gradle.nix b/gradle.nix index 71be006..e5ead69 100644 --- a/gradle.nix +++ b/gradle.nix @@ -214,71 +214,52 @@ let paths = finalDependencies; }; - initScript = - let - inSettings = pred: script: - optionalString pred ( - if versionAtLeast gradle.version "6.0" then '' - gradle.beforeSettings { - ${script} - } - '' else '' - gradle.settingsEvaluated { - ${script} - } - '' - ); - in - writeText "init.gradle" '' - static def offlineRepo(RepositoryHandler repositories) { - repositories.clear() - repositories.mavenLocal { - url 'file:${offlineRepo}' - metadataSources { + initScript = writeText "init.gradle" '' + import org.gradle.util.GradleVersion + + static boolean versionAtLeast(String version) { + return GradleVersion.current() >= GradleVersion.version(version) + } + + static void configureRepos(RepositoryHandler repositories) { + repositories.configureEach { ArtifactRepository repo -> + if (repo instanceof MavenArtifactRepository) { + repo.setArtifactUrls(new HashSet()) + repo.url 'file:${offlineRepo}' + repo.metadataSources { gradleMetadata() mavenPom() artifact() } - } - } - - ${inSettings (versionAtLeast gradle.version "6.0") '' - offlineRepo(it.buildscript.repositories) - ''} - - ${inSettings true '' - offlineRepo(it.pluginManagement.repositories) - ''} - - gradle.projectsLoaded { - allprojects { - buildscript { - offlineRepo(repositories) + } else if (repo instanceof IvyArtifactRepository) { + repo.url 'file:${offlineRepo}' + repo.layout('maven') + repo.metadataSources { + gradleMetadata() + ivyDescriptor() + artifact() } + } else if (repo instanceof UrlArtifactRepository) { + repo.url 'file:/homeless-shelter' } } + } - ${if versionAtLeast gradle.version "6.8" - then '' - gradle.beforeSettings { - it.dependencyResolutionManagement { - offlineRepo(repositories) - repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) - } - } - '' - else '' - gradle.projectsLoaded { - allprojects { - offlineRepo(repositories) - } - } - '' + beforeSettings { settings -> + configureRepos(settings.pluginManagement.repositories) + configureRepos(settings.buildscript.repositories) + if (versionAtLeast("6.8")) { + configureRepos(settings.dependencyResolutionManagement.repositories) } + } - ${extraInit} - ''; + beforeProject { project -> + configureRepos(project.buildscript.repositories) + configureRepos(project.repositories) + } + ${extraInit} + ''; buildGradlePackage = stdenv.mkDerivation (finalAttrs: { @@ -295,6 +276,8 @@ let ( set -eux + export NIX_OFFLINE_REPO='${offlineRepo}' + ${optionalString (versionOlder finalAttrs.gradle.version "8.0") '' # Work around https://github.com/gradle/gradle/issues/1055 TMPHOME="$(mktemp -d)" @@ -303,7 +286,7 @@ let cp ${initScript} $TMPHOME/ ''} - gradle --offline --no-daemon --no-build-cache \ + gradle --offline --no-daemon --no-build-cache --no-watch-fs \ --info --full-stacktrace --warning-mode=all \ --no-configuration-cache --console=plain \ -Dmaven.repo.local=${offlineRepo} \ From 301c64fa2f99d14e21281e6cef7f234e208bd2e9 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Wed, 29 May 2024 17:47:31 -0700 Subject: [PATCH 18/34] Miscellaneous cleanup --- .editorconfig | 19 + README.org | 64 +- app/build.gradle.kts | 34 +- .../org/nixos/gradle2nix/GradleRunner.kt | 132 ++-- .../kotlin/org/nixos/gradle2nix/Logger.kt | 31 +- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 185 +++-- .../kotlin/org/nixos/gradle2nix/Process.kt | 37 +- .../kotlin/org/nixos/gradle2nix/Projects.kt | 12 +- .../kotlin/org/nixos/gradle2nix/Version.kt | 134 ++-- .../kotlin/org/nixos/gradle2nix/TestUtil.kt | 101 +-- default.nix | 34 +- .../kotlin/settings.gradle.kts | 1 + .../kotlin/settings.gradle.kts | 1 + .../kotlin/buildSrc/settings.gradle.kts | 1 + .../kotlin/settings.gradle.kts | 1 + .../classifier/kotlin/settings.gradle.kts | 1 + .../maven-bom/kotlin/settings.gradle.kts | 1 + .../kotlin/settings.gradle.kts | 1 + .../snapshot/kotlin/settings.gradle.kts | 1 + .../settings-buildscript/groovy/default.nix | 14 +- .../groovy/gradle-env.nix | 448 ++++++----- .../ivy/basic/kotlin/settings.gradle.kts | 1 + .../kotlin/settings.gradle.kts | 1 + .../maven-snapshot/kotlin/settings.gradle.kts | 1 + .../s3/maven/kotlin/settings.gradle.kts | 1 + .../multi-module/kotlin/settings.gradle.kts | 2 +- flake.lock | 8 +- flake.nix | 47 +- gradle.lock | 734 +++++++----------- gradle.nix | 391 +++++----- gradle.properties | 2 +- gradle/libs.versions.toml | 4 +- .../gradle2nix/model/DependencyCoordinates.kt | 11 +- .../gradle2nix/model/PluginParameters.kt | 4 +- .../impl/DefaultDependencyCoordinates.kt | 5 +- .../model/impl/DefaultDependencySet.kt | 2 +- plugin/build.gradle.kts | 13 +- .../DependencyExtractor.kt | 130 ++-- .../org/nixos/gradle2nix/Gradle2NixPlugin.kt | 100 ++- .../org/nixos/gradle2nix/GradleExtensions.kt | 42 + .../nixos/gradle2nix/ResolveAllArtifacts.kt | 66 ++ .../AbstractResolveProjectDependenciesTask.kt | 15 - .../ForceDependencyResolutionPlugin.kt | 63 -- .../LegacyResolveProjectDependenciesTask.kt | 16 - .../ResolveProjectDependenciesTask.kt | 31 - .../nixos/gradle2nix/util/GradleExtensions.kt | 36 - 46 files changed, 1525 insertions(+), 1454 deletions(-) create mode 100644 .editorconfig rename plugin/src/main/kotlin/org/nixos/gradle2nix/{dependencygraph => }/DependencyExtractor.kt (51%) create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/GradleExtensions.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/ResolveAllArtifacts.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/AbstractResolveProjectDependenciesTask.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..697e2c3 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,19 @@ +[*.{kt,kts}] +end_of_line = lf +ij_kotlin_allow_trailing_comma = true +ij_kotlin_allow_trailing_comma_on_call_site = true +ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^ +ij_kotlin_line_break_after_multiline_when_entry = true +ij_kotlin_packages_to_use_import_on_demand = unset +indent_size = 4 +indent_style = space +insert_final_newline = true +ktlint_argument_list_wrapping_ignore_when_parameter_count_greater_or_equal_than = unset +ktlint_chain_method_rule_force_multiline_when_chain_operator_count_greater_or_equal_than = unset +ktlint_class_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 1 +ktlint_code_style = ktlint_official +ktlint_function_naming_ignore_when_annotated_with = [unset] +ktlint_function_signature_body_expression_wrapping = multiline +ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 2 +ktlint_ignore_back_ticked_identifier = false +max_line_length = 140 diff --git a/README.org b/README.org index 07f9b87..80fc3f3 100644 --- a/README.org +++ b/README.org @@ -4,6 +4,19 @@ Generate [[https://nixos.org/nix/][Nix]] expressions which build [[https://gradle.org/][Gradle]]-based projects. +** Table of contents + +#+BEGIN_QUOTE +- [[#why][Why?]] +- [[#installation][Installation]] + - [[#flake][Flake]] +- [[#usage][Usage]] + - [[#for-packagers][For packagers]] + - [[#specifying-the-gradle-installation][Specifying the Gradle installation]] +- [[#contributing][Contributing]] +- [[#license][License]] +#+END_QUOTE + ** Why? Nix is an OS-agnostic package manager, a language-agnostic build @@ -80,7 +93,25 @@ nix-env -if "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz" =gradle2nix= is not yet packaged in =nixpkgs= itself, but work is [[https://github.com/NixOS/nixpkgs/pull/77422][in progress]]. -*** Flake (experimental) +The [[./gradle.nix][buildGradlePackage]] function is provided via the +=gradle2nix.passthru.buildGradlePackage= attribute. + +#+begin_src nix +{ pkgs ? import {} }: + +let + gradle2nix = import (fetchTarball "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz") {} +in +gradle2nix.buildGradlePackage { + pname = "my-package"; + version = "1.0"; + lockFile = ./gradle.lock; + gradleFlags = [ "installDist" ]; + # ... +} +#+end_src + +*** Flake A [[./flake.nix][flake.nix]] is provided for those using [[https://nixos.wiki/wiki/Flakes][Nix flakes]]. For example, the following will build and run =gradle2nix= with the arguments provided @@ -90,6 +121,26 @@ after =--=: nix run github:tadfisher/gradle2nix -- --help #+end_example +The [[./gradle.nix][buildGradlePackage]] function is provided via the +=builders= output. + +#+begin_src nix +{ + inputs.gradle2nix.url = "github:tadfisher/gradle2nix"; + + outputs = { self, gradle2nix }: { + + packages.x86_64-linux.default = gradle2nix.builders.x86_64-linux.buildGradlePackage { + pname = "my-package"; + version = "1.0"; + lockFile = ./gradle.lock; + gradleFlags = [ "installDist" ]; + # ... + }; + }; +} +#+end_src + ** Usage #+begin_example @@ -100,7 +151,7 @@ Gradle installation: Where to find Gradle. By default, use the project's wrapper. --gradle-dist= Gradle distribution URI - --gradle-home= Gradle home path (e.g. `nix eval nixpkgs#gradle.outPath`/lib/gradle) + --gradle-home= Gradle home path (e.g. `nix eval --raw nixpkgs#gradle.outPath`/lib/gradle) --gradle-wrapper= Gradle wrapper version Options: @@ -108,9 +159,8 @@ Options: -p, --project= Path to the project root (default: Current directory) -o, --out-dir= Path to write generated files (default: ) -l, --lock-file= Name of the generated lock file (default: gradle.lock) - -n, --nix-file= Name of the generated Nix file (default: gradle.nix) - -j, --gradle-jdk= JDK home to use for launching Gradle (e.g. nix eval nixpkgs#openjdk.home) - --log=(debug|info|warn|error) Print messages with this priority or higher (default: error) + -j, --gradle-jdk= JDK home to use for launching Gradle (e.g. `nix eval --raw nixpkgs#openjdk.home`) + --log=(debug|info|warn|error) Print messages with this priority or higher (default: info) --dump-events Dump Gradle event logs to the output directory --stacktrace Print a stack trace on error -h, --help Show this message and exit @@ -169,8 +219,8 @@ Bug reports and feature requests are encouraged. Code contributions are also encouraged. Please review the test cases in the [[./fixtures][fixtures]] directory and create a new one to reproduce any fixes -or test new features. See the [[./plugin/src/compatTest/kotlin/org/nixos/gradle2nix][existing compatibility tests]] for -examples of testing with these fixtures. +or test new features. See the [[./app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt][existing tests]] +for examples of testing with these fixtures. ** License diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 91fa305..ef07f6f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -11,10 +11,8 @@ dependencies { implementation(libs.clikt) implementation(libs.gradle.toolingApi) implementation(libs.kotlinx.coroutines.core) - implementation(libs.okio) implementation(libs.serialization.json) runtimeOnly(libs.slf4j.simple) - implementation(libs.xmlutil) "share"(project(":plugin", configuration = "shadow")) { isTransitive = false @@ -29,12 +27,13 @@ dependencies { application { mainClass.set("org.nixos.gradle2nix.MainKt") applicationName = "gradle2nix" - applicationDefaultJvmArgs = listOf( - "-Dorg.nixos.gradle2nix.share=@APP_HOME@/share", - "-Dslf4j.internal.verbosity=ERROR" - ) + applicationDefaultJvmArgs = + listOf( + "-Dorg.nixos.gradle2nix.share=@APP_HOME@/share", + "-Dslf4j.internal.verbosity=ERROR", + ) applicationDistribution - .from(configurations.named("share"), files("../gradle.nix")) + .from(configurations.named("share")) .into("share") .rename("plugin.*\\.jar", "plugin.jar") } @@ -51,32 +50,31 @@ val updateGolden = providers.gradleProperty("update-golden") tasks { (run) { - dependsOn(installDist) - doFirst { - systemProperties("org.nixos.gradle2nix.share" to installDist.get().destinationDir.resolve("share")) - } + enabled = false } startScripts { doLast { unixScript.writeText( - unixScript.readText().replace("@APP_HOME@", "'\$APP_HOME'") + unixScript.readText().replace("@APP_HOME@", "'\$APP_HOME'"), ) windowsScript.writeText( - windowsScript.readText().replace("@APP_HOME@", "%APP_HOME%")) + windowsScript.readText().replace("@APP_HOME@", "%APP_HOME%"), + ) } } - withType { - notCompatibleWithConfigurationCache("huh?") - dependsOn(installDist) + // TODO Find out why this fails the configuration cache + test { + notCompatibleWithConfigurationCache("contains a Task reference") + val shareDir = layout.dir(installDist.map { it.destinationDir.resolve("share") }) doFirst { if (updateGolden.isPresent) { systemProperty("org.nixos.gradle2nix.update-golden", "") } systemProperties( - "org.nixos.gradle2nix.share" to installDist.get().destinationDir.resolve("share"), - "org.nixos.gradle2nix.m2" to "http://0.0.0.0:8989/m2" + "org.nixos.gradle2nix.share" to shareDir.get().asFile, + "org.nixos.gradle2nix.m2" to "http://0.0.0.0:8989/m2", ) } useJUnitPlatform() diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt index fc92bb7..ec82f94 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt @@ -1,9 +1,5 @@ package org.nixos.gradle2nix -import java.io.File -import kotlin.coroutines.resume -import kotlin.coroutines.resumeWithException -import kotlin.io.path.absolutePathString import kotlinx.coroutines.suspendCancellableCoroutine import org.gradle.tooling.GradleConnectionException import org.gradle.tooling.GradleConnector @@ -12,8 +8,15 @@ import org.gradle.tooling.ResultHandler import org.gradle.tooling.model.gradle.GradleBuild import org.nixos.gradle2nix.model.DependencySet import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK +import java.io.File +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException +import kotlin.io.path.absolutePathString -fun connect(config: Config, projectDir: File = config.projectDir): ProjectConnection = +fun connect( + config: Config, + projectDir: File = config.projectDir, +): ProjectConnection = GradleConnector.newConnector() .apply { when (val source = config.gradleSource) { @@ -26,70 +29,75 @@ fun connect(config: Config, projectDir: File = config.projectDir): ProjectConnec .forProjectDirectory(projectDir) .connect() -suspend fun ProjectConnection.buildModel(): GradleBuild = suspendCancellableCoroutine { continuation -> - val cancellationTokenSource = GradleConnector.newCancellationTokenSource() +suspend fun ProjectConnection.buildModel(): GradleBuild = + suspendCancellableCoroutine { continuation -> + val cancellationTokenSource = GradleConnector.newCancellationTokenSource() - continuation.invokeOnCancellation { cancellationTokenSource.cancel() } + continuation.invokeOnCancellation { cancellationTokenSource.cancel() } - action { controller -> controller.buildModel } - .withCancellationToken(cancellationTokenSource.token()) - .run(object : ResultHandler { - override fun onComplete(result: GradleBuild) { - continuation.resume(result) - } + action { controller -> controller.buildModel } + .withCancellationToken(cancellationTokenSource.token()) + .run( + object : ResultHandler { + override fun onComplete(result: GradleBuild) { + continuation.resume(result) + } - override fun onFailure(failure: GradleConnectionException) { - continuation.resumeWithException(failure) - } - }) -} + override fun onFailure(failure: GradleConnectionException) { + continuation.resumeWithException(failure) + } + }, + ) + } -suspend fun ProjectConnection.build(config: Config): DependencySet = suspendCancellableCoroutine { continuation -> - val cancellationTokenSource = GradleConnector.newCancellationTokenSource() +suspend fun ProjectConnection.build(config: Config): DependencySet = + suspendCancellableCoroutine { continuation -> + val cancellationTokenSource = GradleConnector.newCancellationTokenSource() - continuation.invokeOnCancellation { cancellationTokenSource.cancel() } + continuation.invokeOnCancellation { cancellationTokenSource.cancel() } - action { controller -> controller.getModel(DependencySet::class.java) } - .withCancellationToken(cancellationTokenSource.token()) - .apply { - if (config.tasks.isNotEmpty()) { - forTasks(*config.tasks.toTypedArray()) - } else { - forTasks(RESOLVE_ALL_TASK) - } - } - .setJavaHome(config.gradleJdk) - .addArguments(config.gradleArgs) - .addArguments( - "--no-parallel", - "--refresh-dependencies", - "--gradle-user-home=${config.gradleHome}", - "--init-script=${config.appHome}/init.gradle", - ) - .apply { - if (config.logger.stacktrace) { - addArguments("--stacktrace") + action { controller -> controller.getModel(DependencySet::class.java) } + .withCancellationToken(cancellationTokenSource.token()) + .apply { + if (config.tasks.isNotEmpty()) { + forTasks(*config.tasks.toTypedArray()) + } else { + forTasks(RESOLVE_ALL_TASK) + } } - if (config.logger.logLevel < LogLevel.error) { - setStandardOutput(System.err) - setStandardError(System.err) - } - if (config.dumpEvents) { - withSystemProperties( - mapOf( - "org.gradle.internal.operations.trace" to - config.outDir.toPath().resolve("debug").absolutePathString() + .setJavaHome(config.gradleJdk) + .addArguments(config.gradleArgs) + .addArguments( + "--refresh-dependencies", + "--gradle-user-home=${config.gradleHome}", + "--init-script=${config.appHome}/init.gradle", + ) + .apply { + if (config.logger.stacktrace) { + addArguments("--stacktrace") + } + if (config.logger.logLevel < LogLevel.ERROR) { + setStandardOutput(System.err) + setStandardError(System.err) + } + if (config.dumpEvents) { + withSystemProperties( + mapOf( + "org.gradle.internal.operations.trace" to + config.outDir.toPath().resolve("debug").absolutePathString(), + ), ) - ) - } - } - .run(object : ResultHandler { - override fun onComplete(result: DependencySet) { - continuation.resume(result) + } } + .run( + object : ResultHandler { + override fun onComplete(result: DependencySet) { + continuation.resume(result) + } - override fun onFailure(failure: GradleConnectionException) { - continuation.resumeWithException(failure) - } - }) -} + override fun onFailure(failure: GradleConnectionException) { + continuation.resumeWithException(failure) + } + }, + ) + } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt index 13d3eb1..8968abb 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt @@ -5,32 +5,43 @@ import kotlin.system.exitProcess class Logger( val out: PrintStream = System.err, - val logLevel: LogLevel = LogLevel.warn, + val logLevel: LogLevel = LogLevel.WARN, val stacktrace: Boolean = false, ) { - - fun debug(message: String, error: Throwable? = null) { - if (logLevel <= LogLevel.debug) { + fun debug( + message: String, + error: Throwable? = null, + ) { + if (logLevel <= LogLevel.DEBUG) { out.println("[DEBUG] $message") printError(error) } } - fun info(message: String, error: Throwable? = null) { - if (logLevel <= LogLevel.info) { + fun info( + message: String, + error: Throwable? = null, + ) { + if (logLevel <= LogLevel.INFO) { out.println("[INFO] $message") printError(error) } } - fun warn(message: String, error: Throwable? = null) { - if (logLevel <= LogLevel.warn) { + fun warn( + message: String, + error: Throwable? = null, + ) { + if (logLevel <= LogLevel.WARN) { out.println("[WARN] $message") printError(error) } } - fun error(message: String, error: Throwable? = null): Nothing { + fun error( + message: String, + error: Throwable? = null, + ): Nothing { out.println("[ERROR] $message") printError(error) exitProcess(1) @@ -43,6 +54,8 @@ class Logger( } operator fun component1() = ::info + operator fun component2() = ::warn + operator fun component3() = ::error } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index b459802..dcb3125 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -14,19 +14,16 @@ import com.github.ajalt.clikt.parameters.options.defaultLazy import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.multiple import com.github.ajalt.clikt.parameters.options.option -import com.github.ajalt.clikt.parameters.options.optionalValue -import com.github.ajalt.clikt.parameters.options.validate import com.github.ajalt.clikt.parameters.types.enum import com.github.ajalt.clikt.parameters.types.file -import java.io.File -import java.net.URI import kotlinx.coroutines.runBlocking import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.json.encodeToStream -import org.gradle.internal.service.scopes.Scopes.Gradle import org.gradle.tooling.model.gradle.GradleBuild import org.nixos.gradle2nix.model.DependencySet +import java.io.File +import java.net.URI data class Config( val appHome: File, @@ -38,100 +35,106 @@ data class Config( val projectDir: File, val tasks: List, val logger: Logger, - val dumpEvents: Boolean + val dumpEvents: Boolean, ) @OptIn(ExperimentalSerializationApi::class) -val JsonFormat = Json { - ignoreUnknownKeys = true - prettyPrint = true - prettyPrintIndent = " " -} +val JsonFormat = + Json { + ignoreUnknownKeys = true + prettyPrint = true + prettyPrintIndent = " " + } sealed interface GradleSource { data class Distribution(val uri: URI) : GradleSource + data class Path(val path: File) : GradleSource + data object Project : GradleSource + data class Wrapper(val version: String) : GradleSource } enum class LogLevel { - debug, - info, - warn, - error, + DEBUG, + INFO, + WARN, + ERROR, } class Gradle2Nix : CliktCommand( name = "gradle2nix", ) { private val tasks: List by option( - "--task", "-t", + "--task", + "-t", metavar = "TASK", - help = "Gradle tasks to run" + help = "Gradle tasks to run", ).multiple() private val projectDir: File by option( - "--project", "-p", - help = "Path to the project root") - .file() - .default(File("."), "Current directory") - .validate { file -> - if (!file.exists()) fail("Directory \"$file\" does not exist.") - if (file.isFile) fail("Directory \"$file\" is a file.") - if (!file.canRead()) fail("Directory \"$file\" is not readable.") - if (!file.isProjectRoot()) fail("Directory \"$file\" is not a Gradle project.") - } + "--project", + "-p", + help = "Path to the project root", + ).file( + mustExist = true, + mustBeReadable = true, + canBeFile = false, + ).convert { file -> + getProjectRoot(file) ?: fail("Could not locate project root in \"$file\" or its parents.") + }.defaultLazy("Current directory") { + File(".") + } private val outDir: File? by option( - "--out-dir", "-o", + "--out-dir", + "-o", metavar = "DIR", - help = "Path to write generated files") + help = "Path to write generated files", + ) .file(canBeFile = false, canBeDir = true) .defaultLazy("") { projectDir } internal val lockFile: String by option( - "--lock-file", "-l", + "--lock-file", + "-l", metavar = "FILENAME", - help = "Name of the generated lock file" + help = "Name of the generated lock file", ).default("gradle.lock") - private val nixFile: String by option( - "--nix-file", "-n", - metavar = "FILENAME", - help = "Name of the generated Nix file" - ).default("gradle.nix") - private val gradleSource: GradleSource by mutuallyExclusiveOptions( option( "--gradle-dist", metavar = "URI", - help = "Gradle distribution URI" + help = "Gradle distribution URI", ).convert { GradleSource.Distribution(URI(it)) }, option( "--gradle-home", metavar = "DIR", - help = "Gradle home path (e.g. \\`nix eval nixpkgs#gradle.outPath\\`/lib/gradle)" + help = "Gradle home path (e.g. \\`nix eval --raw nixpkgs#gradle.outPath\\`/lib/gradle)", ).file(mustExist = true, canBeFile = false).convert { GradleSource.Path(it) }, option( "--gradle-wrapper", - help = "Gradle wrapper version" + help = "Gradle wrapper version", ).convert { GradleSource.Wrapper(it) }, name = "Gradle installation", - help = "Where to find Gradle. By default, use the project's wrapper." + help = "Where to find Gradle. By default, use the project's wrapper.", ).single().default(GradleSource.Project) private val gradleJdk: File? by option( - "--gradle-jdk", "-j", + "--gradle-jdk", + "-j", metavar = "DIR", - help = "JDK home to use for launching Gradle (e.g. `nix eval nixpkgs#openjdk.home`)", + help = "JDK home to use for launching Gradle (e.g. \\`nix eval --raw nixpkgs#openjdk.home\\`)", ).file(canBeFile = false, canBeDir = true) private val logLevel: LogLevel by option( "--log", - help = "Print messages with this priority or higher") - .enum() - .default(LogLevel.error) + help = "Print messages with this priority or higher", + ) + .enum(key = { it.name.lowercase() }) + .default(LogLevel.INFO, "info") private val dumpEvents: Boolean by option( "--dump-events", @@ -140,12 +143,12 @@ class Gradle2Nix : CliktCommand( private val stacktrace: Boolean by option( "--stacktrace", - help = "Print a stack trace on error" + help = "Print a stack trace on error", ).flag() private val gradleArgs: List by argument( name = "ARGS", - help = "Extra arguments to pass to Gradle" + help = "Extra arguments to pass to Gradle", ).multiple() init { @@ -158,48 +161,39 @@ class Gradle2Nix : CliktCommand( override fun run() { val logger = Logger(logLevel = logLevel, stacktrace = stacktrace) - val appHome = System.getProperty("org.nixos.gradle2nix.share")?.let(::File) - ?: error("could not locate the /share directory in the gradle2nix installation: ${System.getenv("APP_HOME")}") + val appHome = + System.getProperty("org.nixos.gradle2nix.share")?.let(::File) + ?: error("Could not locate the /share directory in the gradle2nix installation: ${System.getenv("APP_HOME")}") + logger.debug("appHome=$appHome") val gradleHome = System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") - val config = Config( - appHome, - gradleHome, - gradleSource, - gradleJdk, - gradleArgs, - outDir ?: projectDir, - projectDir, - tasks, - logger, - dumpEvents - ) - - val metadata = File("$projectDir/gradle/verification-metadata.xml") - if (metadata.exists()) { - val backup = metadata.resolveSibling("verification-metadata.xml.bak") - if (metadata.renameTo(backup)) { - Runtime.getRuntime().addShutdownHook(Thread { - metadata.delete() - backup.renameTo(metadata) - }) - } else { - metadata.deleteOnExit() - } - } else { - metadata.deleteOnExit() - } - - val buildSrcs = connect(config).use { connection -> - val root = runBlocking { connection.buildModel() } - val builds: List = buildList { - add(root) - addAll(root.editableBuilds) + logger.debug("gradleHome=$gradleHome") + val config = + Config( + appHome, + gradleHome, + gradleSource, + gradleJdk, + gradleArgs, + outDir ?: projectDir, + projectDir, + tasks, + logger, + dumpEvents, + ) + + val buildSrcs = + connect(config).use { connection -> + val root = runBlocking { connection.buildModel() } + val builds: List = + buildList { + add(root) + addAll(root.editableBuilds) + } + builds.mapNotNull { build -> + build.rootProject.projectDirectory.resolve("buildSrc").takeIf { it.exists() } + } } - builds.mapNotNull { build -> - build.rootProject.projectDirectory.resolve("buildSrc").takeIf { it.exists() } - } - } val dependencySets = mutableListOf() @@ -213,11 +207,12 @@ class Gradle2Nix : CliktCommand( } } - val env = try { - processDependencies(config, dependencySets) - } catch (e: Throwable) { - logger.error("dependency parsing failed", e) - } + val env = + try { + processDependencies(config, dependencySets) + } catch (e: Throwable) { + logger.error("Dependency parsing failed", e) + } config.outDir.mkdirs() @@ -226,12 +221,6 @@ class Gradle2Nix : CliktCommand( outLockFile.outputStream().buffered().use { output -> JsonFormat.encodeToStream(env, output) } - - val inNixFile = config.appHome.resolve("gradle.nix").takeIf { it.exists() } - ?: error("Couldn't locate gradle.nix in the the gradle2nix installation: ${config.appHome}") - val outNixFile = config.outDir.resolve(nixFile) - logger.info("Writing Nix builder to $outNixFile") - inNixFile.copyTo(outNixFile, overwrite = true) } } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt index 481a0dc..3e1f62f 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -1,12 +1,13 @@ package org.nixos.gradle2nix -import okio.ByteString.Companion.decodeHex import org.nixos.gradle2nix.model.DependencyCoordinates import org.nixos.gradle2nix.model.DependencySet +import kotlin.io.encoding.Base64 +import kotlin.io.encoding.ExperimentalEncodingApi fun processDependencies( config: Config, - dependencySets: Iterable + dependencySets: Iterable, ): Env { return buildMap> { for (dependencySet in dependencySets) { @@ -19,11 +20,13 @@ fun processDependencies( for ((name, artifact) in b) { merge(name, artifact) { aa, ba -> check(aa.hash == ba.hash) { - config.logger.error(""" + config.logger.error( + """ Conflicting hashes found for $id:$name: 1: ${aa.hash} 2: ${ba.hash} - """.trimIndent()) + """.trimIndent(), + ) } aa @@ -41,18 +44,22 @@ fun processDependencies( private fun DependencySet.toEnv(): Map> { return dependencies.associate { dep -> - dep.coordinates to dep.artifacts.associate { - it.name to Artifact(it.url, it.hash.toSri()) - } + dep.coordinates to + dep.artifacts.associate { + it.name to Artifact(it.url, it.hash.toSri()) + } } } -internal fun String.toSri(): String { - val hash = decodeHex().base64() - return "sha256-$hash" -} +@OptIn(ExperimentalEncodingApi::class, ExperimentalStdlibApi::class) +internal fun String.toSri(): String = + buildString { + append("sha256-") + Base64.encodeToAppendable(hexToByteArray(), this) + } -private val coordinatesComparator: Comparator = compareBy { it.group } - .thenBy { it.artifact } - .thenByDescending { Version(it.version) } - .thenByDescending { it.timestamp } +private val coordinatesComparator: Comparator = + compareBy { it.group } + .thenBy { it.artifact } + .thenByDescending { Version(it.version) } + .thenByDescending { it.timestamp } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Projects.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Projects.kt index 7beba7f..154b993 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Projects.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Projects.kt @@ -2,5 +2,13 @@ package org.nixos.gradle2nix import java.io.File -fun File.isProjectRoot(): Boolean = - isDirectory && (resolve("settings.gradle").isFile || resolve("settings.gradle.kts").isFile) +tailrec fun getProjectRoot(path: File): File? { + return if (path.isProjectRoot()) { + path + } else { + val parent = path.parentFile ?: return null + return getProjectRoot(parent) + } +} + +fun File.isProjectRoot(): Boolean = isDirectory && (resolve("settings.gradle").isFile || resolve("settings.gradle.kts").isFile) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Version.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Version.kt index c583621..89df247 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Version.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Version.kt @@ -3,95 +3,105 @@ package org.nixos.gradle2nix import java.util.concurrent.ConcurrentHashMap class Version(val source: String, val parts: List, base: Version?) : Comparable { - private val base: Version val numericParts: List init { this.base = base ?: this - this.numericParts = parts.map { - try { it.toLong() } catch (e: NumberFormatException) { null } - } + this.numericParts = + parts.map { + try { + it.toLong() + } catch (e: NumberFormatException) { + null + } + } } override fun compareTo(other: Version): Int = compare(this, other) override fun toString(): String = source - override fun equals(other: Any?): Boolean = when { - other === this -> true - other == null || other !is Version -> false - else -> source == other.source - } + override fun equals(other: Any?): Boolean = + when { + other === this -> true + other == null || other !is Version -> false + else -> source == other.source + } override fun hashCode(): Int = source.hashCode() companion object { - private val SPECIAL_MEANINGS: Map = mapOf( - "dev" to -1, - "rc" to 1, - "snapshot" to 2, - "final" to 3, - "ga" to 4, - "release" to 5, - "sp" to 6 - ) + private val SPECIAL_MEANINGS: Map = + mapOf( + "dev" to -1, + "rc" to 1, + "snapshot" to 2, + "final" to 3, + "ga" to 4, + "release" to 5, + "sp" to 6, + ) private val cache = ConcurrentHashMap() // From org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionParser - operator fun invoke(original: String): Version = cache.getOrPut(original) { - val parts = mutableListOf() - var digit = false - var startPart = 0 - var pos = 0 - var endBase = 0 - var endBaseStr = 0 - while (pos < original.length) { - val ch = original[pos] - if (ch == '.' || ch == '_' || ch == '-' || ch == '+') { - parts.add(original.substring(startPart, pos)) - startPart = pos + 1 - digit = false - if (ch != '.' && endBaseStr == 0) { - endBase = parts.size - endBaseStr = pos - } - } else if (ch in '0'..'9') { - if (!digit && pos > startPart) { - if (endBaseStr == 0) { - endBase = parts.size + 1 - endBaseStr = pos - } + operator fun invoke(original: String): Version = + cache.getOrPut(original) { + val parts = mutableListOf() + var digit = false + var startPart = 0 + var pos = 0 + var endBase = 0 + var endBaseStr = 0 + while (pos < original.length) { + val ch = original[pos] + if (ch == '.' || ch == '_' || ch == '-' || ch == '+') { parts.add(original.substring(startPart, pos)) - startPart = pos - } - digit = true - } else { - if (digit) { - if (endBaseStr == 0) { - endBase = parts.size + 1 + startPart = pos + 1 + digit = false + if (ch != '.' && endBaseStr == 0) { + endBase = parts.size endBaseStr = pos } - parts.add(original.substring(startPart, pos)) - startPart = pos + } else if (ch in '0'..'9') { + if (!digit && pos > startPart) { + if (endBaseStr == 0) { + endBase = parts.size + 1 + endBaseStr = pos + } + parts.add(original.substring(startPart, pos)) + startPart = pos + } + digit = true + } else { + if (digit) { + if (endBaseStr == 0) { + endBase = parts.size + 1 + endBaseStr = pos + } + parts.add(original.substring(startPart, pos)) + startPart = pos + } + digit = false } - digit = false + pos++ } - pos++ - } - if (pos > startPart) { - parts.add(original.substring(startPart, pos)) - } - var base: Version? = null - if (endBaseStr > 0) { - base = Version(original.substring(0, endBaseStr), parts.subList(0, endBase), null) + if (pos > startPart) { + parts.add(original.substring(startPart, pos)) + } + var base: Version? = null + if (endBaseStr > 0) { + base = Version(original.substring(0, endBaseStr), parts.subList(0, endBase), null) + } + Version(original, parts, base) } - Version(original, parts, base) - } // From org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.StaticVersionComparator - private fun compare(version1: Version, version2: Version): Int { + private fun compare( + version1: Version, + version2: Version, + ): Int { if (version1 == version2) { return 0 } diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt index 4d99c3e..c92b456 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt @@ -21,11 +21,6 @@ import io.ktor.server.http.content.staticFiles import io.ktor.server.netty.Netty import io.ktor.server.netty.NettyApplicationEngine import io.ktor.server.routing.routing -import java.io.File -import java.io.FileFilter -import java.nio.file.Files -import java.nio.file.Paths -import kotlin.random.Random import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -35,17 +30,22 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream import kotlinx.serialization.json.encodeToStream -import okio.use +import java.io.File +import java.io.FileFilter +import java.nio.file.Files +import java.nio.file.Paths +import kotlin.random.Random private val app = Gradle2Nix() @OptIn(ExperimentalSerializationApi::class) -private val json = Json { - prettyPrint = true - prettyPrintIndent = " " -} +private val json = + Json { + prettyPrint = true + prettyPrintIndent = " " + } -val testLogger = Logger(logLevel = LogLevel.debug, stacktrace = true) +val testLogger = Logger(logLevel = LogLevel.DEBUG, stacktrace = true) fun fixture(path: String): File { return Paths.get("../fixtures", path).toFile() @@ -55,17 +55,19 @@ fun fixture(path: String): File { suspend fun TestScope.fixture( project: String, vararg args: String, - test: suspend TestScope.(File, Env) -> Unit + test: suspend TestScope.(File, Env) -> Unit, ) { val tmp = Paths.get("build/tmp/gradle2nix").apply { toFile().mkdirs() } val baseDir = Paths.get("../fixtures/projects", project).toFile() - val children = baseDir.listFiles(FileFilter { it.isDirectory && (it.name == "groovy" || it.name == "kotlin") }) - ?.toList() - val cases = if (children.isNullOrEmpty()) { - listOf(project to baseDir) - } else { - children.map { "$project.${it.name}" to it } - } + val children = + baseDir.listFiles(FileFilter { it.isDirectory && (it.name == "groovy" || it.name == "kotlin") }) + ?.toList() + val cases = + if (children.isNullOrEmpty()) { + listOf(project to baseDir) + } else { + children.map { "$project.${it.name}" to it } + } for (case in cases) { registerTestCase( NestedTest( @@ -73,7 +75,7 @@ suspend fun TestScope.fixture( disabled = false, config = null, type = TestType.Dynamic, - source = sourceRef() + source = sourceRef(), ) { var dirName = case.second.toString().replace("/", ".") while (dirName.startsWith(".")) dirName = dirName.removePrefix(".") @@ -88,22 +90,25 @@ suspend fun TestScope.fixture( } app.main( listOf( - "-p", tempDir.toString(), - "--log", "debug", + "-p", + tempDir.toString(), + "--log", + "debug", "--stacktrace", "--dump-events", "--", "-Dorg.nixos.gradle2nix.m2=$m2", - "--info" - ) + args + "--info", + ) + args, ) val file = tempDir.resolve(app.lockFile) file.shouldBeAFile() - val env: Env = file.inputStream().buffered().use { input -> - Json.decodeFromStream(input) - } + val env: Env = + file.inputStream().buffered().use { input -> + Json.decodeFromStream(input) + } test(tempDir, env) - } + }, ) } } @@ -127,11 +132,12 @@ suspend fun TestScope.golden( if (!goldenFile.exists()) { fail("Golden file '$filename' doesn't exist. Run with --update-golden to generate.") } - val goldenData = try { - goldenFile.readText() - } catch (e: SerializationException) { - fail("Failed to load golden data from '$filename'. Run with --update-golden to regenerate.") - } + val goldenData = + try { + goldenFile.readText() + } catch (e: SerializationException) { + fail("Failed to load golden data from '$filename'. Run with --update-golden to regenerate.") + } json.encodeToString(env) should beEqual(goldenData) } } @@ -172,24 +178,25 @@ object MavenRepo : MountableExtension, private fun tryStart(attempts: Int): NettyApplicationEngine { return try { val p = config.port ?: Random.nextInt(10000, 65000) - val s = embeddedServer(Netty, port = p, host = config.host) { - routing { - staticFiles( - remotePath = config.path, - dir = config.repository, - index = null, - ) { - enableAutoHeadResponse() - contentType { path -> - when (path.extension) { - "pom", "xml" -> ContentType.Text.Xml - "jar" -> ContentType("application", "java-archive") - else -> ContentType.Text.Plain + val s = + embeddedServer(Netty, port = p, host = config.host) { + routing { + staticFiles( + remotePath = config.path, + dir = config.repository, + index = null, + ) { + enableAutoHeadResponse() + contentType { path -> + when (path.extension) { + "pom", "xml" -> ContentType.Text.Xml + "jar" -> ContentType("application", "java-archive") + else -> ContentType.Text.Plain + } } } } } - } coroutineScope.launch { s.start(wait = true) } s } catch (e: Throwable) { diff --git a/default.nix b/default.nix index e0009a4..4432960 100644 --- a/default.nix +++ b/default.nix @@ -1,9 +1,11 @@ -{ pkgs ? import {} }: +{ + pkgs ? import { }, +}: with pkgs; let - buildGradlePackage = callPackage ./gradle.nix {}; + buildGradlePackage = callPackage ./gradle.nix { }; gradle2nix = buildGradlePackage { pname = "gradle2nix"; @@ -13,14 +15,15 @@ let src = lib.cleanSourceWith { filter = lib.cleanSourceFilter; src = lib.cleanSourceWith { - filter = path: type: let baseName = baseNameOf path; in !( - (type == "directory" && ( - baseName == "build" || - baseName == ".idea" || - baseName == ".gradle" - )) || - (lib.hasSuffix ".iml" baseName) - ); + filter = + path: type: + let + baseName = baseNameOf path; + in + !( + (type == "directory" && (baseName == "build" || baseName == ".idea" || baseName == ".gradle")) + || (lib.hasSuffix ".iml" baseName) + ); src = ./.; }; }; @@ -28,13 +31,14 @@ let gradleFlags = [ "installDist" ]; installPhase = '' - mkdir -p $out - cp -r app/build/install/gradle2nix/* $out/ + mkdir -p $out/{bin,/lib/gradle2nix} + cp -r app/build/install/gradle2nix/* $out/lib/gradle2nix/ + rm $out/lib/gradle2nix/bin/gradle2nix.bat + ln -sf $out/lib/gradle2nix/bin/gradle2nix $out/bin ''; passthru = { inherit buildGradlePackage; - plugin = "${gradle2nix}/share/plugin.jar"; }; meta = with lib; { @@ -46,5 +50,5 @@ let mainProgram = "gradle2nix"; }; }; - -in gradle2nix +in +gradle2nix diff --git a/fixtures/projects/basic/basic-java-project/kotlin/settings.gradle.kts b/fixtures/projects/basic/basic-java-project/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/basic/basic-java-project/kotlin/settings.gradle.kts +++ b/fixtures/projects/basic/basic-java-project/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/basic/basic-kotlin-project/kotlin/settings.gradle.kts b/fixtures/projects/basic/basic-kotlin-project/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/basic/basic-kotlin-project/kotlin/settings.gradle.kts +++ b/fixtures/projects/basic/basic-kotlin-project/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/settings.gradle.kts b/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/settings.gradle.kts +++ b/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/buildSrc/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/settings.gradle.kts b/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/settings.gradle.kts +++ b/fixtures/projects/buildsrc/plugin-in-buildsrc/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/dependency/classifier/kotlin/settings.gradle.kts b/fixtures/projects/dependency/classifier/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/dependency/classifier/kotlin/settings.gradle.kts +++ b/fixtures/projects/dependency/classifier/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/dependency/maven-bom/kotlin/settings.gradle.kts b/fixtures/projects/dependency/maven-bom/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/dependency/maven-bom/kotlin/settings.gradle.kts +++ b/fixtures/projects/dependency/maven-bom/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/dependency/snapshot-dynamic/kotlin/settings.gradle.kts b/fixtures/projects/dependency/snapshot-dynamic/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/dependency/snapshot-dynamic/kotlin/settings.gradle.kts +++ b/fixtures/projects/dependency/snapshot-dynamic/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/dependency/snapshot/kotlin/settings.gradle.kts b/fixtures/projects/dependency/snapshot/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/dependency/snapshot/kotlin/settings.gradle.kts +++ b/fixtures/projects/dependency/snapshot/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/integration/settings-buildscript/groovy/default.nix b/fixtures/projects/integration/settings-buildscript/groovy/default.nix index 292d035..89507f1 100644 --- a/fixtures/projects/integration/settings-buildscript/groovy/default.nix +++ b/fixtures/projects/integration/settings-buildscript/groovy/default.nix @@ -1,9 +1,9 @@ -with (import {}); +with (import { }); let - buildGradle = callPackage ./gradle-env.nix {}; + buildGradle = callPackage ./gradle-env.nix { }; in - buildGradle { - envSpec = ./gradle-env.json; - src = ./.; - gradleFlags = [ "tasks" ]; - } \ No newline at end of file +buildGradle { + envSpec = ./gradle-env.json; + src = ./.; + gradleFlags = [ "tasks" ]; +} diff --git a/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.nix b/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.nix index 9c7f708..c150b9c 100644 --- a/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.nix +++ b/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.nix @@ -19,126 +19,167 @@ # ''; # } -{ stdenv, buildEnv, fetchurl, gradleGen, writeText, writeTextDir }: - -{ envSpec -, pname ? null -, version ? null -, enableParallelBuilding ? true -, gradleFlags ? [ "build" ] -, gradlePackage ? null -, enableDebug ? false -, ... } @ args: +{ + stdenv, + buildEnv, + fetchurl, + gradleGen, + writeText, + writeTextDir, +}: + +{ + envSpec, + pname ? null, + version ? null, + enableParallelBuilding ? true, + gradleFlags ? [ "build" ], + gradlePackage ? null, + enableDebug ? false, + ... +}@args: let inherit (builtins) - attrValues concatStringsSep filter fromJSON match replaceStrings sort; + attrValues + concatStringsSep + filter + fromJSON + match + replaceStrings + sort + ; inherit (stdenv.lib) - assertMsg concatMapStringsSep groupBy' hasSuffix last mapAttrs - mapAttrsToList optionalString readFile removeSuffix unique versionAtLeast - versionOlder; - - mkDep = depSpec: stdenv.mkDerivation { - inherit (depSpec) name; - - src = fetchurl { - inherit (depSpec) urls sha256; + assertMsg + concatMapStringsSep + groupBy' + hasSuffix + last + mapAttrs + mapAttrsToList + optionalString + readFile + removeSuffix + unique + versionAtLeast + versionOlder + ; + + mkDep = + depSpec: + stdenv.mkDerivation { + inherit (depSpec) name; + + src = fetchurl { inherit (depSpec) urls sha256; }; + + phases = "installPhase"; + + installPhase = '' + mkdir -p $out/${depSpec.path} + ln -s $src $out/${depSpec.path}/${depSpec.name} + ''; }; - phases = "installPhase"; - - installPhase = '' - mkdir -p $out/${depSpec.path} - ln -s $src $out/${depSpec.path}/${depSpec.name} - ''; - }; - - mkModuleMetadata = deps: + mkModuleMetadata = + deps: let - ids = filter - (id: id.type == "pom") - (map (dep: dep.id) deps); - - modules = groupBy' - (meta: id: - let - isNewer = versionOlder meta.latest id.version; - isNewerRelease = - !(hasSuffix "-SNAPSHOT" id.version) && - versionOlder meta.release id.version; - in { - groupId = id.group; - artifactId = id.name; - latest = if isNewer then id.version else meta.latest; - release = if isNewerRelease then id.version else meta.release; - versions = meta.versions ++ [id.version]; + ids = filter (id: id.type == "pom") (map (dep: dep.id) deps); + + modules = + groupBy' + ( + meta: id: + let + isNewer = versionOlder meta.latest id.version; + isNewerRelease = !(hasSuffix "-SNAPSHOT" id.version) && versionOlder meta.release id.version; + in + { + groupId = id.group; + artifactId = id.name; + latest = if isNewer then id.version else meta.latest; + release = if isNewerRelease then id.version else meta.release; + versions = meta.versions ++ [ id.version ]; + } + ) + { + latest = ""; + release = ""; + versions = [ ]; } - ) - { - latest = ""; - release = ""; - versions = []; - } - (id: "${replaceStrings ["."] ["/"] id.group}/${id.name}/maven-metadata.xml") - ids; - + (id: "${replaceStrings [ "." ] [ "/" ] id.group}/${id.name}/maven-metadata.xml") + ids; in - attrValues (mapAttrs (path: meta: + attrValues ( + mapAttrs ( + path: meta: let versions' = sort versionOlder (unique meta.versions); in - with meta; writeTextDir path '' - - - ${groupId} - ${artifactId} - - ${optionalString (latest != "") "${latest}"} - ${optionalString (release != "") "${release}"} - - ${concatMapStringsSep "\n " (v: "${v}") versions'} - - - - '' - ) modules); - - mkSnapshotMetadata = deps: + with meta; + writeTextDir path '' + + + ${groupId} + ${artifactId} + + ${optionalString (latest != "") "${latest}"} + ${optionalString (release != "") "${release}"} + + ${concatMapStringsSep "\n " (v: "${v}") versions'} + + + + '' + ) modules + ); + + mkSnapshotMetadata = + deps: let snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps; - modules = groupBy' - (meta: dep: - let - id = dep.id; - isNewer = dep.build > meta.buildNumber; - # Timestamp values can be bogus, e.g. jitpack.io - updated = if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null - then replaceStrings ["."] [""] dep.timestamp - else ""; - in { - groupId = id.group; - artifactId = id.name; - version = id.version; - timestamp = if isNewer then dep.timestamp else meta.timestamp; - buildNumber = if isNewer then dep.build else meta.buildNumber; - lastUpdated = if isNewer then updated else meta.lastUpdated; - versions = meta.versions or [] ++ [{ - classifier = id.classifier or ""; - extension = id.extension; - value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}"; - updated = updated; - }]; + modules = + groupBy' + ( + meta: dep: + let + id = dep.id; + isNewer = dep.build > meta.buildNumber; + # Timestamp values can be bogus, e.g. jitpack.io + updated = + if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null then + replaceStrings [ "." ] [ "" ] dep.timestamp + else + ""; + in + { + groupId = id.group; + artifactId = id.name; + version = id.version; + timestamp = if isNewer then dep.timestamp else meta.timestamp; + buildNumber = if isNewer then dep.build else meta.buildNumber; + lastUpdated = if isNewer then updated else meta.lastUpdated; + versions = meta.versions or [ ] ++ [ + { + classifier = id.classifier or ""; + extension = id.extension; + value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}"; + updated = updated; + } + ]; + } + ) + { + timestamp = ""; + buildNumber = -1; + lastUpdated = ""; } - ) - { - timestamp = ""; - buildNumber = -1; - lastUpdated = ""; - } - (dep: "${replaceStrings ["."] ["/"] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml") - snapshotDeps; + ( + dep: + "${replaceStrings [ "." ] [ "/" ] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml" + ) + snapshotDeps; mkSnapshotVersion = version: '' @@ -148,10 +189,12 @@ let ${optionalString (version.updated != "") "${version.updated}"} ''; - in - attrValues (mapAttrs (path: meta: - with meta; writeTextDir path '' + attrValues ( + mapAttrs ( + path: meta: + with meta; + writeTextDir path '' ${groupId} @@ -169,92 +212,98 @@ let '' - ) modules); - - mkRepo = project: type: deps: buildEnv { - name = "${project}-gradle-${type}-env"; - paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps; - }; + ) modules + ); + + mkRepo = + project: type: deps: + buildEnv { + name = "${project}-gradle-${type}-env"; + paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps; + }; - mkInitScript = projectSpec: gradle: + mkInitScript = + projectSpec: gradle: let repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies; - hasDependencies = mapAttrs (type: deps: deps != []) projectSpec.dependencies; + hasDependencies = mapAttrs (type: deps: deps != [ ]) projectSpec.dependencies; in - assert (assertMsg (hasDependencies.settings -> versionAtLeast gradle.version "6.0") '' + assert ( + assertMsg (hasDependencies.settings -> versionAtLeast gradle.version "6.0") '' Project `${projectSpec.name}' has settings script dependencies, such as settings plugins, which are not supported by gradle2nix for Gradle versions prior to 6.0. Potential remedies: - Pass `--gradle-version=' to the gradle2nix command. - Patch the `settings.gradle[.kts]' file to remove script dependencies. - ''); - - writeText "init.gradle" '' - static def offlineRepo(RepositoryHandler repositories, String env, String path) { - repositories.clear() - repositories.maven { - name "Nix''${env.capitalize()}MavenOffline" - url path - metadataSources { - it.gradleMetadata() - it.mavenPom() - it.artifact() - } - } - repositories.ivy { - name "Nix''${env.capitalize()}IvyOffline" - url path - layout "maven" - metadataSources { - it.gradleMetadata() - it.ivyDescriptor() - it.artifact() - } - } - } - - ${optionalString (hasDependencies.settings && (versionAtLeast gradle.version "6.0")) '' - gradle.beforeSettings { - offlineRepo(it.buildscript.repositories, "settings", "${repos.settings}") - } - ''} - - ${optionalString (hasDependencies.plugin) '' - gradle.settingsEvaluated { - offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}") - } - ''} - - ${optionalString (hasDependencies.buildscript) '' - gradle.projectsLoaded { - allprojects { - buildscript { - offlineRepo(repositories, "buildscript", "${repos.buildscript}") - } + '' + ); + + writeText "init.gradle" '' + static def offlineRepo(RepositoryHandler repositories, String env, String path) { + repositories.clear() + repositories.maven { + name "Nix''${env.capitalize()}MavenOffline" + url path + metadataSources { + it.gradleMetadata() + it.mavenPom() + it.artifact() } } - ''} - - ${optionalString (hasDependencies.project) '' - gradle.projectsLoaded { - allprojects { - offlineRepo(repositories, "project", "${repos.project}") + repositories.ivy { + name "Nix''${env.capitalize()}IvyOffline" + url path + layout "maven" + metadataSources { + it.gradleMetadata() + it.ivyDescriptor() + it.artifact() } } - ''} - ''; + } + + ${optionalString (hasDependencies.settings && (versionAtLeast gradle.version "6.0")) '' + gradle.beforeSettings { + offlineRepo(it.buildscript.repositories, "settings", "${repos.settings}") + } + ''} - mkGradle = gradleSpec: + ${optionalString (hasDependencies.plugin) '' + gradle.settingsEvaluated { + offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}") + } + ''} + + ${optionalString (hasDependencies.buildscript) '' + gradle.projectsLoaded { + allprojects { + buildscript { + offlineRepo(repositories, "buildscript", "${repos.buildscript}") + } + } + } + ''} + + ${optionalString (hasDependencies.project) '' + gradle.projectsLoaded { + allprojects { + offlineRepo(repositories, "project", "${repos.project}") + } + } + ''} + ''; + + mkGradle = + gradleSpec: gradleGen.gradleGen { inherit (gradleSpec) nativeVersion; name = "gradle-${gradleSpec.version}-${gradleSpec.type}"; - src = fetchurl { - inherit (gradleSpec) url sha256; - }; - } // { + src = fetchurl { inherit (gradleSpec) url sha256; }; + } + // { inherit (gradleSpec) version; }; @@ -264,9 +313,7 @@ let initScript = mkInitScript projectSpec gradle; }; - gradleEnv = mapAttrs - (_: p: mkProjectEnv p) - (fromJSON (readFile envSpec)); + gradleEnv = mapAttrs (_: p: mkProjectEnv p) (fromJSON (readFile envSpec)); projectEnv = gradleEnv.""; pname = args.pname or projectEnv.name; @@ -282,37 +329,40 @@ let ${concatStringsSep " " flags} ''; - buildIncludedProjects = - concatStringsSep "\n" (mapAttrsToList - (_: env: buildProject env [ "build" ]) - (removeAttrs gradleEnv [ "" ])); + buildIncludedProjects = concatStringsSep "\n" ( + mapAttrsToList (_: env: buildProject env [ "build" ]) (removeAttrs gradleEnv [ "" ]) + ); buildRootProject = buildProject projectEnv gradleFlags; +in +stdenv.mkDerivation ( + args + // { -in stdenv.mkDerivation (args // { - - inherit pname version; + inherit pname version; - nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ projectEnv.gradle ]; + nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ projectEnv.gradle ]; - buildPhase = args.buildPhase or '' - runHook preBuild + buildPhase = + args.buildPhase or '' + runHook preBuild - ( - set -x + ( + set -x - # use the init script here - TMPHOME=$(mktemp -d) - mkdir -p $TMPHOME/init.d - cp ${projectEnv.initScript} $TMPHOME/init.d + # use the init script here + TMPHOME=$(mktemp -d) + mkdir -p $TMPHOME/init.d + cp ${projectEnv.initScript} $TMPHOME/init.d - export "GRADLE_USER_HOME=$TMPHOME" - ${buildIncludedProjects} - ${buildRootProject} - ) + export "GRADLE_USER_HOME=$TMPHOME" + ${buildIncludedProjects} + ${buildRootProject} + ) - runHook postBuild - ''; + runHook postBuild + ''; - dontStrip = true; -}) + dontStrip = true; + } +) diff --git a/fixtures/projects/ivy/basic/kotlin/settings.gradle.kts b/fixtures/projects/ivy/basic/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/ivy/basic/kotlin/settings.gradle.kts +++ b/fixtures/projects/ivy/basic/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts b/fixtures/projects/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts +++ b/fixtures/projects/plugin/resolves-from-default-repo/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/s3/maven-snapshot/kotlin/settings.gradle.kts b/fixtures/projects/s3/maven-snapshot/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/s3/maven-snapshot/kotlin/settings.gradle.kts +++ b/fixtures/projects/s3/maven-snapshot/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/s3/maven/kotlin/settings.gradle.kts b/fixtures/projects/s3/maven/kotlin/settings.gradle.kts index e69de29..d39a25d 100644 --- a/fixtures/projects/s3/maven/kotlin/settings.gradle.kts +++ b/fixtures/projects/s3/maven/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +// Intentionally left empty diff --git a/fixtures/projects/subprojects/multi-module/kotlin/settings.gradle.kts b/fixtures/projects/subprojects/multi-module/kotlin/settings.gradle.kts index 746f7ca..62adbc5 100644 --- a/fixtures/projects/subprojects/multi-module/kotlin/settings.gradle.kts +++ b/fixtures/projects/subprojects/multi-module/kotlin/settings.gradle.kts @@ -1 +1 @@ -include(":child-a", ":child-b") \ No newline at end of file +include(":child-a", ":child-b") diff --git a/flake.lock b/flake.lock index 3b7699d..9336b3f 100644 --- a/flake.lock +++ b/flake.lock @@ -20,16 +20,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1715954240, - "narHash": "sha256-eC0zRYkazBc2cKz1VSzMLvCc9uHXlSQEr1Be+c5UV1w=", + "lastModified": 1716769173, + "narHash": "sha256-7EXDb5WBw+d004Agt+JHC/Oyh/KTUglOaQ4MNjBbo5w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c2ea18b50a4c7fcb7c90402166769bf3b82b5aa9", + "rev": "9ca3f649614213b2aaf5f1e16ec06952fe4c2632", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable-small", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index d8bfb58..9d9554e 100644 --- a/flake.nix +++ b/flake.nix @@ -3,22 +3,49 @@ inputs = { flake-utils.url = "github:numtide/flake-utils"; - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; }; - outputs = { self, flake-utils, nixpkgs, ... }: - flake-utils.lib.eachDefaultSystem (system: + outputs = + { + self, + flake-utils, + nixpkgs, + ... + }: + flake-utils.lib.eachDefaultSystem ( + system: let pkgs = nixpkgs.legacyPackages.${system}; + inherit (nixpkgs) lib; + in + { + builders = rec { + buildGradlePackage = pkgs.callPackage ./gradle.nix { }; + default = buildGradlePackage; + }; - in { - builders.default = pkgs.callPackage ./gradle.nix {}; + packages = rec { + gradle2nix = pkgs.callPackage ./default.nix { }; + default = gradle2nix; + }; - packages.default = pkgs.callPackage ./default.nix {}; + apps = rec { + gradle2nix = { + type = "app"; + program = lib.getExe self.packages.${system}.default; + }; - apps.default = { - type = "app"; - program = "${self.packages.${system}.default}/bin/gradle2nix"; + default = gradle2nix; }; - }); + + formatter = pkgs.writeShellScriptBin "gradle2nix-fmt" '' + fail=0 + ${lib.getExe pkgs.nixfmt-rfc-style} $@ || fail=1 + ${lib.getExe pkgs.ktlint} --relative -l warn -F || fail=1 + [ $fail -eq 0 ] || echo "Formatting failed." >&2 + exit $fail + ''; + } + ); } diff --git a/gradle.lock b/gradle.lock index 3dd2072..b740f49 100644 --- a/gradle.lock +++ b/gradle.lock @@ -161,34 +161,6 @@ "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" } }, - "com.squareup.okio:okio:3.9.0": { - "okio-3.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar", - "hash": "sha256-5RilmFYnOh/OGKx9E938aQ3vphItflzQDK4Zti0DR9k=" - }, - "okio-3.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.module", - "hash": "sha256-aNHIef9liTHQKzrb6vu1EuFjwgqQyt8H2QyNvqfnYhA=" - }, - "okio-3.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.pom", - "hash": "sha256-FPNR2puXtDaeP26PaWsK1ANtFNIbD9l6pcjG7BW+fZA=" - } - }, - "com.squareup.okio:okio-jvm:3.9.0": { - "okio-jvm-3.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.jar", - "hash": "sha256-3cOG/xS9JdXJNBZxlur0WxjeTyjhxVpNs3rllMv9N+Q=" - }, - "okio-jvm-3.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.module", - "hash": "sha256-z5coTsYbtR5t/Lx/K22VVsm3s+PLIswOLU8O7782GVs=" - }, - "okio-jvm-3.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.pom", - "hash": "sha256-VEiNRUqsyvaPcZnz3l3Ns4CBblfUYJBJF06FZSAROH4=" - } - }, "com.typesafe:config:1.4.3": { "config-1.4.3.jar": { "url": "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.jar", @@ -241,48 +213,6 @@ "hash": "sha256-2BHPnxGMwsrRMMlCetVcF01MCm8aAKwa4cm8vsXESxk=" } }, - "io.github.pdvrieze.xmlutil:core:0.86.3": { - "core-0.86.3.jar": { - "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.jar", - "hash": "sha256-ikZHG7Y7PHhzlsu6WqL2TU4zOgOSAiRBrhIRHn5yjJE=" - }, - "core-0.86.3.module": { - "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.module", - "hash": "sha256-MzlXsdCR2LrPqwYCCGgi+a2S9hMCy3Ru8g4Z9nprTbk=" - }, - "core-0.86.3.pom": { - "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.pom", - "hash": "sha256-ngeyUCJI+U7AYn9Wsn3wiBySBCrfzoCg35oa6sQWg4M=" - } - }, - "io.github.pdvrieze.xmlutil:core-jvm:0.86.3": { - "core-jvm-0.86.3.jar": { - "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar", - "hash": "sha256-kVJ9hv6gS9YYPRQKCfENqy3qcnrxLSfZFl7jQuo9Dt4=" - }, - "core-jvm-0.86.3.module": { - "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.module", - "hash": "sha256-FgIJExZWo2dDGWXYAYk7J3fuguD3ZmaD+nXE+Wck/wc=" - }, - "core-jvm-0.86.3.pom": { - "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.pom", - "hash": "sha256-oBGIoPlVW1s7nZLlQz242AJ6vjleD/cIBRU+8v6qf4U=" - } - }, - "io.github.pdvrieze.xmlutil:serialization-jvm:0.86.3": { - "serialization-jvm-0.86.3.jar": { - "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar", - "hash": "sha256-nOJz3LhguSpb8uw2rR4qEbQa7YnGyYTKc+h+/17aG9A=" - }, - "serialization-jvm-0.86.3.module": { - "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.module", - "hash": "sha256-3ppDm3mA++bMPDS8rZyEqIMVmdyHZNceD2c93Ho91Jo=" - }, - "serialization-jvm-0.86.3.pom": { - "url": "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.pom", - "hash": "sha256-OX1XqPVTaUEf7HRETH1NTLaeyYANUkSTrGHekJIl4wc=" - } - }, "io.kotest:kotest-assertions-api:5.9.0": { "kotest-assertions-api-5.9.0.jar": { "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.jar", @@ -1039,16 +969,6 @@ "hash": "sha256-4E4llRUB3yWtx7Hc22xTNzyUiXuE0+FJISknY+4Hrj0=" } }, - "net.java.dev.jna:jna:5.9.0": { - "jna-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar", - "hash": "sha256-6vzHgLRFQ008Wuf6L7ZmXeGnVg1TfSxAio6AzRTScWE=" - }, - "jna-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.pom", - "hash": "sha256-a8i4RZFQtZ6VmPPa2a0kWh7yFQ0IJYEBcYTrFj5ZKCk=" - } - }, "net.java.dev.jna:jna-platform:5.9.0": { "jna-platform-5.9.0.jar": { "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.jar", @@ -1331,214 +1251,224 @@ "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } }, - "org.jetbrains.kotlin:kotlin-android-extensions:1.9.22": { - "kotlin-android-extensions-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar", - "hash": "sha256-Hl6IFkKpnduPbRPmmVoIwZK8OEGHOWZj2ER8CB2H4k8=" + "org.jetbrains.kotlin:kotlin-android-extensions:1.9.24": { + "kotlin-android-extensions-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.24/kotlin-android-extensions-1.9.24.jar", + "hash": "sha256-4z5UUlSR0ZgdRODKmnxTIWh91QRDPsVJZhqb5UYKEW4=" }, - "kotlin-android-extensions-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom", - "hash": "sha256-lEt8+zPgpvtoRVkEjwKMuWMmyTKiRdXLAhQ7zSwDEVk=" + "kotlin-android-extensions-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.24/kotlin-android-extensions-1.9.24.pom", + "hash": "sha256-6QmjYHLn/lbQULgKdXEDwdP4dz+2wb0GcrxKr7hRCEs=" } }, - "org.jetbrains.kotlin:kotlin-build-common:1.9.22": { - "kotlin-build-common-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar", - "hash": "sha256-U8PcxTA/WQPmJgrqc+zMaTD5o276KhHNO9On5V32OWY=" + "org.jetbrains.kotlin:kotlin-build-common:1.9.24": { + "kotlin-build-common-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.24/kotlin-build-common-1.9.24.jar", + "hash": "sha256-+RqOaTfik7FEv6F0DHB3xa12EdtI9CnKMcCm2yduaUo=" }, - "kotlin-build-common-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom", - "hash": "sha256-KXxfSYoHdIPvic06cQzSt/LlrjgPOjrt+5xBvGI7E0A=" + "kotlin-build-common-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.24/kotlin-build-common-1.9.24.pom", + "hash": "sha256-iNt6ER1bfbV+4gKFEX2mNz3NJQQxqd58h8ZCJRYL0RI=" } }, - "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22": { - "kotlin-build-tools-api-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar", - "hash": "sha256-3UnLfij08zgvUlDPsFyGT9XwqW0yZbspPHezCtzJP/Y=" + "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.24": { + "kotlin-build-tools-api-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.24/kotlin-build-tools-api-1.9.24.jar", + "hash": "sha256-ZUX99qL/t4jN3O3KymMiOdx+XmHD90SCNzXjse2cG1Q=" }, - "kotlin-build-tools-api-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom", - "hash": "sha256-DFZLu4fcXs32Q005buob886Xar8IgYCN0Wb6SbBGSfs=" + "kotlin-build-tools-api-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.24/kotlin-build-tools-api-1.9.24.pom", + "hash": "sha256-efIYZmDsHYeQhu4jEEeY2M1PthcsJ5xeVuAsqeVbxHU=" } }, - "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22": { - "kotlin-build-tools-impl-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar", - "hash": "sha256-G0jW3gQqUl9jtVdROuEmbWmTSCJbAT+UDjLGPeJolCg=" + "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.24": { + "kotlin-build-tools-impl-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.24/kotlin-build-tools-impl-1.9.24.jar", + "hash": "sha256-VPyCvEOOGGoMEGH55uYZEQuozUnFH6GOcFb726IpFhc=" }, - "kotlin-build-tools-impl-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom", - "hash": "sha256-tWM/E0m+lcdHRuHimiqm51LoneGrmmUjSS85j6aVWN0=" + "kotlin-build-tools-impl-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.24/kotlin-build-tools-impl-1.9.24.pom", + "hash": "sha256-WI+dA6B9qcDw3JZu6OWqjBEhsUf+1MdxsdwSTMnLONc=" } }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22": { - "kotlin-compiler-embeddable-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar", - "hash": "sha256-K/6t7lmrGYjDNtvW5l2ZH3Zq4d2Gg/Km3tX6oCefDKA=" + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.24": { + "kotlin-compiler-embeddable-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.24/kotlin-compiler-embeddable-1.9.24.jar", + "hash": "sha256-5x/xnmsUGrhakyj9AQlBUxowJUMCa9QkTJWtwgjVAfY=" }, - "kotlin-compiler-embeddable-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom", - "hash": "sha256-s9o0u29ClqzzoPRDRm8FBsbJnaXNliTW4LdFsiKHhOs=" + "kotlin-compiler-embeddable-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.24/kotlin-compiler-embeddable-1.9.24.pom", + "hash": "sha256-1w0fiFkkQ/R1eVFUVqTWwxBRztoK0RRGkjrK/kwMldE=" } }, - "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22": { - "kotlin-compiler-runner-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar", - "hash": "sha256-c+x1u5nr/6iySiSjuFPz9mCWvEapNRrw2sk967acFes=" + "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.24": { + "kotlin-compiler-runner-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.24/kotlin-compiler-runner-1.9.24.jar", + "hash": "sha256-g4Q5dMH/0NNmbTxkk0Hb/TB32eFAZlVKakR7laMB3S0=" }, - "kotlin-compiler-runner-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom", - "hash": "sha256-pO6KZ8HW8lODjAAnKAvLgFCsDc3MrZdIlhOKaaAX6wE=" + "kotlin-compiler-runner-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.24/kotlin-compiler-runner-1.9.24.pom", + "hash": "sha256-wb508udfB+SamqaJA+DctogA0iRkBBi0hHfuQsvDWQQ=" } }, - "org.jetbrains.kotlin:kotlin-daemon-client:1.9.22": { - "kotlin-daemon-client-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar", - "hash": "sha256-XXPhgVsRZ+Sv4gjwCyp1wIC8WoEHhsqtuOFHh1k6k7k=" + "org.jetbrains.kotlin:kotlin-daemon-client:1.9.24": { + "kotlin-daemon-client-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.24/kotlin-daemon-client-1.9.24.jar", + "hash": "sha256-WIqveo7Y55uL8+qLknj/Enii1ZKFpF4Jjxz8v7Dc080=" }, - "kotlin-daemon-client-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom", - "hash": "sha256-YsRKZZ2lXbb7El4pKbmNUEow4fSvgU4I5JIUJqpST4o=" + "kotlin-daemon-client-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.24/kotlin-daemon-client-1.9.24.pom", + "hash": "sha256-tv4ne9GuP/zAzriOxmZZmHpc0TeaiXaDEvXe3x8uH+U=" } }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22": { - "kotlin-daemon-embeddable-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar", - "hash": "sha256-kqV4ExcUR9U0Rh+hP+N9yM07f4bYPpsfe7GwvjBUH4s=" + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.24": { + "kotlin-daemon-embeddable-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.24/kotlin-daemon-embeddable-1.9.24.jar", + "hash": "sha256-F3vIsqQHbcznh4rQ2P0HFjrzF44/qQ7mPU9zO7R7/ck=" }, - "kotlin-daemon-embeddable-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom", - "hash": "sha256-9uo9z2v7Og0GmER8SKa88I2Oqs+D/JX+nUGBpeXjwrE=" + "kotlin-daemon-embeddable-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.24/kotlin-daemon-embeddable-1.9.24.pom", + "hash": "sha256-T7V/xqxyCVGzIkd0s7sqVFSelj0vTf3GhB6Ex77WKrE=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22": { - "kotlin-gradle-plugin-1.9.22-gradle82.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar", - "hash": "sha256-1OcY3V8wxrqTLZPM/FswFendPkQUOgUrh3Ao8frlQtw=" + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.24": { + "kotlin-gradle-plugin-1.9.24-gradle82.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.24/kotlin-gradle-plugin-1.9.24-gradle82.jar", + "hash": "sha256-6K7ZqBLmU2zu+z7VaPE0ZPoF8ka/0TaTONZDyDKUAks=" }, - "kotlin-gradle-plugin-1.9.22.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module", - "hash": "sha256-pPRqwMq9jVzbaJ0tN9GdWFhPcIv59k/+TpgKL/dTS7U=" + "kotlin-gradle-plugin-1.9.24.module": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.24/kotlin-gradle-plugin-1.9.24.module", + "hash": "sha256-txNZQoRrVH+xtZaGQXBGPC81+hW1qtkzX60P/YamE3s=" }, - "kotlin-gradle-plugin-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom", - "hash": "sha256-A3750tSupA9JKdglE1g+STwOBRVuDaix1/Ujurhobyc=" + "kotlin-gradle-plugin-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.24/kotlin-gradle-plugin-1.9.24.pom", + "hash": "sha256-ilwTAHAhV//cHyV1hDZZbsVsM3Z8GqLouOskamWs9SM=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22": { - "kotlin-gradle-plugin-annotations-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar", - "hash": "sha256-lnaDy5jZkQFFYH+/W0VilbQ/Cq+Tsbunv2mS5zHLJOw=" + "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.24": { + "kotlin-gradle-plugin-annotations-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.24/kotlin-gradle-plugin-annotations-1.9.24.jar", + "hash": "sha256-syBxajMCclSau65oGoD14P5YBLo5TQ8kW1s3f6JWNVk=" }, - "kotlin-gradle-plugin-annotations-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom", - "hash": "sha256-Y7por+B4/3D3CPnpecaTxFv+iQQfeWQbC4H2tKEm7rs=" + "kotlin-gradle-plugin-annotations-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.24/kotlin-gradle-plugin-annotations-1.9.24.pom", + "hash": "sha256-fHb3hHzJ5bWOGoJbbqAZV7QoHpHmzXBcFmy+afvDtYs=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22": { - "kotlin-gradle-plugin-api-1.9.22-gradle82.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar", - "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.24": { + "kotlin-gradle-plugin-api-1.9.24-gradle82.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24-gradle82.jar", + "hash": "sha256-LV53JHoKf1klIL64gx6OPrl0m/OIhfgv+9Y8f/BRPhI=" }, - "kotlin-gradle-plugin-api-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar", - "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" + "kotlin-gradle-plugin-api-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24.jar", + "hash": "sha256-LV53JHoKf1klIL64gx6OPrl0m/OIhfgv+9Y8f/BRPhI=" }, - "kotlin-gradle-plugin-api-1.9.22.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module", - "hash": "sha256-H0SJxTBPmlEqVof/zAqvCTCvydcgUdOpBfrAcANi+3s=" + "kotlin-gradle-plugin-api-1.9.24.module": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24.module", + "hash": "sha256-kB+s0LsPLdJ9XzvJDkQvJ3OrEuHOcgnT78HlhWNsfWQ=" }, - "kotlin-gradle-plugin-api-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom", - "hash": "sha256-ZAFewaGutVCqGCjCQuIoODDFD2g2TkCDH+FYj9wEEfU=" + "kotlin-gradle-plugin-api-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24.pom", + "hash": "sha256-r9FlfZ0Vx2BxZ1InnZEdG73PjfTPXZYEUGHjCunBMX4=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22": { - "kotlin-gradle-plugin-idea-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar", + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.24": { + "kotlin-gradle-plugin-idea-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.24/kotlin-gradle-plugin-idea-1.9.24.jar", "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" }, - "kotlin-gradle-plugin-idea-1.9.22.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module", - "hash": "sha256-z+LCbjMPaAMsAD+lJMAx5aYPzo2Jn/8uQjFBKL60QCs=" + "kotlin-gradle-plugin-idea-1.9.24.module": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.24/kotlin-gradle-plugin-idea-1.9.24.module", + "hash": "sha256-4Jx9wdImjqtl5EGtLjgWDzGHsNjAv5zxrUyF+nUjm6Q=" }, - "kotlin-gradle-plugin-idea-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom", - "hash": "sha256-3BSjKHVDun5QRs1OCVAtJ4hMqYfshwb1+xid54luOsw=" + "kotlin-gradle-plugin-idea-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.24/kotlin-gradle-plugin-idea-1.9.24.pom", + "hash": "sha256-aTnfzQ6JgI3AA25alaOPcb+EKF53bpEFIdVWJnp8sMc=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22": { - "kotlin-gradle-plugin-idea-proto-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar", - "hash": "sha256-9dgu5hlmotmK364Z8k1hcwIsFUBIls3yNjQANe5owPU=" + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.24": { + "kotlin-gradle-plugin-idea-proto-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.24/kotlin-gradle-plugin-idea-proto-1.9.24.jar", + "hash": "sha256-hR4BJ+5ixRDpf4UB6Q/V6yTQ15bHCcv5SvM5R0Fre/4=" }, - "kotlin-gradle-plugin-idea-proto-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom", - "hash": "sha256-huMsqCkn2ogKHPNDpA7MIJgHXm/XInOzTVDfpUTzRjs=" + "kotlin-gradle-plugin-idea-proto-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.24/kotlin-gradle-plugin-idea-proto-1.9.24.pom", + "hash": "sha256-3gafD+sze0Nbc/GdKaISONBW5oegumvivczlmvqSa7Y=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22": { - "kotlin-gradle-plugin-model-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar", - "hash": "sha256-UQj61b4UmCXs46ABA8PCHPGv6VS7ZLhweJVyk511OMs=" + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.24": { + "kotlin-gradle-plugin-model-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.24/kotlin-gradle-plugin-model-1.9.24.jar", + "hash": "sha256-VbEQENUcmcMXybbvXpVJrUhXEhjN5hvYRIGMti0aPxk=" + }, + "kotlin-gradle-plugin-model-1.9.24.module": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.24/kotlin-gradle-plugin-model-1.9.24.module", + "hash": "sha256-cQXlShB2dqp9KAzFqUl0QX4qO1cD1w3WH8yr6wccSug=" }, - "kotlin-gradle-plugin-model-1.9.22.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module", - "hash": "sha256-L/MBPfK6epteiwBOhIF1DI0PqVOtAHoZbYXSY2cdvq4=" + "kotlin-gradle-plugin-model-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.24/kotlin-gradle-plugin-model-1.9.24.pom", + "hash": "sha256-rquP4uqM+lwumZi1/nU4MaeYfCx4Q6U1MjYqB/pvABg=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.24": { + "kotlin-gradle-plugins-bom-1.9.24.module": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.24/kotlin-gradle-plugins-bom-1.9.24.module", + "hash": "sha256-BEh8cNHIzCkBwDdNgarX+k/Rp5NeJa200LH69WkKzNs=" }, - "kotlin-gradle-plugin-model-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom", - "hash": "sha256-gfUmlHml2X7oeSpITIMr495DgggSZxlhUAHKyI5C9qg=" + "kotlin-gradle-plugins-bom-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.24/kotlin-gradle-plugins-bom-1.9.24.pom", + "hash": "sha256-wqVTvkQFNLjTMOV69hNjc1WLXgIPppzPsDsuWDx1nAA=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22": { - "kotlin-gradle-plugins-bom-1.9.22.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module", - "hash": "sha256-Qj401h0iCxoN3BgUCGqM6rTa2ed5ArDOjLRyG789xu0=" + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.24": { + "kotlin-klib-commonizer-api-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.24/kotlin-klib-commonizer-api-1.9.24.jar", + "hash": "sha256-U791bL22Uj3LTA16syrLZBR5bBz0nOQxvkC3DMV9tUk=" }, - "kotlin-gradle-plugins-bom-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom", - "hash": "sha256-da2/XHjOJHwiuvNijQs/8c9+19N9YB66cwTXerdb3Z8=" + "kotlin-klib-commonizer-api-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.24/kotlin-klib-commonizer-api-1.9.24.pom", + "hash": "sha256-6pO4z4DdKXdKf7GEeclxH7uWPqhqwjq2FOepQAUsZ34=" } }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22": { - "kotlin-klib-commonizer-api-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar", - "hash": "sha256-jC9lQpwYLi5KLgnLkQ5iuW227tKFWUuPga+CO35ZROI=" + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.24": { + "kotlin-klib-commonizer-embeddable-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.24/kotlin-klib-commonizer-embeddable-1.9.24.jar", + "hash": "sha256-AUyBXNeOK4yub4JeHOpPMd6v4HEBOh0G/jZXVzTDA6E=" }, - "kotlin-klib-commonizer-api-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom", - "hash": "sha256-EMrJcNMAo0icM/CzBBVv8DLZWVm+WqrDuIAoKtWGIv4=" + "kotlin-klib-commonizer-embeddable-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.24/kotlin-klib-commonizer-embeddable-1.9.24.pom", + "hash": "sha256-yshuQs6nFQwXJJW69k1hWar/vCjFm1+433K+p1iL9Rw=" } }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22": { - "kotlin-klib-commonizer-embeddable-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar", - "hash": "sha256-c/50PnTSEoPTg9C6voX9CMRCr8GnvYgIL42gUQ0FPUs=" + "org.jetbrains.kotlin:kotlin-native-utils:1.9.24": { + "kotlin-native-utils-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.24/kotlin-native-utils-1.9.24.jar", + "hash": "sha256-I1WvMJo7FgeymmF02Fe05umxs2EH1sHvu8PMSbpDRQw=" }, - "kotlin-klib-commonizer-embeddable-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom", - "hash": "sha256-dxghItppe2YqSRPX3Z/mu68ATOhH/YZ9oj6v8MTIJEs=" + "kotlin-native-utils-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.24/kotlin-native-utils-1.9.24.pom", + "hash": "sha256-uvA25RxRge8Q8wVRXRnfawKWsLcIS0g9I4oImN630i0=" } }, - "org.jetbrains.kotlin:kotlin-native-utils:1.9.22": { - "kotlin-native-utils-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar", - "hash": "sha256-eGwSfdVTXbLDmuWXzQsMrZ6RS4PiNvHbAlEjXMnGUqw=" + "org.jetbrains.kotlin:kotlin-project-model:1.9.24": { + "kotlin-project-model-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.24/kotlin-project-model-1.9.24.jar", + "hash": "sha256-Nri/x5EqvuVIWSxcI5keVRQODS17OhqTTdPOj6Q0+N0=" }, - "kotlin-native-utils-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom", - "hash": "sha256-EcUUwF7qOuno4Wq0l5bxEd9DxzSCMeNfr0xCjMT3Q+o=" + "kotlin-project-model-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.24/kotlin-project-model-1.9.24.pom", + "hash": "sha256-sF4O4QAsGO3t626JrwfjvheFB9sT2hutbs52vmDz7es=" } }, - "org.jetbrains.kotlin:kotlin-project-model:1.9.22": { - "kotlin-project-model-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar", - "hash": "sha256-zBHVwLGQnFsKCP0l7w51T/0r9Wyu9mX7eFEiI15UKhg=" + "org.jetbrains.kotlin:kotlin-reflect:1.9.24": { + "kotlin-reflect-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.24/kotlin-reflect-1.9.24.jar", + "hash": "sha256-plFmRFu4XvgWzeEnJ5/gAX0rfMQ5s7lyOQ4bc21k6Uw=" }, - "kotlin-project-model-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom", - "hash": "sha256-659KFngb/ADM7IAw++XuIo5vKydxxQwmezIY/rAGW0A=" + "kotlin-reflect-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.24/kotlin-reflect-1.9.24.pom", + "hash": "sha256-CghcMAUb1tSrdlrVoMUXnEE7NfdBjyiDFy+9m6GrzMk=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.9.23": { @@ -1551,16 +1481,6 @@ "hash": "sha256-WXD72CdKWAyk6I/nhkeMR8i5ufo3TFsK3ekyhFYiX2o=" } }, - "org.jetbrains.kotlin:kotlin-reflect:1.9.22": { - "kotlin-reflect-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar", - "hash": "sha256-d/MRyhOEgR1Rn9o4n8sSaL2qBY1gUEbg7edsA7DfPpc=" - }, - "kotlin-reflect-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom", - "hash": "sha256-xxLjWN97kxi2j1RjlxsIhnODf8DKQoXRw4LIEC7da18=" - } - }, "org.jetbrains.kotlin:kotlin-reflect:1.8.22": { "kotlin-reflect-1.8.22.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.jar", @@ -1581,124 +1501,106 @@ "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" } }, - "org.jetbrains.kotlin:kotlin-script-runtime:1.9.22": { - "kotlin-script-runtime-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar", - "hash": "sha256-uAZwV59/ktRz2NWDTwsST3dVxFmP6UskQYOwKDSDRXQ=" + "org.jetbrains.kotlin:kotlin-script-runtime:1.9.24": { + "kotlin-script-runtime-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.24/kotlin-script-runtime-1.9.24.jar", + "hash": "sha256-MUx9MI/nUGVDZbrGFEeAYTyRac89nh2vurkc+AvcNXw=" }, - "kotlin-script-runtime-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom", - "hash": "sha256-/ra0ns9pEG1MEoXnH5ob2noSfO9oMC4+n9yCmKTjR5U=" + "kotlin-script-runtime-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.24/kotlin-script-runtime-1.9.24.pom", + "hash": "sha256-mGDF58qg5AlxmVCQEtoD01GX/teewKkKUOKPjeh1QE0=" } }, - "org.jetbrains.kotlin:kotlin-scripting-common:1.9.22": { - "kotlin-scripting-common-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar", - "hash": "sha256-+lAMvwNJQ++BJvPT3GWvCf+Z3//kTFCZtPwu1b8vXcc=" + "org.jetbrains.kotlin:kotlin-scripting-common:1.9.24": { + "kotlin-scripting-common-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.24/kotlin-scripting-common-1.9.24.jar", + "hash": "sha256-KqeY6XgokBDYByTdGdn+GQtSQkFIEQT89RjAO8OdTks=" }, - "kotlin-scripting-common-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom", - "hash": "sha256-ROURI7DCfm/ZM/wma00Nrw8GhKYq7Z/mhC6Noz8qKz8=" + "kotlin-scripting-common-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.24/kotlin-scripting-common-1.9.24.pom", + "hash": "sha256-S9rpUqslCWFRsfqERCooGupzwW0dTNVdigLDccqJusQ=" } }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22": { - "kotlin-scripting-compiler-embeddable-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar", - "hash": "sha256-Ij/shIMCNEmc1MeiPqHJLroSfEGzXZux1LYdJBVa6zU=" + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.24": { + "kotlin-scripting-compiler-embeddable-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.24/kotlin-scripting-compiler-embeddable-1.9.24.jar", + "hash": "sha256-02gR+1yZeXaEH/PQqxnGt96RkomeQIK6Hz/7oH6UBfQ=" }, - "kotlin-scripting-compiler-embeddable-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom", - "hash": "sha256-wWCPP7yyqfdSPq0zWZwurc5MgSFhqeBmufSwBa97Qxw=" + "kotlin-scripting-compiler-embeddable-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.24/kotlin-scripting-compiler-embeddable-1.9.24.pom", + "hash": "sha256-FUgOkd8v/sfFfOHgpfFBBltFIrbbyJsv2yk9xsVwwMU=" } }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22": { - "kotlin-scripting-compiler-impl-embeddable-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar", - "hash": "sha256-OJkYFqKH/3YkHxp35/ERZIHU6To9tjJZplfd4g5tD2U=" + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.24": { + "kotlin-scripting-compiler-impl-embeddable-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.24/kotlin-scripting-compiler-impl-embeddable-1.9.24.jar", + "hash": "sha256-i/2A2RNqKjJhALC3O/saG7NX7d+uDYEiDkYSa4im7no=" }, - "kotlin-scripting-compiler-impl-embeddable-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom", - "hash": "sha256-gmccM6lXsuKoINZqaSwvzmPjvwR/HLJeb7A5HF3c8uc=" + "kotlin-scripting-compiler-impl-embeddable-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.24/kotlin-scripting-compiler-impl-embeddable-1.9.24.pom", + "hash": "sha256-Sg6yUXF8Sih6ZBfp/QRBZ4xJatxnAdhasPFi8W0s+4c=" } }, - "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22": { - "kotlin-scripting-jvm-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar", - "hash": "sha256-jRJ9dvz6BRfDbB6g4ijs4D1aRoJkKgH2R5prvccxKik=" + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.24": { + "kotlin-scripting-jvm-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.24/kotlin-scripting-jvm-1.9.24.jar", + "hash": "sha256-G9aQBgqUhDl3N0pFds2J10nk7srx+3pYA2/rOuVRxKw=" }, - "kotlin-scripting-jvm-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom", - "hash": "sha256-cBJS6huo/4f8M0dqYePVxtnS3aQbqpiZTdaYDuE/vG0=" + "kotlin-scripting-jvm-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.24/kotlin-scripting-jvm-1.9.24.pom", + "hash": "sha256-kkM+M+MLpFvMS/hKxUsX0p8Dlkp2BwYW1sZS3WxhySU=" } }, - "org.jetbrains.kotlin:kotlin-serialization:1.9.22": { - "kotlin-serialization-1.9.22-gradle82.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22-gradle82.jar", - "hash": "sha256-AcrgEEPdT3sLAttWbZPHVoiwlsNAkJ9o0OSVcqvF6VQ=" + "org.jetbrains.kotlin:kotlin-serialization:1.9.24": { + "kotlin-serialization-1.9.24-gradle82.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.24/kotlin-serialization-1.9.24-gradle82.jar", + "hash": "sha256-qwl/Ug33fXOXhQfsR6/B2K9ME0tn5hCrfcLLzYrFIFg=" }, - "kotlin-serialization-1.9.22.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.module", - "hash": "sha256-s3cuUZFg/is2t9G6MkGQYU27lLFZzmBk9M1z+RhhWiI=" + "kotlin-serialization-1.9.24.module": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.24/kotlin-serialization-1.9.24.module", + "hash": "sha256-aRNY++5uyvcPyLLR8ic1q21RAErJHEh8Jbdm2xPD74k=" }, - "kotlin-serialization-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.pom", - "hash": "sha256-D9yUsPEx2Ct3RpAEB0r0f/yntGfVeIn762oVSWg+rL0=" + "kotlin-serialization-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.24/kotlin-serialization-1.9.24.pom", + "hash": "sha256-5JgomGgooBL/9+I+cSUCASVSzCtmOdx3HgsX2VINhJ0=" } }, - "org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:1.9.22": { - "kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar", - "hash": "sha256-OFR9AAsWYbFLkkZxz7F6tSAL64NOOj2kJ37gkGLppQA=" + "org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:1.9.24": { + "kotlin-serialization-compiler-plugin-embeddable-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.24/kotlin-serialization-compiler-plugin-embeddable-1.9.24.jar", + "hash": "sha256-T/XIE76vaHjvBxFIZvU4keMdlscr+XWMvG81CmxNNs0=" }, - "kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom", - "hash": "sha256-i8LheiTLbQ4CMzLkjKq5e3P+MyuSdVWhGjAsb1xcPGQ=" + "kotlin-serialization-compiler-plugin-embeddable-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.24/kotlin-serialization-compiler-plugin-embeddable-1.9.24.pom", + "hash": "sha256-GWjfZLq2HzC6UvTrMQ0tzFl1IQGbsUL72ZPw5VWk3+k=" } }, - "org.jetbrains.kotlin:kotlin-stdlib:1.9.23": { - "kotlin-stdlib-1.9.23-all.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23-all.jar", + "org.jetbrains.kotlin:kotlin-stdlib:1.9.24": { + "kotlin-stdlib-1.9.24-all.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24-all.jar", "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" }, - "kotlin-stdlib-1.9.23.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.jar", - "hash": "sha256-iRDMI4gH2G71UMsfCxDdXtQLNaTsGlJSX3YK7ehOrTc=" + "kotlin-stdlib-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24.jar", + "hash": "sha256-hYuQJpbanPWFq52Y/8HCcSJpgoNU3+kQfjcRsISjZGg=" }, - "kotlin-stdlib-1.9.23.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.module", - "hash": "sha256-UZUZOzfc2touHAqw1RLEIrKtdq81V4Q6G5w0gPTnHQ4=" + "kotlin-stdlib-1.9.24.module": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24.module", + "hash": "sha256-8uKmVztbUmXEEtXFgfv46gDGKxC5yS1WdMnpfy8zNbM=" }, - "kotlin-stdlib-1.9.23.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.pom", - "hash": "sha256-wm0n8mcQrUDiPu2f/gpkuFkejBPSI8ypDFk+5j87KKs=" + "kotlin-stdlib-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24.pom", + "hash": "sha256-uc6tTCIt7pDHT28BPTFqnlD4EaApMxPDNRrssvfM7V8=" } }, - "org.jetbrains.kotlin:kotlin-stdlib:1.9.22": { - "kotlin-stdlib-1.9.22-all.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar", - "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" - }, - "kotlin-stdlib-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar", - "hash": "sha256-ar4UbCeGQTi4dMzM/l9TTj65I8maG3tdRUlO5WlPPgo=" - }, - "kotlin-stdlib-1.9.22.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module", - "hash": "sha256-9IIxS1B5wUVfb7DUJXp0XRAcYSTOlhUiuob53JCQHkc=" + "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.24": { + "kotlin-stdlib-common-1.9.24.module": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.24/kotlin-stdlib-common-1.9.24.module", + "hash": "sha256-6Y6oxE+zaCDQG7iwAxaOI6IhtAHLQyVtcjo/C3fWFsI=" }, - "kotlin-stdlib-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom", - "hash": "sha256-zOLxUoXsgHijd0a1cwigVAQt1cwlQgxD9zt4V8JGjwM=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.23": { - "kotlin-stdlib-common-1.9.23.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.module", - "hash": "sha256-hjnwBfqZd67wjDL8jnonedoi7iYkZNcnMpiq/Ug3Fc0=" - }, - "kotlin-stdlib-common-1.9.23.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.pom", - "hash": "sha256-OuBxRYdw47aGCafTGet5emeJ9fBAyqQUQJgJmGhb5PY=" + "kotlin-stdlib-common-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.24/kotlin-stdlib-common-1.9.24.pom", + "hash": "sha256-XZfiDNWGLoR6aYF1uTno3Fxr11vtmZ1vPU6ghIESFsA=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22": { @@ -1711,24 +1613,14 @@ "hash": "sha256-10k21oh1ZK63EOhCmLVCB/U+m88jpSrSv6IsIIZ3V2c=" } }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.22": { - "kotlin-stdlib-jdk7-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.jar", - "hash": "sha256-+R8kz606dWaIo1Ep5fM1SA0OtAjxVooX9wfCifh2m90=" - }, - "kotlin-stdlib-jdk7-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.pom", - "hash": "sha256-SHnKgQKDPIraP0bHep/6+uGXDK/AvGIfUSAbatl0zp0=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.21": { - "kotlin-stdlib-jdk7-1.9.21.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.jar", - "hash": "sha256-v+IfQkbIvKNQsYQEBv+803awXto36ypksBHeGMLKeBg=" + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.24": { + "kotlin-stdlib-jdk7-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.24/kotlin-stdlib-jdk7-1.9.24.jar", + "hash": "sha256-tmmbhQugeJ8ukEJ5zYvce+qRMP/RV826AB/HQl2KR7c=" }, - "kotlin-stdlib-jdk7-1.9.21.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.pom", - "hash": "sha256-AVFiDhh0XvJ2ECNw/GdHBPcN821kgsxBmh5S263Cg2I=" + "kotlin-stdlib-jdk7-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.24/kotlin-stdlib-jdk7-1.9.24.pom", + "hash": "sha256-RYapN9W8vDqzBCwECaHHKWFLy6PHpylvJS1ibuNzh9Q=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22": { @@ -1741,24 +1633,14 @@ "hash": "sha256-T5WKqZPVmE+PXr7UFGVipfOp9pW2BJyfKHOBN5ytqzM=" } }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.22": { - "kotlin-stdlib-jdk8-1.9.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.jar", - "hash": "sha256-RwRsPtwy/g2xo2v+PTgilYu1vkQRxbqA866JWj7CcpE=" - }, - "kotlin-stdlib-jdk8-1.9.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.pom", - "hash": "sha256-yUBIJZxtAAdXi6r+tx74/3ut6wjy1ZQ3/DllHg+396s=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.21": { - "kotlin-stdlib-jdk8-1.9.21.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.jar", - "hash": "sha256-BwLWS6qpDlxW5GdzeCTJvjreHlFWJHPBQ60DWByVUSc=" + "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.24": { + "kotlin-stdlib-jdk8-1.9.24.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.24/kotlin-stdlib-jdk8-1.9.24.jar", + "hash": "sha256-W1u/s+EYS14TMXw9QiN/okrdRDsud4GWHuozTbE2rbE=" }, - "kotlin-stdlib-jdk8-1.9.21.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.pom", - "hash": "sha256-J79Q6ETwZc0emFT8m8K9pRIrh4ZOoDBL1pW7En0AMvQ=" + "kotlin-stdlib-jdk8-1.9.24.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.24/kotlin-stdlib-jdk8-1.9.24.pom", + "hash": "sha256-BuBt70n5aq9uXD7EKDauWdbi2mJUcAkUKBZ1Z53J8qU=" } }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22": { @@ -1771,46 +1653,46 @@ "hash": "sha256-ko8hhyF0djE8uBbUgHC8dlSqO5pa6B0/xfjCecyPjZ4=" } }, - "org.jetbrains.kotlin:kotlin-tooling-core:1.9.22": { - "kotlin-tooling-core-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar", + "org.jetbrains.kotlin:kotlin-tooling-core:1.9.24": { + "kotlin-tooling-core-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.24/kotlin-tooling-core-1.9.24.jar", "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" }, - "kotlin-tooling-core-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom", - "hash": "sha256-FPx/NcY15fzRvqU3q0+kQxLoQyUtUzNRnjaxJeoImyE=" + "kotlin-tooling-core-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.24/kotlin-tooling-core-1.9.24.pom", + "hash": "sha256-dbytE+kWgPzwEsjuGqGqxxn1m2IbOUyj/DLGJf+YclY=" } }, - "org.jetbrains.kotlin:kotlin-util-io:1.9.22": { - "kotlin-util-io-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar", - "hash": "sha256-9telhJGjeLCDrRvq1IikheEdFgsx52wYwa1SDx0o9Gs=" + "org.jetbrains.kotlin:kotlin-util-io:1.9.24": { + "kotlin-util-io-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.24/kotlin-util-io-1.9.24.jar", + "hash": "sha256-u0z0H/UG5Q+bLDQiBkmIFupO3f6ImYqQtotDlLT6xfo=" }, - "kotlin-util-io-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom", - "hash": "sha256-ZP1qINbsBAE7ttdWJ/ZYC7c2QdlIkJ1cFmTi53MQbe4=" + "kotlin-util-io-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.24/kotlin-util-io-1.9.24.pom", + "hash": "sha256-82VnN3kyTzMtOTkMeAd1h4BNEeznKv5K7uMlOtZTPFE=" } }, - "org.jetbrains.kotlin:kotlin-util-klib:1.9.22": { - "kotlin-util-klib-1.9.22.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar", - "hash": "sha256-pnnuL1EPOrkmkYGN5etbCQLobYjJdnTn20TcTyJSxfk=" + "org.jetbrains.kotlin:kotlin-util-klib:1.9.24": { + "kotlin-util-klib-1.9.24.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.24/kotlin-util-klib-1.9.24.jar", + "hash": "sha256-4NqKfwZIV8BIOmVyfRYtPtV84m1+R3ix8ADg0MDck3E=" }, - "kotlin-util-klib-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom", - "hash": "sha256-Dep9//Cit0CIrJlwQ8vCQINdK/9Zs5/MiwysbqPrNpc=" + "kotlin-util-klib-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.24/kotlin-util-klib-1.9.24.pom", + "hash": "sha256-krQjr9XnKbsRT3G1ip4DhF3+K9pWJFTrvbg8nYOyMHE=" } }, - "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.9.22": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.9.22/org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom", - "hash": "sha256-HLTsuTPJGbL7/XZe/KX+SQeghxLoyZQsM6IIsrFpsYw=" + "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.9.24": { + "org.jetbrains.kotlin.jvm.gradle.plugin-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.9.24/org.jetbrains.kotlin.jvm.gradle.plugin-1.9.24.pom", + "hash": "sha256-7v934tgCArrgxdMiTdws8lklMcyyuJL2uFSyMd+fEBU=" } }, - "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin:1.9.22": { - "org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.22/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom", - "hash": "sha256-+9WDi7OolDJys/EfhJrIlDeJL9MJstA012QjjEVPoyI=" + "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin:1.9.24": { + "org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.24.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.24/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.24.pom", + "hash": "sha256-4VQlt07TxI1q7g8h3u9MQ5npbV4lZ3vxVZVNOBYRZII=" } }, "org.jetbrains.kotlinx:atomicfu:0.23.1": { @@ -1859,20 +1741,6 @@ "hash": "sha256-+IkY2/qHh8TRcasCVToUrR3viqmwxcLCDMmUVdMkHiI=" } }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0": { - "kotlinx-coroutines-core-1.8.0.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.jar", - "hash": "sha256-IKpDS2qTDqZtLmGwDe764J/qPTL5ZA0uDCcTEogOCt0=" - }, - "kotlinx-coroutines-core-1.8.0.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.module", - "hash": "sha256-FE7s1TZd4+MNe0YibAWAUeOZVbXBieMfpMfP+5nWILo=" - }, - "kotlinx-coroutines-core-1.8.0.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.pom", - "hash": "sha256-yglaS/iLR0+trOgzLBCXC3nLgBu/XfBHo5Ov4Ql28yE=" - } - }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.1": { "kotlinx-coroutines-core-jvm-1.8.1.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.jar", @@ -1887,20 +1755,6 @@ "hash": "sha256-R8alCxQVHo+vfzUKlSNcN9EqvDi/sFW2aJdCkxctryw=" } }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0": { - "kotlinx-coroutines-core-jvm-1.8.0.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.jar", - "hash": "sha256-mGCQahk3SQv187BtLw4Q70UeZblbJp8i2vaKPR9QZcU=" - }, - "kotlinx-coroutines-core-jvm-1.8.0.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.module", - "hash": "sha256-/2oi2kAECTh1HbCuIRd+dlF9vxJqdnlvVCZye/dsEig=" - }, - "kotlinx-coroutines-core-jvm-1.8.0.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.pom", - "hash": "sha256-pWM6vVNGfOuRYi2B8umCCAh3FF4LduG3V4hxVDSIXQs=" - } - }, "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { "kotlinx-coroutines-core-jvm-1.5.0.jar": { "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", @@ -1929,20 +1783,6 @@ "hash": "sha256-x9+Ci/O0+ofumYH7ATaN1NwHmV0XzLqPpmEhcTwF69Q=" } }, - "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.0": { - "kotlinx-coroutines-debug-1.8.0.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.jar", - "hash": "sha256-Zy1UU0UXCoyrgoeygZRL55DWdUWXK+vdVKor9MhsxT8=" - }, - "kotlinx-coroutines-debug-1.8.0.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.module", - "hash": "sha256-piquUrrd+ncw5Wey6kHzYOoQqbN8FiJDqNIaWnySHGI=" - }, - "kotlinx-coroutines-debug-1.8.0.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.pom", - "hash": "sha256-EZPR60nUsUgNqlrGIBctfcmZFidM2Ra+NpQVLA5vb3w=" - } - }, "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1": { "kotlinx-coroutines-jdk8-1.8.1.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.jar", @@ -1958,10 +1798,6 @@ } }, "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.0": { - "kotlinx-coroutines-jdk8-1.8.0.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.jar", - "hash": "sha256-2EGf2zy6quxAfmKrFL5WQ20edrW/MyRMV2VWH8E/0Gs=" - }, "kotlinx-coroutines-jdk8-1.8.0.module": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.module", "hash": "sha256-HKyxz+5adTBFR1rzCF+4DcnMzjA3VKnVIApB3/W+AOk=" @@ -2015,32 +1851,12 @@ "hash": "sha256-4qht+xaCAWeYuVoPAGy0tdAQRsVaAS6hs2vSAjLcVXQ=" } }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0": { - "kotlinx-coroutines-test-jvm-1.8.0.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.jar", - "hash": "sha256-FTXMH0MjXYVm+NW8bRwR8HBBF+TlY/Ls5+aqPmhpXyA=" - }, - "kotlinx-coroutines-test-jvm-1.8.0.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.module", - "hash": "sha256-HS0Zc6L0GowMEmPmCyXneS9ji4xV18ocbQZztkvlfac=" - }, - "kotlinx-coroutines-test-jvm-1.8.0.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.pom", - "hash": "sha256-BtHlPqNm5to7FxkwV1+RYnzxnkUqTnqfDeMNLwQdZFE=" - } - }, "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3": { "kotlinx-serialization-bom-1.6.3.pom": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.3/kotlinx-serialization-bom-1.6.3.pom", "hash": "sha256-KdaYQrt9RJviqkreakp85qpVgn0KsT0Wh0X+bZVzkzI=" } }, - "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.2": { - "kotlinx-serialization-bom-1.6.2.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.2/kotlinx-serialization-bom-1.6.2.pom", - "hash": "sha256-ew4dde6GIUmc+VQwyhL9qjL0p/kg1cMBv+lfoYfyczc=" - } - }, "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3": { "kotlinx-serialization-core-1.6.3.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.jar", @@ -2055,16 +1871,6 @@ "hash": "sha256-0tv2/BU2TIlp1qq24+zMdROZU/LMBXtzDjUmdGWztX4=" } }, - "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2": { - "kotlinx-serialization-core-1.6.2.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.module", - "hash": "sha256-arz0gTrJTfA3AS4xZzaKNEUHD9+OqyHQjYhtTtnC+2c=" - }, - "kotlinx-serialization-core-1.6.2.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.pom", - "hash": "sha256-BibddZLIUwKToOPoHgiBltNRh3o422hHaTY3S6ZJ+S8=" - } - }, "org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3": { "kotlinx-serialization-core-jvm-1.6.3.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.jar", diff --git a/gradle.nix b/gradle.nix index e5ead69..749e5fd 100644 --- a/gradle.nix +++ b/gradle.nix @@ -19,123 +19,143 @@ # ''; # } -{ lib -, stdenv -, buildEnv -, fetchs3 -, fetchurl -, gradle -, maven -, runCommandLocal -, symlinkJoin -, writeText -, writeTextDir +{ + lib, + stdenv, + buildEnv, + fetchs3, + fetchurl, + gradle, + maven, + runCommandLocal, + symlinkJoin, + writeText, + writeTextDir, }: -let defaultGradle = gradle; in +let + defaultGradle = gradle; +in { # Path to the lockfile generated by gradle2nix (e.g. gradle.lock). - lockFile ? null -, pname ? "project" -, version ? null -, enableParallelBuilding ? true -# The Gradle package to use. Default is 'pkgs.gradle'. -, gradle ? defaultGradle -# Arguments to Gradle used to build the project in buildPhase. -, gradleFlags ? [ "build" ] -# Enable debugging for the Gradle build; this will cause Gradle to run -# a debug server and wait for a JVM debugging client to attach. -, enableDebug ? false -# Additional code to run in the Gradle init script (init.gradle). -, extraInit ? "" -# Override the default JDK used to run Gradle itself. -, buildJdk ? null -# Override functions which fetch dependency artifacts. -# Keys in this set are URL schemes such as "https" or "s3". -# Values are functions which take a dependency in the form -# `{ urls, hash }` and fetch into the Nix store. For example: -# -# { -# s3 = { name, urls, hash }: fetchs3 { -# s3url = builtins.head urls; -# # TODO This doesn't work without patching fetchs3 to accept SRI hashes -# inherit name hash; -# region = "us-west-2"; -# credentials = { -# access_key_id = "foo"; -# secret_access_key = "bar"; -# }; -# }; -# } -, fetchers ? { } -# Overlays for dependencies in the offline Maven repository. -# -# Acceps an attrset of dependencies (usually parsed from 'lockFile'), and produces an attrset -# containing dependencies to merge into the final set. -# -# The attrset is of the form: -# -# { -# "${group}:${module}:${version}" = ; -# # ... -# } -# -# A dependency derivation unpacks multiple source files into a single Maven-style directory named -# "${out}/${groupPath}/${module}/${version}/", where 'groupPath' is the dependency group ID with dot -# characters ('.') replaced by the path separator ('/'). -# -# Examples: -# -# 1. Add or replace a dependency with a single JAR file: -# -# (_: { -# "com.squareup.okio:okio:3.9.0" = fetchurl { -# url = "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar"; -# hash = "..."; -# downloadToTemmp = true; -# postFetch = "install -Dt $out/com/squareup/okio/okio/3.9.0/ $downloadedFile" -# }; -# }) -# -# 2. Remove a dependency entirely: -# -# # This works because the result is filtered for values that are derivations. -# (_: { -# "org.apache.log4j:core:2.23.1" = null; -# }) -, overlays ? [] -, ... } @ args: + lockFile ? null, + pname ? "project", + version ? null, + enableParallelBuilding ? true, + # The Gradle package to use. Default is 'pkgs.gradle'. + gradle ? defaultGradle, + # Arguments to Gradle used to build the project in buildPhase. + gradleFlags ? [ "build" ], + # Enable debugging for the Gradle build; this will cause Gradle to run + # a debug server and wait for a JVM debugging client to attach. + enableDebug ? false, + # Additional code to run in the Gradle init script (init.gradle). + extraInit ? "", + # Override the default JDK used to run Gradle itself. + buildJdk ? null, + # Override functions which fetch dependency artifacts. + # Keys in this set are URL schemes such as "https" or "s3". + # Values are functions which take a dependency in the form + # `{ urls, hash }` and fetch into the Nix store. For example: + # + # { + # s3 = { name, urls, hash }: fetchs3 { + # s3url = builtins.head urls; + # # TODO This doesn't work without patching fetchs3 to accept SRI hashes + # inherit name hash; + # region = "us-west-2"; + # credentials = { + # access_key_id = "foo"; + # secret_access_key = "bar"; + # }; + # }; + # } + fetchers ? { }, + # Overlays for dependencies in the offline Maven repository. + # + # Acceps an attrset of dependencies (usually parsed from 'lockFile'), and produces an attrset + # containing dependencies to merge into the final set. + # + # The attrset is of the form: + # + # { + # "${group}:${module}:${version}" = ; + # # ... + # } + # + # A dependency derivation unpacks multiple source files into a single Maven-style directory named + # "${out}/${groupPath}/${module}/${version}/", where 'groupPath' is the dependency group ID with dot + # characters ('.') replaced by the path separator ('/'). + # + # Examples: + # + # 1. Add or replace a dependency with a single JAR file: + # + # (_: { + # "com.squareup.okio:okio:3.9.0" = fetchurl { + # url = "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar"; + # hash = "..."; + # downloadToTemmp = true; + # postFetch = "install -Dt $out/com/squareup/okio/okio/3.9.0/ $downloadedFile" + # }; + # }) + # + # 2. Remove a dependency entirely: + # + # # This works because the result is filtered for values that are derivations. + # (_: { + # "org.apache.log4j:core:2.23.1" = null; + # }) + overlays ? [ ], + ... +}@args: let inherit (builtins) - attrValues concatStringsSep elemAt filter fromJSON getAttr head length mapAttrs removeAttrs - replaceStrings; + attrValues + concatStringsSep + elemAt + filter + fromJSON + getAttr + head + length + mapAttrs + removeAttrs + replaceStrings + ; inherit (lib) - mapAttrsToList optionalString readFile versionAtLeast versionOlder; + mapAttrsToList + optionalString + readFile + versionAtLeast + versionOlder + ; inherit (lib.strings) sanitizeDerivationName; - toCoordinates = id: + toCoordinates = + id: let coords = builtins.split ":" id; - parseVersion = version: + parseVersion = + version: let parts = builtins.split ":" version; base = elemAt parts 0; in - if length parts >= 2 - then - let - snapshot = elemAt parts 2; - in - replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base - else - base; - - in rec { + if length parts >= 2 then + let + snapshot = elemAt parts 2; + in + replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base + else + base; + in + rec { group = elemAt coords 0; module = elemAt coords 2; version = elemAt coords 4; @@ -150,43 +170,46 @@ let # Fetch urls using the scheme for the first entry only; there isn't a # straightforward way to tell Nix to try multiple fetchers in turn # and short-circuit on the first successful fetch. - fetch = name: { url, hash }: + fetch = + name: + { url, hash }: let scheme = head (builtins.match "([a-z0-9+.-]+)://.*" url); fetch' = getAttr scheme fetchers'; in - fetch' { inherit url hash; }; + fetch' { inherit url hash; }; - mkModule = id: artifacts: + mkModule = + id: artifacts: let coords = toCoordinates id; - modulePath = "${replaceStrings ["."] ["/"] coords.group}/${coords.module}/${coords.version}"; + modulePath = "${replaceStrings [ "." ] [ "/" ] coords.group}/${coords.module}/${coords.version}"; in - stdenv.mkDerivation { - pname = sanitizeDerivationName "${coords.group}-${coords.module}"; - version = coords.uniqueVersion; + stdenv.mkDerivation { + pname = sanitizeDerivationName "${coords.group}-${coords.module}"; + version = coords.uniqueVersion; - srcs = mapAttrsToList fetch artifacts; + srcs = mapAttrsToList fetch artifacts; - dontPatch = true; - dontConfigure = true; - dontBuild = true; - dontFixup = true; - dontInstall = true; + dontPatch = true; + dontConfigure = true; + dontBuild = true; + dontFixup = true; + dontInstall = true; - preUnpack = '' - mkdir -p "$out/${modulePath}" - ''; + preUnpack = '' + mkdir -p "$out/${modulePath}" + ''; - unpackCmd = '' - cp "$curSrc" "$out/${modulePath}/$(stripHash "$curSrc")" - ''; + unpackCmd = '' + cp "$curSrc" "$out/${modulePath}/$(stripHash "$curSrc")" + ''; - sourceRoot = "."; + sourceRoot = "."; - preferLocalBuild = true; - allowSubstitutes = false; - }; + preferLocalBuild = true; + allowSubstitutes = false; + }; # Intermediate dependency spec. # @@ -195,11 +218,15 @@ let # derivation created with 'mkModule'. This allows users extra flexibility # to do things like patching native libraries with patchelf or replacing # artifacts entirely. - lockedDependencies = final: if lockFile == null then {} else - let - lockedDependencySpecs = fromJSON (readFile lockFile); - in mapAttrs mkModule lockedDependencySpecs; - + lockedDependencies = + final: + if lockFile == null then + { } + else + let + lockedDependencySpecs = fromJSON (readFile lockFile); + in + mapAttrs mkModule lockedDependencySpecs; finalDependencies = let @@ -207,7 +234,7 @@ let extended = lib.extends composedExtension lockedDependencies; fixed = lib.fix extended; in - filter lib.isDerivation (attrValues fixed); + filter lib.isDerivation (attrValues fixed); offlineRepo = symlinkJoin { name = if version != null then "${pname}-${version}-gradle-repo" else "${pname}-gradle-repo"; @@ -261,54 +288,68 @@ let ${extraInit} ''; - buildGradlePackage = stdenv.mkDerivation (finalAttrs: { - - inherit buildJdk enableParallelBuilding enableDebug gradle gradleFlags pname version; - - dontStrip = true; - - nativeBuildInputs = [ finalAttrs.gradle ] - ++ lib.optional (finalAttrs.buildJdk != null) finalAttrs.buildJdk; - - buildPhase = '' - runHook preBuild - - ( - set -eux - - export NIX_OFFLINE_REPO='${offlineRepo}' - - ${optionalString (versionOlder finalAttrs.gradle.version "8.0") '' - # Work around https://github.com/gradle/gradle/issues/1055 - TMPHOME="$(mktemp -d)" - mkdir -p "$TMPHOME/init.d" - export GRADLE_USER_HOME="$TMPHOME" - cp ${initScript} $TMPHOME/ - ''} - - gradle --offline --no-daemon --no-build-cache --no-watch-fs \ - --info --full-stacktrace --warning-mode=all \ - --no-configuration-cache --console=plain \ - -Dmaven.repo.local=${offlineRepo} \ - ${optionalString finalAttrs.enableParallelBuilding "--parallel"} \ - ${optionalString finalAttrs.enableDebug "-Dorg.gradle.debug=true"} \ - ${optionalString (finalAttrs.buildJdk != null) "-Dorg.gradle.java.home=${finalAttrs.buildJdk.home}"} \ - --init-script ${initScript} \ - ${concatStringsSep " " finalAttrs.gradleFlags} - ) - - runHook postBuild - ''; - - passthru = { - inherit offlineRepo; - }; - } // removeAttrs args [ - "lockFile" - "extraInit" - "fetchers" - "overlays" - ]); - + buildGradlePackage = stdenv.mkDerivation ( + finalAttrs: + { + + inherit + buildJdk + enableParallelBuilding + enableDebug + gradle + gradleFlags + pname + version + ; + + dontStrip = true; + + nativeBuildInputs = [ + finalAttrs.gradle + ] ++ lib.optional (finalAttrs.buildJdk != null) finalAttrs.buildJdk; + + buildPhase = '' + runHook preBuild + + ( + set -eux + + export NIX_OFFLINE_REPO='${offlineRepo}' + + ${optionalString (versionOlder finalAttrs.gradle.version "8.0") '' + # Work around https://github.com/gradle/gradle/issues/1055 + TMPHOME="$(mktemp -d)" + mkdir -p "$TMPHOME/init.d" + export GRADLE_USER_HOME="$TMPHOME" + cp ${initScript} $TMPHOME/ + ''} + + gradle --offline --no-daemon --no-build-cache --no-watch-fs \ + --info --full-stacktrace --warning-mode=all \ + --no-configuration-cache --console=plain \ + -Dmaven.repo.local=${offlineRepo} \ + ${optionalString finalAttrs.enableParallelBuilding "--parallel"} \ + ${optionalString finalAttrs.enableDebug "-Dorg.gradle.debug=true"} \ + ${ + optionalString (finalAttrs.buildJdk != null) "-Dorg.gradle.java.home=${finalAttrs.buildJdk.home}" + } \ + --init-script ${initScript} \ + ${concatStringsSep " " finalAttrs.gradleFlags} + ) + + runHook postBuild + ''; + + passthru = { + inherit offlineRepo; + }; + } + // removeAttrs args [ + "lockFile" + "extraInit" + "fetchers" + "overlays" + ] + ); in buildGradlePackage diff --git a/gradle.properties b/gradle.properties index db26ac0..3d9fb41 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,4 +2,4 @@ org.gradle.jvmargs='-Dfile.encoding=UTF-8' org.gradle.caching=true org.gradle.configuration-cache=true -VERSION=1.0.0-rc2 +VERSION=2.0.0 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5a048ce..ae27794 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] gradle = "8.7" junit = "5.8.2" -kotlin = "1.9.22" +kotlin = "1.9.24" ktor = "2.3.11" kotest = "5.9.0" @@ -16,7 +16,7 @@ ktor-server-netty = { module = "io.ktor:ktor-server-netty", version.ref = "ktor" okio = "com.squareup.okio:okio:3.9.0" serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3" slf4j-simple = "org.slf4j:slf4j-simple:1.7.36" -xmlutil = "io.github.pdvrieze.xmlutil:serialization-jvm:+" +xmlutil = "io.github.pdvrieze.xmlutil:serialization-jvm:0.90.0-RC1" [plugins] pluginPublish = { id = "com.gradle.plugin-publish", version = "1.2.1" } diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt index 25f0cc1..d952782 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/DependencyCoordinates.kt @@ -20,11 +20,12 @@ interface DependencyCoordinates : Serializable { */ val timestamp: String? - val id: String get() = if (timestamp != null) { - "$group:$artifact:$version:$timestamp" - } else { - "$group:$artifact:$version" - } + val id: String get() = + if (timestamp != null) { + "$group:$artifact:$version:$timestamp" + } else { + "$group:$artifact:$version" + } val timestampedCoordinates: DependencyCoordinates diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt index 51f6157..8906b86 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/PluginParameters.kt @@ -1,4 +1,4 @@ package org.nixos.gradle2nix.model -const val RESOLVE_PROJECT_TASK = "resolveProjectDependencies" -const val RESOLVE_ALL_TASK = "resolveAllDependencies" +const val RESOLVE_PROJECT_TASK = "resolveProjectArtifacts" +const val RESOLVE_ALL_TASK = "resolveAllArtifacts" diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencyCoordinates.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencyCoordinates.kt index 98bc0c9..46df9da 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencyCoordinates.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencyCoordinates.kt @@ -6,9 +6,8 @@ data class DefaultDependencyCoordinates( override val group: String, override val artifact: String, override val version: String, - override val timestamp: String? = null + override val timestamp: String? = null, ) : DependencyCoordinates { - override val timestampedCoordinates: DependencyCoordinates get() = DefaultDependencyCoordinates(group, artifact, timestampedVersion) @@ -21,7 +20,7 @@ data class DefaultDependencyCoordinates( 3 -> DefaultDependencyCoordinates(parts[0], parts[1], parts[2]) 4 -> DefaultDependencyCoordinates(parts[0], parts[1], parts[2], parts[3]) else -> throw IllegalStateException( - "couldn't parse dependency coordinates: '$id'" + "couldn't parse dependency coordinates: '$id'", ) } } diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencySet.kt b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencySet.kt index 1606888..ccaf314 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencySet.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/model/impl/DefaultDependencySet.kt @@ -4,5 +4,5 @@ import org.nixos.gradle2nix.model.DependencySet import org.nixos.gradle2nix.model.ResolvedDependency data class DefaultDependencySet( - override val dependencies: List + override val dependencies: List, ) : DependencySet diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 3dd678a..a00f9a7 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -1,4 +1,5 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { id("org.jetbrains.kotlin.jvm") @@ -11,8 +12,6 @@ dependencies { shadow(kotlin("reflect")) implementation(project(":model")) implementation(libs.serialization.json) - testImplementation(libs.kotest.assertions) - testImplementation(libs.kotest.runner) } java { @@ -22,7 +21,10 @@ java { kotlin { compilerOptions { + apiVersion.set(KotlinVersion.KOTLIN_1_6) + languageVersion.set(KotlinVersion.KOTLIN_1_6) jvmTarget.set(JvmTarget.JVM_1_8) + optIn.add("kotlin.RequiresOptIn") } } @@ -56,11 +58,4 @@ tasks { validatePlugins { enableStricterValidation.set(true) } - - withType { - useJUnitPlatform() - testLogging { - events("passed", "skipped", "failed") - } - } } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/DependencyExtractor.kt similarity index 51% rename from plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt rename to plugin/src/main/kotlin/org/nixos/gradle2nix/DependencyExtractor.kt index 1c62060..755ca1c 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/DependencyExtractor.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/DependencyExtractor.kt @@ -1,7 +1,5 @@ -package org.nixos.gradle2nix.dependencygraph +package org.nixos.gradle2nix -import java.io.File -import java.util.concurrent.ConcurrentHashMap import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject @@ -11,6 +9,8 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider +import org.gradle.api.services.BuildService +import org.gradle.api.services.BuildServiceParameters import org.gradle.internal.hash.ChecksumService import org.gradle.internal.operations.BuildOperationDescriptor import org.gradle.internal.operations.BuildOperationListener @@ -26,20 +26,52 @@ import org.nixos.gradle2nix.model.impl.DefaultDependencyCoordinates import org.nixos.gradle2nix.model.impl.DefaultDependencySet import org.nixos.gradle2nix.model.impl.DefaultResolvedArtifact import org.nixos.gradle2nix.model.impl.DefaultResolvedDependency +import java.io.File +import java.util.concurrent.ConcurrentHashMap + +internal abstract class DependencyExtractorService : + BuildService, BuildOperationListener, AutoCloseable { + var extractor: DependencyExtractor? = null -class DependencyExtractor( - private val artifactCachesProvider: ArtifactCachesProvider, - private val checksumService: ChecksumService, - private val fileStoreAndIndexProvider: FileStoreAndIndexProvider, -) : BuildOperationListener { + override fun started( + buildOperation: BuildOperationDescriptor, + startEvent: OperationStartEvent, + ) {} + + override fun progress( + operationIdentifier: OperationIdentifier, + progressEvent: OperationProgressEvent, + ) {} + + override fun finished( + buildOperation: BuildOperationDescriptor, + finishEvent: OperationFinishEvent, + ) { + extractor?.finished(buildOperation, finishEvent) + } + + override fun close() { + extractor = null + } +} +class DependencyExtractor : BuildOperationListener { private val urls = ConcurrentHashMap() - override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) {} + override fun started( + buildOperation: BuildOperationDescriptor, + startEvent: OperationStartEvent, + ) {} - override fun progress(operationIdentifier: OperationIdentifier, progressEvent: OperationProgressEvent) {} + override fun progress( + operationIdentifier: OperationIdentifier, + progressEvent: OperationProgressEvent, + ) {} - override fun finished(buildOperation: BuildOperationDescriptor, finishEvent: OperationFinishEvent) { + override fun finished( + buildOperation: BuildOperationDescriptor, + finishEvent: OperationFinishEvent, + ) { when (val details = buildOperation.details) { is ExternalResourceReadBuildOperationType.Details -> urls.computeIfAbsent(details.location) { Unit } is ExternalResourceReadMetadataBuildOperationType.Details -> urls.computeIfAbsent(details.location) { Unit } @@ -47,7 +79,11 @@ class DependencyExtractor( } ?: return } - fun buildDependencySet(): DependencySet { + fun buildDependencySet( + artifactCachesProvider: ArtifactCachesProvider, + checksumService: ChecksumService, + fileStoreAndIndexProvider: FileStoreAndIndexProvider, + ): DependencySet { val files = mutableMapOf>() val mappings = mutableMapOf>() @@ -69,23 +105,28 @@ class DependencyExtractor( } return DefaultDependencySet( - dependencies = buildList { - for ((componentId, componentFiles) in files) { - add(DefaultResolvedDependency( - componentId, - buildList { - val remoteMappings = mappings[componentId] - for ((file, url) in componentFiles) { - add(DefaultResolvedArtifact( - remoteMappings?.get(file.name) ?: file.name, - checksumService.sha256(file).toString(), - url - )) - } - } - )) - } - } + dependencies = + buildList { + for ((componentId, componentFiles) in files) { + add( + DefaultResolvedDependency( + componentId, + buildList { + val remoteMappings = mappings[componentId] + for ((file, url) in componentFiles) { + add( + DefaultResolvedArtifact( + remoteMappings?.get(file.name) ?: file.name, + checksumService.sha256(file).toString(), + url, + ), + ) + } + }, + ), + ) + } + }, ) } } @@ -98,18 +139,19 @@ private fun cachedComponentId(file: File): DependencyCoordinates? { } @OptIn(ExperimentalSerializationApi::class) -private fun parseFileMappings(file: File): Map? = try { - Json.decodeFromStream(file.inputStream()) - .jsonObject["variants"]?.jsonArray - ?.flatMap { it.jsonObject["files"]?.jsonArray ?: emptyList() } - ?.map { it.jsonObject } - ?.mapNotNull { - val name = it["name"]?.jsonPrimitive?.content ?: return@mapNotNull null - val url = it["url"]?.jsonPrimitive?.content ?: return@mapNotNull null - name to url - } - ?.toMap() - ?.takeUnless { it.isEmpty() } -} catch (e: Throwable) { - null -} +private fun parseFileMappings(file: File): Map? = + try { + Json.decodeFromStream(file.inputStream()) + .jsonObject["variants"]?.jsonArray + ?.flatMap { it.jsonObject["files"]?.jsonArray ?: emptyList() } + ?.map { it.jsonObject } + ?.mapNotNull { + val name = it["name"]?.jsonPrimitive?.content ?: return@mapNotNull null + val url = it["url"]?.jsonPrimitive?.content ?: return@mapNotNull null + name to url + } + ?.toMap() + ?.takeUnless { it.isEmpty() } + } catch (e: Throwable) { + null + } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt index b22b424..c44766a 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt @@ -2,53 +2,91 @@ package org.nixos.gradle2nix -import javax.inject.Inject import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider +import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider import org.gradle.api.invocation.Gradle +import org.gradle.internal.hash.ChecksumService import org.gradle.tooling.provider.model.ToolingModelBuilder import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry -import org.nixos.gradle2nix.dependencygraph.DependencyExtractor -import org.nixos.gradle2nix.forceresolve.ForceDependencyResolutionPlugin +import org.gradle.util.GradleVersion import org.nixos.gradle2nix.model.DependencySet -import org.nixos.gradle2nix.util.artifactCachesProvider -import org.nixos.gradle2nix.util.buildOperationListenerManager -import org.nixos.gradle2nix.util.checksumService -import org.nixos.gradle2nix.util.fileStoreAndIndexProvider - -abstract class Gradle2NixPlugin @Inject constructor( - private val toolingModelBuilderRegistry: ToolingModelBuilderRegistry -): Plugin { - - override fun apply(gradle: Gradle) { - val dependencyExtractor = DependencyExtractor( - gradle.artifactCachesProvider, - gradle.checksumService, - gradle.fileStoreAndIndexProvider, - ) +import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK +import javax.inject.Inject - toolingModelBuilderRegistry.register(DependencySetModelBuilder(dependencyExtractor)) +abstract class Gradle2NixPlugin + @Inject + constructor( + private val toolingModelBuilderRegistry: ToolingModelBuilderRegistry, + ) : Plugin { + override fun apply(gradle: Gradle) { + val dependencyExtractor = DependencyExtractor() - gradle.buildOperationListenerManager.addListener(dependencyExtractor) + toolingModelBuilderRegistry.register( + DependencySetModelBuilder( + dependencyExtractor, + gradle.artifactCachesProvider, + gradle.checksumService, + gradle.fileStoreAndIndexProvider, + ), + ) - // Configuration caching is not enabled with dependency verification so this is fine for now. - // Gradle 9.x might remove this though. - @Suppress("DEPRECATION") - gradle.buildFinished { - gradle.buildOperationListenerManager.removeListener(dependencyExtractor) - } + if (GradleVersion.current() < GradleVersion.version("8.0")) { + val extractor = DependencyExtractor() + gradle.buildOperationListenerManager.addListener(extractor) + + @Suppress("DEPRECATION") + gradle.buildFinished { + gradle.buildOperationListenerManager.removeListener(extractor) + } + } else { + val serviceProvider = + gradle.sharedServices.registerIfAbsent( + "nixDependencyExtractor", + DependencyExtractorService::class.java, + ).map { service -> + service.apply { extractor = dependencyExtractor } + } + + gradle.buildEventListenerRegistryInternal.onOperationCompletion(serviceProvider) + } - gradle.pluginManager.apply(ForceDependencyResolutionPlugin::class.java) + gradle.projectsEvaluated { + val resolveAll = gradle.rootProject.tasks.register(RESOLVE_ALL_TASK) + + // Depend on "dependencies" task in all projects + gradle.allprojects { project -> + val resolveProject = project.createResolveTask() + resolveAll.configure { it.dependsOn(resolveProject) } + } + + // Depend on all 'resolveBuildDependencies' task in each included build + gradle.includedBuilds.forEach { includedBuild -> + resolveAll.configure { + it.dependsOn(includedBuild.task(":$RESOLVE_ALL_TASK")) + } + } + } + } } -} internal class DependencySetModelBuilder( private val dependencyExtractor: DependencyExtractor, + private val artifactCachesProvider: ArtifactCachesProvider, + private val checksumService: ChecksumService, + private val fileStoreAndIndexProvider: FileStoreAndIndexProvider, ) : ToolingModelBuilder { - override fun canBuild(modelName: String): Boolean = modelName == DependencySet::class.qualifiedName - override fun buildAll(modelName: String, project: Project): DependencySet { - return dependencyExtractor.buildDependencySet() + override fun buildAll( + modelName: String, + project: Project, + ): DependencySet { + return dependencyExtractor.buildDependencySet( + artifactCachesProvider, + checksumService, + fileStoreAndIndexProvider, + ) } } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/GradleExtensions.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/GradleExtensions.kt new file mode 100644 index 0000000..1447426 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/GradleExtensions.kt @@ -0,0 +1,42 @@ +package org.nixos.gradle2nix + +import org.gradle.api.artifacts.Configuration +import org.gradle.api.internal.GradleInternal +import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider +import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider +import org.gradle.api.invocation.Gradle +import org.gradle.internal.build.event.BuildEventListenerRegistryInternal +import org.gradle.internal.hash.ChecksumService +import org.gradle.internal.operations.BuildOperationListenerManager +import org.gradle.util.GradleVersion +import java.lang.reflect.Method + +internal inline val Gradle.artifactCachesProvider: ArtifactCachesProvider + get() = service() + +internal inline val Gradle.buildEventListenerRegistryInternal: BuildEventListenerRegistryInternal + get() = service() + +internal inline val Gradle.buildOperationListenerManager: BuildOperationListenerManager + get() = service() + +internal inline val Gradle.checksumService: ChecksumService + get() = service() + +internal inline val Gradle.fileStoreAndIndexProvider: FileStoreAndIndexProvider + get() = service() + +internal inline fun Gradle.service(): T = (this as GradleInternal).services.get(T::class.java) + +private val canSafelyBeResolvedMethod: Method? = + try { + val dc = Class.forName("org.gradle.internal.deprecation.DeprecatableConfiguration") + dc.getMethod("canSafelyBeResolved") + } catch (e: ReflectiveOperationException) { + null + } + +internal fun Configuration.canSafelyBeResolved(): Boolean = canSafelyBeResolvedMethod?.invoke(this) as? Boolean ?: isCanBeResolved + +internal val gradleVersionIsAtLeast8: Boolean = + GradleVersion.current() >= GradleVersion.version("8.0") diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/ResolveAllArtifacts.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/ResolveAllArtifacts.kt new file mode 100644 index 0000000..86314ec --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/ResolveAllArtifacts.kt @@ -0,0 +1,66 @@ +package org.nixos.gradle2nix + +import org.gradle.api.DefaultTask +import org.gradle.api.Project +import org.gradle.api.Task +import org.gradle.api.artifacts.Configuration +import org.gradle.api.artifacts.component.ModuleComponentIdentifier +import org.gradle.api.file.FileCollection +import org.gradle.api.model.ObjectFactory +import org.gradle.api.tasks.Internal +import org.gradle.api.tasks.TaskAction +import org.gradle.api.tasks.TaskProvider +import org.gradle.internal.serialization.Cached +import org.gradle.work.DisableCachingByDefault +import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK +import javax.inject.Inject + +internal fun Project.createResolveTask(): TaskProvider { + return if (gradleVersionIsAtLeast8) { + tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTask::class.java) + } else { + tasks.register(RESOLVE_PROJECT_TASK, LegacyResolveProjectDependenciesTask::class.java) + } +} + +@DisableCachingByDefault(because = "Not worth caching") +sealed class AbstractResolveProjectDependenciesTask : DefaultTask() { + @Internal + protected fun getReportableConfigurations(): List { + return project.configurations.filter { it.canSafelyBeResolved() } + } +} + +@DisableCachingByDefault(because = "Not worth caching") +abstract class LegacyResolveProjectDependenciesTask : AbstractResolveProjectDependenciesTask() { + @TaskAction + fun action() { + for (configuration in getReportableConfigurations()) { + configuration.incoming.resolutionResult.root + } + } +} + +@DisableCachingByDefault(because = "Not worth caching") +abstract class ResolveProjectDependenciesTask + @Inject + constructor( + private val objects: ObjectFactory, + ) : AbstractResolveProjectDependenciesTask() { + private val artifactFiles = Cached.of { artifactFiles() } + + private fun artifactFiles(): FileCollection { + return objects.fileCollection().from( + getReportableConfigurations().map { configuration -> + configuration.incoming.artifactView { viewConfiguration -> + viewConfiguration.componentFilter { it is ModuleComponentIdentifier } + }.files + }, + ) + } + + @TaskAction + fun action() { + artifactFiles.get().count() + } + } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/AbstractResolveProjectDependenciesTask.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/AbstractResolveProjectDependenciesTask.kt deleted file mode 100644 index 9e05333..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/AbstractResolveProjectDependenciesTask.kt +++ /dev/null @@ -1,15 +0,0 @@ -package org.nixos.gradle2nix.forceresolve - -import org.gradle.api.DefaultTask -import org.gradle.api.artifacts.Configuration -import org.gradle.api.tasks.Internal -import org.gradle.work.DisableCachingByDefault -import org.nixos.gradle2nix.util.canSafelyBeResolved - -@DisableCachingByDefault(because = "Not worth caching") -abstract class AbstractResolveProjectDependenciesTask : DefaultTask() { - @Internal - protected fun getReportableConfigurations(): List { - return project.configurations.filter { it.canSafelyBeResolved() } - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt deleted file mode 100644 index 73f358f..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ForceDependencyResolutionPlugin.kt +++ /dev/null @@ -1,63 +0,0 @@ -package org.nixos.gradle2nix.forceresolve - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.Task -import org.gradle.api.invocation.Gradle -import org.gradle.api.tasks.TaskProvider -import org.gradle.util.GradleVersion -import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK -import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK - -// TODO: Rename these - -/** - * Adds a task to resolve all dependencies in a Gradle build tree. - */ -class ForceDependencyResolutionPlugin : Plugin { - override fun apply(gradle: Gradle) { - gradle.projectsEvaluated { - val resolveAllDeps = gradle.rootProject.tasks.register(RESOLVE_ALL_TASK) - - // Depend on "dependencies" task in all projects - gradle.allprojects { project -> - val projectTaskFactory = getResolveProjectDependenciesTaskFactory() - val resolveProjectDeps = projectTaskFactory.create(project) - resolveAllDeps.configure { it.dependsOn(resolveProjectDeps) } - } - - // Depend on all 'resolveBuildDependencies' task in each included build - gradle.includedBuilds.forEach { includedBuild -> - resolveAllDeps.configure { - it.dependsOn(includedBuild.task(":$RESOLVE_ALL_TASK")) - } - } - } - } - - private fun getResolveProjectDependenciesTaskFactory(): ResolveProjectDependenciesTaskFactory { - val gradleVersion = GradleVersion.current() - val gradle8 = GradleVersion.version("8.0") - return if (gradleVersion >= gradle8) { - ResolveProjectDependenciesTaskFactory.Current - } else { - ResolveProjectDependenciesTaskFactory.Legacy - } - } - - private sealed interface ResolveProjectDependenciesTaskFactory { - fun create(project: Project): TaskProvider - - data object Current : ResolveProjectDependenciesTaskFactory { - override fun create(project: Project): TaskProvider { - return project.tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTask::class.java) - } - } - - data object Legacy : ResolveProjectDependenciesTaskFactory { - override fun create(project: Project): TaskProvider { - return project.tasks.register(RESOLVE_PROJECT_TASK, LegacyResolveProjectDependenciesTask::class.java) - } - } - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt deleted file mode 100644 index 598f342..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/LegacyResolveProjectDependenciesTask.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.nixos.gradle2nix.forceresolve - -import org.gradle.api.DefaultTask -import org.gradle.api.artifacts.Configuration -import org.gradle.api.tasks.TaskAction -import org.gradle.work.DisableCachingByDefault - -@DisableCachingByDefault(because = "Not worth caching") -abstract class LegacyResolveProjectDependenciesTask : AbstractResolveProjectDependenciesTask() { - @TaskAction - fun action() { - for (configuration in getReportableConfigurations()) { - configuration.incoming.resolutionResult.root - } - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt deleted file mode 100644 index f35af26..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/forceresolve/ResolveProjectDependenciesTask.kt +++ /dev/null @@ -1,31 +0,0 @@ -package org.nixos.gradle2nix.forceresolve - -import javax.inject.Inject -import org.gradle.api.artifacts.component.ModuleComponentIdentifier -import org.gradle.api.file.FileCollection -import org.gradle.api.model.ObjectFactory -import org.gradle.api.tasks.TaskAction -import org.gradle.internal.serialization.Cached -import org.gradle.work.DisableCachingByDefault - -@DisableCachingByDefault(because = "Not worth caching") -abstract class ResolveProjectDependenciesTask @Inject constructor( - private val objects: ObjectFactory -): AbstractResolveProjectDependenciesTask() { - private val artifactFiles = Cached.of { artifactFiles() } - - private fun artifactFiles(): FileCollection { - return objects.fileCollection().from( - getReportableConfigurations().map { configuration -> - configuration.incoming.artifactView { viewConfiguration -> - viewConfiguration.componentFilter { it is ModuleComponentIdentifier } - }.files - } - ) - } - - @TaskAction - fun action() { - artifactFiles.get().count() - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt deleted file mode 100644 index 81f5c78..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/util/GradleExtensions.kt +++ /dev/null @@ -1,36 +0,0 @@ -package org.nixos.gradle2nix.util - -import java.lang.reflect.Method -import org.gradle.api.artifacts.Configuration -import org.gradle.api.internal.GradleInternal -import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider -import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider -import org.gradle.api.invocation.Gradle -import org.gradle.internal.hash.ChecksumService -import org.gradle.internal.operations.BuildOperationAncestryTracker -import org.gradle.internal.operations.BuildOperationListenerManager - -internal inline val Gradle.artifactCachesProvider: ArtifactCachesProvider - get() = service() - -internal inline val Gradle.buildOperationListenerManager: BuildOperationListenerManager - get() = service() - -internal inline val Gradle.checksumService: ChecksumService - get() = service() - -internal inline val Gradle.fileStoreAndIndexProvider: FileStoreAndIndexProvider - get() = service() - -internal inline fun Gradle.service(): T = - (this as GradleInternal).services.get(T::class.java) - -private val canSafelyBeResolvedMethod: Method? = try { - val dc = Class.forName("org.gradle.internal.deprecation.DeprecatableConfiguration") - dc.getMethod("canSafelyBeResolved") -} catch (e: ReflectiveOperationException) { - null -} - -internal fun Configuration.canSafelyBeResolved(): Boolean = - canSafelyBeResolvedMethod?.invoke(this) as? Boolean ?: isCanBeResolved From a7be916e9758e106557be0a6a13ce08fe874e468 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Wed, 29 May 2024 18:16:15 -0700 Subject: [PATCH 19/34] Remove unused test files --- .../settings-buildscript/groovy/default.nix | 9 - .../groovy/gradle-env.json | 456 ------------------ .../groovy/gradle-env.nix | 368 -------------- .../groovy/semantic-build-versioning.gradle | 1 - .../groovy/settings.gradle | 2 - 5 files changed, 836 deletions(-) delete mode 100644 fixtures/projects/integration/settings-buildscript/groovy/default.nix delete mode 100644 fixtures/projects/integration/settings-buildscript/groovy/gradle-env.json delete mode 100644 fixtures/projects/integration/settings-buildscript/groovy/gradle-env.nix delete mode 100644 fixtures/projects/integration/settings-buildscript/groovy/semantic-build-versioning.gradle diff --git a/fixtures/projects/integration/settings-buildscript/groovy/default.nix b/fixtures/projects/integration/settings-buildscript/groovy/default.nix deleted file mode 100644 index 89507f1..0000000 --- a/fixtures/projects/integration/settings-buildscript/groovy/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -with (import { }); -let - buildGradle = callPackage ./gradle-env.nix { }; -in -buildGradle { - envSpec = ./gradle-env.json; - src = ./.; - gradleFlags = [ "tasks" ]; -} diff --git a/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.json b/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.json deleted file mode 100644 index 2f884e0..0000000 --- a/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.json +++ /dev/null @@ -1,456 +0,0 @@ -{ - "": { - "name": "settings-buildscript", - "version": "1.1.0", - "path": "", - "gradle": { - "version": "5.0", - "type": "bin", - "url": "https://services.gradle.org/distributions/gradle-5.0-bin.zip", - "sha256": "6157ac9f3410bc63644625b3b3e9e96c963afd7910ae0697792db57813ee79a6", - "nativeVersion": "0.14" - }, - "dependencies": { - "settings": [ - { - "id": { - "group": "com.googlecode.javaewah", - "name": "JavaEWAH", - "version": "1.1.6", - "type": "jar", - "extension": "jar" - }, - "name": "JavaEWAH-1.1.6.jar", - "path": "com/googlecode/javaewah/JavaEWAH/1.1.6", - "urls": [ - "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" - ], - "sha256": "f78d44a1e3877f1ce748b4a85df5171e5e8e9a5c3c6f63bb9003db6f84cce952" - }, - { - "id": { - "group": "com.googlecode.javaewah", - "name": "JavaEWAH", - "version": "1.1.6", - "type": "pom", - "extension": "pom" - }, - "name": "JavaEWAH-1.1.6.pom", - "path": "com/googlecode/javaewah/JavaEWAH/1.1.6", - "urls": [ - "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom" - ], - "sha256": "7f4ff919b1ee17bf3776e058a3f20e6173db23a5e44cf2d107ec7570c186abf0" - }, - { - "id": { - "group": "com.jcraft", - "name": "jsch", - "version": "0.1.54", - "type": "jar", - "extension": "jar" - }, - "name": "jsch-0.1.54.jar", - "path": "com/jcraft/jsch/0.1.54", - "urls": [ - "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" - ], - "sha256": "92eb273a3316762478fdd4fe03a0ce1842c56f496c9c12fe1235db80450e1fdb" - }, - { - "id": { - "group": "com.jcraft", - "name": "jsch", - "version": "0.1.54", - "type": "pom", - "extension": "pom" - }, - "name": "jsch-0.1.54.pom", - "path": "com/jcraft/jsch/0.1.54", - "urls": [ - "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom" - ], - "sha256": "ab8f512039be7f6ae20e18e743b4a9d8a20958494431917da58ae5aaef8a3478" - }, - { - "id": { - "group": "commons-codec", - "name": "commons-codec", - "version": "1.6", - "type": "jar", - "extension": "jar" - }, - "name": "commons-codec-1.6.jar", - "path": "commons-codec/commons-codec/1.6", - "urls": [ - "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" - ], - "sha256": "54b34e941b8e1414bd3e40d736efd3481772dc26db3296f6aa45cec9f6203d86" - }, - { - "id": { - "group": "commons-codec", - "name": "commons-codec", - "version": "1.6", - "type": "pom", - "extension": "pom" - }, - "name": "commons-codec-1.6.pom", - "path": "commons-codec/commons-codec/1.6", - "urls": [ - "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom" - ], - "sha256": "a06e35d3fff3a6b813d94894ebf3e498f9540c864c5b39ae783907e3a6c72889" - }, - { - "id": { - "group": "commons-logging", - "name": "commons-logging", - "version": "1.1.3", - "type": "jar", - "extension": "jar" - }, - "name": "commons-logging-1.1.3.jar", - "path": "commons-logging/commons-logging/1.1.3", - "urls": [ - "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" - ], - "sha256": "70903f6fc82e9908c8da9f20443f61d90f0870a312642991fe8462a0b9391784" - }, - { - "id": { - "group": "commons-logging", - "name": "commons-logging", - "version": "1.1.3", - "type": "pom", - "extension": "pom" - }, - "name": "commons-logging-1.1.3.pom", - "path": "commons-logging/commons-logging/1.1.3", - "urls": [ - "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom" - ], - "sha256": "3250ac3ac6bd60ed0631f5cd0335032b2993d63e405a6ae0555d27a7e4865849" - }, - { - "id": { - "group": "gradle.plugin.net.vivin", - "name": "gradle-semantic-build-versioning", - "version": "4.0.0", - "type": "jar", - "extension": "jar" - }, - "name": "gradle-semantic-build-versioning-4.0.0.jar", - "path": "gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0", - "urls": [ - "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar" - ], - "sha256": "5138e67ce8e019437800b93c9f6f9d0fcbebefadc96fbc4ebc0975c99a261ef8" - }, - { - "id": { - "group": "gradle.plugin.net.vivin", - "name": "gradle-semantic-build-versioning", - "version": "4.0.0", - "type": "pom", - "extension": "pom" - }, - "name": "gradle-semantic-build-versioning-4.0.0.pom", - "path": "gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0", - "urls": [ - "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom" - ], - "sha256": "4f2828741607ed102d95eb5f189d496c7840ed463acea89f1e51a60567714ef7" - }, - { - "id": { - "group": "org.apache", - "name": "apache", - "version": "9", - "type": "pom", - "extension": "pom" - }, - "name": "apache-9.pom", - "path": "org/apache/apache/9", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/9/apache-9.pom" - ], - "sha256": "4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd" - }, - { - "id": { - "group": "org.apache", - "name": "apache", - "version": "13", - "type": "pom", - "extension": "pom" - }, - "name": "apache-13.pom", - "path": "org/apache/apache/13", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/13/apache-13.pom" - ], - "sha256": "ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d" - }, - { - "id": { - "group": "org.apache.commons", - "name": "commons-parent", - "version": "22", - "type": "pom", - "extension": "pom" - }, - "name": "commons-parent-22.pom", - "path": "org/apache/commons/commons-parent/22", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/22/commons-parent-22.pom" - ], - "sha256": "fb8c5e55e30a7addb4ff210858a0e8d2494ed6757bbe19012da99d51586c3cbb" - }, - { - "id": { - "group": "org.apache.commons", - "name": "commons-parent", - "version": "28", - "type": "pom", - "extension": "pom" - }, - "name": "commons-parent-28.pom", - "path": "org/apache/commons/commons-parent/28", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/28/commons-parent-28.pom" - ], - "sha256": "14733a68e8b120b69de60cd96d222146dcf32f03c1c6cc6a750b1269bafe86c7" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpclient", - "version": "4.3.6", - "type": "jar", - "extension": "jar" - }, - "name": "httpclient-4.3.6.jar", - "path": "org/apache/httpcomponents/httpclient/4.3.6", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" - ], - "sha256": "79838d9eaef73d4f852c63a480830c3a2d4b590f0ab3ae815a489463e4714004" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpclient", - "version": "4.3.6", - "type": "pom", - "extension": "pom" - }, - "name": "httpclient-4.3.6.pom", - "path": "org/apache/httpcomponents/httpclient/4.3.6", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom" - ], - "sha256": "d02634f6131e914961c02aa836711ebac72704b27e26c5bd223bbad89b1b64c3" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-client", - "version": "4.3.6", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-client-4.3.6.pom", - "path": "org/apache/httpcomponents/httpcomponents-client/4.3.6", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-client/4.3.6/httpcomponents-client-4.3.6.pom" - ], - "sha256": "4ada2827b496339826891c7c81dceba647029de6fc1888b16b3cab5650abcc63" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcomponents-core", - "version": "4.3.3", - "type": "pom", - "extension": "pom" - }, - "name": "httpcomponents-core-4.3.3.pom", - "path": "org/apache/httpcomponents/httpcomponents-core/4.3.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core/4.3.3/httpcomponents-core-4.3.3.pom" - ], - "sha256": "c16e2fc0d49ba7a02cef5b5e2600585a9f673553328a6f9e58f24296df1dd031" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcore", - "version": "4.3.3", - "type": "jar", - "extension": "jar" - }, - "name": "httpcore-4.3.3.jar", - "path": "org/apache/httpcomponents/httpcore/4.3.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" - ], - "sha256": "5285de80af1651c489313b91a9f40c65a4cdcb6b3bde716fcc028d16869a5a93" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "httpcore", - "version": "4.3.3", - "type": "pom", - "extension": "pom" - }, - "name": "httpcore-4.3.3.pom", - "path": "org/apache/httpcomponents/httpcore/4.3.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom" - ], - "sha256": "b427f7cf67c75a4e3f9e2108d35bf45303573c145ec778fcadcffacef17a1264" - }, - { - "id": { - "group": "org.apache.httpcomponents", - "name": "project", - "version": "7", - "type": "pom", - "extension": "pom" - }, - "name": "project-7.pom", - "path": "org/apache/httpcomponents/project/7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/project/7/project-7.pom" - ], - "sha256": "3d6eba428555a558de046b5d76eacc1f5a54b4f5f20b84d636ed7aff18aa48c3" - }, - { - "id": { - "group": "org.eclipse.jgit", - "name": "org.eclipse.jgit", - "version": "4.8.0.201706111038-r", - "type": "jar", - "extension": "jar" - }, - "name": "org.eclipse.jgit-4.8.0.201706111038-r.jar", - "path": "org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r", - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar" - ], - "sha256": "49d912e8d5cce0dd08dca3d390189db8692a8f7e3363cdbbe182581462000aba" - }, - { - "id": { - "group": "org.eclipse.jgit", - "name": "org.eclipse.jgit", - "version": "4.8.0.201706111038-r", - "type": "pom", - "extension": "pom" - }, - "name": "org.eclipse.jgit-4.8.0.201706111038-r.pom", - "path": "org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r", - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom" - ], - "sha256": "a556a9f5adfc6af49b2a12e72dc3cd7e43db8fdc216c0f35885972a2f5ada27d" - }, - { - "id": { - "group": "org.eclipse.jgit", - "name": "org.eclipse.jgit-parent", - "version": "4.8.0.201706111038-r", - "type": "pom", - "extension": "pom" - }, - "name": "org.eclipse.jgit-parent-4.8.0.201706111038-r.pom", - "path": "org/eclipse/jgit/org.eclipse.jgit-parent/4.8.0.201706111038-r", - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit-parent/4.8.0.201706111038-r/org.eclipse.jgit-parent-4.8.0.201706111038-r.pom" - ], - "sha256": "396a4cc894206873ff107d066a996252b0b47f585b88cf57fc3b31e93d492878" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-api", - "version": "1.7.2", - "type": "jar", - "extension": "jar" - }, - "name": "slf4j-api-1.7.2.jar", - "path": "org/slf4j/slf4j-api/1.7.2", - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" - ], - "sha256": "3bae789b401333b2a1d1603b7fa573e19908628191707203f6eb708cdee2c052" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-api", - "version": "1.7.2", - "type": "pom", - "extension": "pom" - }, - "name": "slf4j-api-1.7.2.pom", - "path": "org/slf4j/slf4j-api/1.7.2", - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom" - ], - "sha256": "2eaca71afe0a1516f4abd8e9ff907838d268f38c81c3a542cce8d7f3b87c5d4c" - }, - { - "id": { - "group": "org.slf4j", - "name": "slf4j-parent", - "version": "1.7.2", - "type": "pom", - "extension": "pom" - }, - "name": "slf4j-parent-1.7.2.pom", - "path": "org/slf4j/slf4j-parent/1.7.2", - "urls": [ - "https://plugins.gradle.org/m2/org/slf4j/slf4j-parent/1.7.2/slf4j-parent-1.7.2.pom" - ], - "sha256": "1d8e084a6f2384ade42685332b52a0ece090478641dc14c0fa8c52e1e2984425" - }, - { - "id": { - "group": "org.sonatype.oss", - "name": "oss-parent", - "version": "5", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-5.pom", - "path": "org/sonatype/oss/oss-parent/5", - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom" - ], - "sha256": "1678d4120a585d8a630131aeec4c524d928398583b7eab616ee7d5a87f520d3d" - }, - { - "id": { - "group": "org.sonatype.oss", - "name": "oss-parent", - "version": "6", - "type": "pom", - "extension": "pom" - }, - "name": "oss-parent-6.pom", - "path": "org/sonatype/oss/oss-parent/6", - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/6/oss-parent-6.pom" - ], - "sha256": "b4306d13e8f5392458a1b30866f1cff161b3d2e6999a88d059eea3932c8a8499" - } - ], - "plugin": [], - "buildscript": [], - "project": [] - } - } -} \ No newline at end of file diff --git a/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.nix b/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.nix deleted file mode 100644 index c150b9c..0000000 --- a/fixtures/projects/integration/settings-buildscript/groovy/gradle-env.nix +++ /dev/null @@ -1,368 +0,0 @@ -# This file is generated by gradle2nix. -# -# Example usage (e.g. in default.nix): -# -# with (import {}); -# let -# buildGradle = callPackage ./gradle-env.nix {}; -# in -# buildGradle { -# envSpec = ./gradle-env.json; -# -# src = ./.; -# -# gradleFlags = [ "installDist" ]; -# -# installPhase = '' -# mkdir -p $out -# cp -r app/build/install/myproject $out -# ''; -# } - -{ - stdenv, - buildEnv, - fetchurl, - gradleGen, - writeText, - writeTextDir, -}: - -{ - envSpec, - pname ? null, - version ? null, - enableParallelBuilding ? true, - gradleFlags ? [ "build" ], - gradlePackage ? null, - enableDebug ? false, - ... -}@args: - -let - inherit (builtins) - attrValues - concatStringsSep - filter - fromJSON - match - replaceStrings - sort - ; - - inherit (stdenv.lib) - assertMsg - concatMapStringsSep - groupBy' - hasSuffix - last - mapAttrs - mapAttrsToList - optionalString - readFile - removeSuffix - unique - versionAtLeast - versionOlder - ; - - mkDep = - depSpec: - stdenv.mkDerivation { - inherit (depSpec) name; - - src = fetchurl { inherit (depSpec) urls sha256; }; - - phases = "installPhase"; - - installPhase = '' - mkdir -p $out/${depSpec.path} - ln -s $src $out/${depSpec.path}/${depSpec.name} - ''; - }; - - mkModuleMetadata = - deps: - let - ids = filter (id: id.type == "pom") (map (dep: dep.id) deps); - - modules = - groupBy' - ( - meta: id: - let - isNewer = versionOlder meta.latest id.version; - isNewerRelease = !(hasSuffix "-SNAPSHOT" id.version) && versionOlder meta.release id.version; - in - { - groupId = id.group; - artifactId = id.name; - latest = if isNewer then id.version else meta.latest; - release = if isNewerRelease then id.version else meta.release; - versions = meta.versions ++ [ id.version ]; - } - ) - { - latest = ""; - release = ""; - versions = [ ]; - } - (id: "${replaceStrings [ "." ] [ "/" ] id.group}/${id.name}/maven-metadata.xml") - ids; - in - attrValues ( - mapAttrs ( - path: meta: - let - versions' = sort versionOlder (unique meta.versions); - in - with meta; - writeTextDir path '' - - - ${groupId} - ${artifactId} - - ${optionalString (latest != "") "${latest}"} - ${optionalString (release != "") "${release}"} - - ${concatMapStringsSep "\n " (v: "${v}") versions'} - - - - '' - ) modules - ); - - mkSnapshotMetadata = - deps: - let - snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps; - - modules = - groupBy' - ( - meta: dep: - let - id = dep.id; - isNewer = dep.build > meta.buildNumber; - # Timestamp values can be bogus, e.g. jitpack.io - updated = - if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null then - replaceStrings [ "." ] [ "" ] dep.timestamp - else - ""; - in - { - groupId = id.group; - artifactId = id.name; - version = id.version; - timestamp = if isNewer then dep.timestamp else meta.timestamp; - buildNumber = if isNewer then dep.build else meta.buildNumber; - lastUpdated = if isNewer then updated else meta.lastUpdated; - versions = meta.versions or [ ] ++ [ - { - classifier = id.classifier or ""; - extension = id.extension; - value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}"; - updated = updated; - } - ]; - } - ) - { - timestamp = ""; - buildNumber = -1; - lastUpdated = ""; - } - ( - dep: - "${replaceStrings [ "." ] [ "/" ] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml" - ) - snapshotDeps; - - mkSnapshotVersion = version: '' - - ${optionalString (version.classifier != "") "${version.classifier}"} - ${version.extension} - ${version.value} - ${optionalString (version.updated != "") "${version.updated}"} - - ''; - in - attrValues ( - mapAttrs ( - path: meta: - with meta; - writeTextDir path '' - - - ${groupId} - ${artifactId} - ${version} - - - ${optionalString (timestamp != "") "${timestamp}"} - ${optionalString (buildNumber != -1) "${toString buildNumber}"} - - ${optionalString (lastUpdated != "") "${lastUpdated}"} - - ${concatMapStringsSep "\n " mkSnapshotVersion versions} - - - - '' - ) modules - ); - - mkRepo = - project: type: deps: - buildEnv { - name = "${project}-gradle-${type}-env"; - paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps; - }; - - mkInitScript = - projectSpec: gradle: - let - repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies; - hasDependencies = mapAttrs (type: deps: deps != [ ]) projectSpec.dependencies; - in - assert ( - assertMsg (hasDependencies.settings -> versionAtLeast gradle.version "6.0") '' - Project `${projectSpec.name}' has settings script dependencies, such as settings - plugins, which are not supported by gradle2nix for Gradle versions prior to 6.0. - - Potential remedies: - - Pass `--gradle-version=' to the gradle2nix command. - - Patch the `settings.gradle[.kts]' file to remove script dependencies. - '' - ); - - writeText "init.gradle" '' - static def offlineRepo(RepositoryHandler repositories, String env, String path) { - repositories.clear() - repositories.maven { - name "Nix''${env.capitalize()}MavenOffline" - url path - metadataSources { - it.gradleMetadata() - it.mavenPom() - it.artifact() - } - } - repositories.ivy { - name "Nix''${env.capitalize()}IvyOffline" - url path - layout "maven" - metadataSources { - it.gradleMetadata() - it.ivyDescriptor() - it.artifact() - } - } - } - - ${optionalString (hasDependencies.settings && (versionAtLeast gradle.version "6.0")) '' - gradle.beforeSettings { - offlineRepo(it.buildscript.repositories, "settings", "${repos.settings}") - } - ''} - - ${optionalString (hasDependencies.plugin) '' - gradle.settingsEvaluated { - offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}") - } - ''} - - ${optionalString (hasDependencies.buildscript) '' - gradle.projectsLoaded { - allprojects { - buildscript { - offlineRepo(repositories, "buildscript", "${repos.buildscript}") - } - } - } - ''} - - ${optionalString (hasDependencies.project) '' - gradle.projectsLoaded { - allprojects { - offlineRepo(repositories, "project", "${repos.project}") - } - } - ''} - ''; - - mkGradle = - gradleSpec: - gradleGen.gradleGen { - inherit (gradleSpec) nativeVersion; - - name = "gradle-${gradleSpec.version}-${gradleSpec.type}"; - - src = fetchurl { inherit (gradleSpec) url sha256; }; - } - // { - inherit (gradleSpec) version; - }; - - mkProjectEnv = projectSpec: rec { - inherit (projectSpec) name path version; - gradle = args.gradlePackage or mkGradle projectSpec.gradle; - initScript = mkInitScript projectSpec gradle; - }; - - gradleEnv = mapAttrs (_: p: mkProjectEnv p) (fromJSON (readFile envSpec)); - - projectEnv = gradleEnv.""; - pname = args.pname or projectEnv.name; - version = args.version or projectEnv.version; - - buildProject = env: flags: '' - gradle --offline --no-daemon --no-build-cache \ - --info --full-stacktrace --warning-mode=all \ - ${optionalString enableParallelBuilding "--parallel"} \ - ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ - --init-script ${env.initScript} \ - ${optionalString (env.path != "") ''-p "${env.path}"''} \ - ${concatStringsSep " " flags} - ''; - - buildIncludedProjects = concatStringsSep "\n" ( - mapAttrsToList (_: env: buildProject env [ "build" ]) (removeAttrs gradleEnv [ "" ]) - ); - - buildRootProject = buildProject projectEnv gradleFlags; -in -stdenv.mkDerivation ( - args - // { - - inherit pname version; - - nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ projectEnv.gradle ]; - - buildPhase = - args.buildPhase or '' - runHook preBuild - - ( - set -x - - # use the init script here - TMPHOME=$(mktemp -d) - mkdir -p $TMPHOME/init.d - cp ${projectEnv.initScript} $TMPHOME/init.d - - export "GRADLE_USER_HOME=$TMPHOME" - ${buildIncludedProjects} - ${buildRootProject} - ) - - runHook postBuild - ''; - - dontStrip = true; - } -) diff --git a/fixtures/projects/integration/settings-buildscript/groovy/semantic-build-versioning.gradle b/fixtures/projects/integration/settings-buildscript/groovy/semantic-build-versioning.gradle deleted file mode 100644 index 4a81ba9..0000000 --- a/fixtures/projects/integration/settings-buildscript/groovy/semantic-build-versioning.gradle +++ /dev/null @@ -1 +0,0 @@ -startingVersion = '1.0.0' \ No newline at end of file diff --git a/fixtures/projects/integration/settings-buildscript/groovy/settings.gradle b/fixtures/projects/integration/settings-buildscript/groovy/settings.gradle index 1dfc8cd..ab00974 100644 --- a/fixtures/projects/integration/settings-buildscript/groovy/settings.gradle +++ b/fixtures/projects/integration/settings-buildscript/groovy/settings.gradle @@ -10,5 +10,3 @@ buildscript { } rootProject.name = "settings-buildscript" - -//apply plugin: 'net.vivin.gradle-semantic-build-versioning' \ No newline at end of file From 0851f936133a38e68f94e47638b7059437be37d6 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Wed, 29 May 2024 18:24:28 -0700 Subject: [PATCH 20/34] Relicense under Apache 2.0 --- README.org | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.org b/README.org index 80fc3f3..e1fe787 100644 --- a/README.org +++ b/README.org @@ -224,4 +224,4 @@ for examples of testing with these fixtures. ** License -=gradle2nix= is licensed under the [[./COPYING][MIT License]]. +=gradle2nix= is licensed under the [[./COPYING][Apache License 2.0]]. From 44f193c8f9f0b2333fc552555f0230cf301f6a48 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Thu, 30 May 2024 11:04:56 -0700 Subject: [PATCH 21/34] buildGradlePackage: always set GRADLE_USER_HOME --- gradle.nix | 78 +++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/gradle.nix b/gradle.nix index 749e5fd..12c92cf 100644 --- a/gradle.nix +++ b/gradle.nix @@ -128,7 +128,6 @@ let inherit (lib) mapAttrsToList - optionalString readFile versionAtLeast versionOlder @@ -167,9 +166,6 @@ let https = fetchurl; } // fetchers; - # Fetch urls using the scheme for the first entry only; there isn't a - # straightforward way to tell Nix to try multiple fetchers in turn - # and short-circuit on the first successful fetch. fetch = name: { url, hash }: @@ -304,41 +300,45 @@ let dontStrip = true; - nativeBuildInputs = [ - finalAttrs.gradle - ] ++ lib.optional (finalAttrs.buildJdk != null) finalAttrs.buildJdk; - - buildPhase = '' - runHook preBuild - - ( - set -eux - - export NIX_OFFLINE_REPO='${offlineRepo}' - - ${optionalString (versionOlder finalAttrs.gradle.version "8.0") '' - # Work around https://github.com/gradle/gradle/issues/1055 - TMPHOME="$(mktemp -d)" - mkdir -p "$TMPHOME/init.d" - export GRADLE_USER_HOME="$TMPHOME" - cp ${initScript} $TMPHOME/ - ''} - - gradle --offline --no-daemon --no-build-cache --no-watch-fs \ - --info --full-stacktrace --warning-mode=all \ - --no-configuration-cache --console=plain \ - -Dmaven.repo.local=${offlineRepo} \ - ${optionalString finalAttrs.enableParallelBuilding "--parallel"} \ - ${optionalString finalAttrs.enableDebug "-Dorg.gradle.debug=true"} \ - ${ - optionalString (finalAttrs.buildJdk != null) "-Dorg.gradle.java.home=${finalAttrs.buildJdk.home}" - } \ - --init-script ${initScript} \ - ${concatStringsSep " " finalAttrs.gradleFlags} - ) - - runHook postBuild - ''; + nativeBuildInputs = [ finalAttrs.gradle ]; + + buildPhase = + let + finalGradleFlags = + [ + "--console=plain" + "--no-build-cache" + "--no-configuration-cache" + "--no-daemon" + "--no-watch-fs" + "--offline" + ] + ++ lib.optional (finalAttrs.buildJdk != null) "-Dorg.gradle.java.home=${finalAttrs.buildJdk.home}" + ++ lib.optional finalAttrs.enableDebug "-Dorg.gradle.debug=true" + ++ lib.optional finalAttrs.enableParallelBuilding "--parallel" + ++ lib.optional (versionAtLeast finalAttrs.gradle.version "8.0") "--init-script=${initScript}" + ++ finalAttrs.gradleFlags; + in + '' + runHook preBuild + + ( + set -eux + + export NIX_OFFLINE_REPO='${offlineRepo}' + export GRADLE_USER_HOME="$(mktemp -d)" + + ${lib.optionalString (versionOlder finalAttrs.gradle.version "8.0") '' + # Work around https://github.com/gradle/gradle/issues/1055 + mkdir -p "$GRADLE_USER_HOME/init.d" + ln -s ${initScript} "$GRADLE_USER_HOME/init.d/nix-init.gradle" + ''} + + gradle ${builtins.toString finalGradleFlags} + ) + + runHook postBuild + ''; passthru = { inherit offlineRepo; From 69574d8eebc2bc0a5e184e25cb2b1215a57da7b5 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Thu, 30 May 2024 11:14:27 -0700 Subject: [PATCH 22/34] Lower JDK compatibility to JDK 8 --- app/build.gradle.kts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ef07f6f..5b00682 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { id("org.jetbrains.kotlin.jvm") id("org.jetbrains.kotlin.plugin.serialization") @@ -38,6 +40,18 @@ application { .rename("plugin.*\\.jar", "plugin.jar") } +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + optIn.add("kotlin.RequiresOptIn") + } +} + sourceSets { test { resources { From a9353317959b7627a5754c6863e58231988f548a Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Thu, 30 May 2024 17:16:57 -0700 Subject: [PATCH 23/34] Use older version of BuildServiceRegistry.registerIfAbsent --- .../src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt index c44766a..6e008d4 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt @@ -15,6 +15,7 @@ import org.nixos.gradle2nix.model.DependencySet import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK import javax.inject.Inject +@Suppress("UNUSED") abstract class Gradle2NixPlugin @Inject constructor( @@ -45,7 +46,7 @@ abstract class Gradle2NixPlugin gradle.sharedServices.registerIfAbsent( "nixDependencyExtractor", DependencyExtractorService::class.java, - ).map { service -> + ) {}.map { service -> service.apply { extractor = dependencyExtractor } } From 85cebdd557553c2bfbadc1f0267fe9234e894660 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Tue, 4 Jun 2024 13:11:18 -0700 Subject: [PATCH 24/34] Separate plugins for different Gradle APIs --- .editorconfig | 1 + app/build.gradle.kts | 8 +- app/src/dist/share/init.gradle | 10 +- build.gradle.kts | 3 - buildSrc/build.gradle.kts | 8 + buildSrc/settings.gradle.kts | 14 + .../gradle-kotlin-conventions.gradle.kts | 35 + .../main/kotlin/plugin-conventions.gradle.kts | 60 + flake.nix | 2 +- gradle-env.json | 3162 ----------------- gradle.lock | 1188 ++++--- gradle.properties | 1 + gradle/libs.versions.toml | 15 +- model/build.gradle.kts | 26 +- plugin/base/build.gradle.kts | 12 + .../main/kotlin/DependencyExtractor.base.kt | 18 + .../main/kotlin/Gradle2NixPlugin.gradle69.kt | 7 + .../main/kotlin/GradleCacheAccess.gradle69.kt | 18 + .../kotlin/ResolveAllArtifacts.gradle69.kt | 20 + plugin/build.gradle.kts | 61 - plugin/common/build.gradle.kts | 9 + .../src/main/kotlin}/DependencyExtractor.kt | 41 +- .../main/kotlin/DependencySetModelBuilder.kt | 27 + .../src/main/kotlin/Gradle2NixPlugin.kt | 32 + .../src/main/kotlin/GradleCacheAccess.kt | 11 + .../src/main/kotlin/GradleExtensions.kt | 6 + .../src/main/kotlin/ResolveAllArtifacts.kt | 50 + plugin/gradle8/build.gradle.kts | 8 + .../kotlin/DependencyExtractor.gradle8.kt | 57 + .../kotlin/ResolveAllArtifacts.gradle8.kt | 38 + plugin/gradle80/build.gradle.kts | 12 + .../main/kotlin/Gradle2NixPlugin.gradle80.kt | 7 + .../main/kotlin/GradleCacheAccess.gradle80.kt | 18 + plugin/gradle81/build.gradle.kts | 12 + .../main/kotlin/Gradle2NixPlugin.gradle81.kt | 7 + .../main/kotlin/GradleCacheAccess.gradle81.kt | 18 + .../org/nixos/gradle2nix/Gradle2NixPlugin.kt | 93 - .../org/nixos/gradle2nix/GradleExtensions.kt | 42 - .../nixos/gradle2nix/ResolveAllArtifacts.kt | 66 - settings.gradle.kts | 6 +- 40 files changed, 1247 insertions(+), 3982 deletions(-) create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/settings.gradle.kts create mode 100644 buildSrc/src/main/kotlin/gradle-kotlin-conventions.gradle.kts create mode 100644 buildSrc/src/main/kotlin/plugin-conventions.gradle.kts delete mode 100644 gradle-env.json create mode 100644 plugin/base/build.gradle.kts create mode 100644 plugin/base/src/main/kotlin/DependencyExtractor.base.kt create mode 100644 plugin/base/src/main/kotlin/Gradle2NixPlugin.gradle69.kt create mode 100644 plugin/base/src/main/kotlin/GradleCacheAccess.gradle69.kt create mode 100644 plugin/base/src/main/kotlin/ResolveAllArtifacts.gradle69.kt delete mode 100644 plugin/build.gradle.kts create mode 100644 plugin/common/build.gradle.kts rename plugin/{src/main/kotlin/org/nixos/gradle2nix => common/src/main/kotlin}/DependencyExtractor.kt (83%) create mode 100644 plugin/common/src/main/kotlin/DependencySetModelBuilder.kt create mode 100644 plugin/common/src/main/kotlin/Gradle2NixPlugin.kt create mode 100644 plugin/common/src/main/kotlin/GradleCacheAccess.kt create mode 100644 plugin/common/src/main/kotlin/GradleExtensions.kt create mode 100644 plugin/common/src/main/kotlin/ResolveAllArtifacts.kt create mode 100644 plugin/gradle8/build.gradle.kts create mode 100644 plugin/gradle8/src/main/kotlin/DependencyExtractor.gradle8.kt create mode 100644 plugin/gradle8/src/main/kotlin/ResolveAllArtifacts.gradle8.kt create mode 100644 plugin/gradle80/build.gradle.kts create mode 100644 plugin/gradle80/src/main/kotlin/Gradle2NixPlugin.gradle80.kt create mode 100644 plugin/gradle80/src/main/kotlin/GradleCacheAccess.gradle80.kt create mode 100644 plugin/gradle81/build.gradle.kts create mode 100644 plugin/gradle81/src/main/kotlin/Gradle2NixPlugin.gradle81.kt create mode 100644 plugin/gradle81/src/main/kotlin/GradleCacheAccess.gradle81.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/GradleExtensions.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/ResolveAllArtifacts.kt diff --git a/.editorconfig b/.editorconfig index 697e2c3..99140b1 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,4 +16,5 @@ ktlint_function_naming_ignore_when_annotated_with = [unset] ktlint_function_signature_body_expression_wrapping = multiline ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 2 ktlint_ignore_back_ticked_identifier = false +ktlint_standard_filename = disabled max_line_length = 140 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5b00682..213fb61 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,13 +12,14 @@ dependencies { implementation(project(":model")) implementation(libs.clikt) implementation(libs.gradle.toolingApi) + implementation(libs.kotlin.stdlib) implementation(libs.kotlinx.coroutines.core) implementation(libs.serialization.json) runtimeOnly(libs.slf4j.simple) - "share"(project(":plugin", configuration = "shadow")) { - isTransitive = false - } + "share"(project(":plugin:base", configuration = "shadow")) + "share"(project(":plugin:gradle80", configuration = "shadow")) + "share"(project(":plugin:gradle81", configuration = "shadow")) testImplementation(libs.kotest.assertions) testImplementation(libs.kotest.runner) @@ -37,7 +38,6 @@ application { applicationDistribution .from(configurations.named("share")) .into("share") - .rename("plugin.*\\.jar", "plugin.jar") } java { diff --git a/app/src/dist/share/init.gradle b/app/src/dist/share/init.gradle index f0c230f..e78e9fb 100644 --- a/app/src/dist/share/init.gradle +++ b/app/src/dist/share/init.gradle @@ -1,6 +1,14 @@ +import org.gradle.util.GradleVersion + initscript { dependencies { - classpath files("plugin.jar") + if (GradleVersion.current() >= GradleVersion.version("8.1")) { + classpath files("plugin-gradle81.jar") + } else if (GradleVersion.current() >= GradleVersion.version("8.0")) { + classpath files("plugin-gradle80.jar") + } else { + classpath files("plugin-base.jar") + } } } diff --git a/build.gradle.kts b/build.gradle.kts index b62f9cc..0c003fb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,6 @@ plugins { base - alias(libs.plugins.kotlin.jvm) apply false alias(libs.plugins.kotlin.serialization) apply false - alias(libs.plugins.pluginPublish) apply false - alias(libs.plugins.shadow) apply false } group = "org.nixos.gradle2nix" diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 0000000..2c06ba4 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + `kotlin-dsl` +} + +dependencies { + implementation(libs.gradle.kotlin) + implementation(libs.gradle.shadow) +} diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts new file mode 100644 index 0000000..8c62dfb --- /dev/null +++ b/buildSrc/settings.gradle.kts @@ -0,0 +1,14 @@ +@file:Suppress("UnstableApiUsage") + +dependencyResolutionManagement { + repositories { + mavenCentral() + gradlePluginPortal() + } + + versionCatalogs { + register("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} diff --git a/buildSrc/src/main/kotlin/gradle-kotlin-conventions.gradle.kts b/buildSrc/src/main/kotlin/gradle-kotlin-conventions.gradle.kts new file mode 100644 index 0000000..fe67cee --- /dev/null +++ b/buildSrc/src/main/kotlin/gradle-kotlin-conventions.gradle.kts @@ -0,0 +1,35 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + id("org.jetbrains.kotlin.jvm") +} + +dependencies { + compileOnly(kotlin("stdlib")) +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +kotlin.compilerOptions { + @Suppress("DEPRECATION") // we can't use api version greater than 1.4 as minimal supported Gradle version uses kotlin-stdlib 1.4 + apiVersion.set(KotlinVersion.KOTLIN_1_4) + @Suppress("DEPRECATION") // we can't use language version greater than 1.5 as minimal supported Gradle embeds Kotlin 1.4 + languageVersion.set(KotlinVersion.KOTLIN_1_5) + jvmTarget.set(JvmTarget.JVM_1_8) + optIn.add("kotlin.RequiresOptIn") + freeCompilerArgs.addAll( + listOf( + "-Xskip-prerelease-check", + "-Xsuppress-version-warnings", + // We have to override the default value for `-Xsam-conversions` to `class` + // otherwise the compiler would compile lambdas using invokedynamic, + // such lambdas are not serializable so are not compatible with Gradle configuration cache. + // It doesn't lead to a significant difference in binaries sizes, and previously (before LV 1.5) the `class` value was set by default. + "-Xsam-conversions=class", + ), + ) +} diff --git a/buildSrc/src/main/kotlin/plugin-conventions.gradle.kts b/buildSrc/src/main/kotlin/plugin-conventions.gradle.kts new file mode 100644 index 0000000..c78dae0 --- /dev/null +++ b/buildSrc/src/main/kotlin/plugin-conventions.gradle.kts @@ -0,0 +1,60 @@ +@file:Suppress("UnstableApiUsage") + +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +plugins { + id("gradle-kotlin-conventions") + id("io.github.goooler.shadow") + `java-gradle-plugin` +} + +dependencies { +} + +configure { + plugins { + register("gradle2nix") { + id = "org.nixos.gradle2nix" + displayName = "gradle2nix" + description = "Expose Gradle tooling model for the gradle2nix tool" + implementationClass = "org.nixos.gradle2nix.Gradle2NixPlugin" + } + } +} + +configurations { + "api" { + dependencies.remove(project.dependencies.gradleApi()) + } +} + +tasks { + "jar" { + enabled = false + } + + named("shadowJar", ShadowJar::class) { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + isPreserveFileTimestamps = false + isReproducibleFileOrder = true + val mode644 = 0b110100100 + val mode755 = 0b111101101 + fileMode = mode644 + dirMode = mode755 + filesMatching("**/bin/*") { mode = mode755 } + filesMatching("**/bin/*.bat") { mode = mode644 } + + relocate("kotlinx", "${project.group}.shadow.kotlinx") + relocate("org.intellij", "${project.group}.shadow.intellij") + relocate("org.jetbrains", "${project.group}.shadow.jetbrains") + + dependencies { + exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-stdlib" } + exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-stdlib-common" } + exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-stdlib-jdk7" } + exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-stdlib-jdk8" } + exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-reflect" } + exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-script-runtime" } + } + } +} diff --git a/flake.nix b/flake.nix index 9d9554e..564a678 100644 --- a/flake.nix +++ b/flake.nix @@ -42,7 +42,7 @@ formatter = pkgs.writeShellScriptBin "gradle2nix-fmt" '' fail=0 ${lib.getExe pkgs.nixfmt-rfc-style} $@ || fail=1 - ${lib.getExe pkgs.ktlint} --relative -l warn -F || fail=1 + ${lib.getExe pkgs.git} ls-files -z '*.kt' '*.kts' | ${lib.getExe pkgs.ktlint} --relative -l warn -F --patterns-from-stdin= || fail=1 [ $fail -eq 0 ] || echo "Formatting failed." >&2 exit $fail ''; diff --git a/gradle-env.json b/gradle-env.json deleted file mode 100644 index 3aad6d2..0000000 --- a/gradle-env.json +++ /dev/null @@ -1,3162 +0,0 @@ -{ - "com.fasterxml:oss-parent:48": { - "oss-parent-48.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/oss-parent/48/oss-parent-48.pom" - ], - "hash": "sha256-EbuiLYYxgW4JtiOiAHR0U9ZJGmbqyPXAicc9ordJAU8=" - } - }, - "com.fasterxml.jackson:jackson-bom:2.14.1": { - "jackson-bom-2.14.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.14.1/jackson-bom-2.14.1.pom" - ], - "hash": "sha256-eP35nlBQ/EhfQRfauMzL+2+mxoOF6184oJtlU3HUpsw=" - } - }, - "com.fasterxml.jackson:jackson-parent:2.14": { - "jackson-parent-2.14.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.14/jackson-parent-2.14.pom" - ], - "hash": "sha256-CQat2FWuOfkjV9Y/SFiJsI/KTEOl/kM1ItdTROB1exk=" - } - }, - "com.github.ajalt:clikt:2.8.0": { - "clikt-2.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.jar" - ], - "hash": "sha256-MefokL7AOvKCKKG1akSyvB7Cu57wWMkoiAAW0ZmUhpw=" - }, - "clikt-2.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.module" - ], - "hash": "sha256-63VRQs7Uww/5lU+IH4piAUsdy/SKuciarYjFwpH95Gk=" - }, - "clikt-2.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/2.8.0/clikt-2.8.0.pom" - ], - "hash": "sha256-6njJ/q8ULg4AGtO8Ey95KJKSb7wmYPpu78Mg8Vzw/Hw=" - } - }, - "com.github.ajalt:clikt-metadata:2.8.0": { - "clikt-metadata-2.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.jar" - ], - "hash": "sha256-Nxf/mOths+cC3HT1D4chzIFtNdzpwv/1g+NNUw0/I08=" - }, - "clikt-metadata-2.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.module" - ], - "hash": "sha256-y43UaWNHeqTaxq77g8LBGJqqqJxaV0TPJGGovTAvSmY=" - }, - "clikt-metadata-2.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt-metadata/2.8.0/clikt-metadata-2.8.0.pom" - ], - "hash": "sha256-NtfT5a+1S3UWuJ0btkiAKNr/RrcufE4aXf9GNbtoDc8=" - } - }, - "com.github.ajalt:colormath:1.2.0": { - "colormath-1.2.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.jar" - ], - "hash": "sha256-hqUffbsyq+QQ1UMx7GGsBoSlQ7JO6Xlnu6wKTmcp8DE=" - }, - "colormath-1.2.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.pom" - ], - "hash": "sha256-a3EKjQoQu+PgV5Xvf03ux3j9eQBbDBvA5cF4Ae5r3Z0=" - } - }, - "com.github.ajalt:mordant:1.2.1": { - "mordant-1.2.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.jar" - ], - "hash": "sha256-enFOuNJbTZun8lalTHVZzKh9heyQ1pQ98ZE8rUPbldY=" - }, - "mordant-1.2.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.pom" - ], - "hash": "sha256-8DLcV/gHnB9WJvvF8PZfz14SNA3ictgpsLVOkpeacro=" - } - }, - "com.github.johnrengelman:shadow:8.1.1": { - "shadow-8.1.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.jar" - ], - "hash": "sha256-CEGXVVWQpTuyG1lQijMwVZ9TbdtEjq/R7GdfVGIDb88=" - }, - "shadow-8.1.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.module" - ], - "hash": "sha256-nQ87SqpniYcj6vbF6c0nOHj5V03azWSqNwJDYgzgLko=" - }, - "shadow-8.1.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.pom" - ], - "hash": "sha256-Mu55f8hDI3xM5cSeX0FSxYoIlK/OCg6SY25qLU/JjDU=" - } - }, - "com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:8.1.1": { - "com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/8.1.1/com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom" - ], - "hash": "sha256-PLOIa5ffbgZvEIwxayGfJiyXw8st9tp4kn5kXetkPLA=" - } - }, - "com.gradle.plugin-publish:com.gradle.plugin-publish.gradle.plugin:1.2.1": { - "com.gradle.plugin-publish.gradle.plugin-1.2.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/plugin-publish/com.gradle.plugin-publish.gradle.plugin/1.2.1/com.gradle.plugin-publish.gradle.plugin-1.2.1.pom" - ], - "hash": "sha256-60lBRA8TGZbmT6SCDc264js95UhBi6ke9MY0pqcfVMs=" - } - }, - "com.gradle.publish:plugin-publish-plugin:1.2.1": { - "plugin-publish-plugin-1.2.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar" - ], - "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" - }, - "plugin-publish-plugin-1.2.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module" - ], - "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" - }, - "plugin-publish-plugin-1.2.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom" - ], - "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" - } - }, - "com.squareup.okio:okio:3.9.0": { - "okio-3.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar" - ], - "hash": "sha256-5RilmFYnOh/OGKx9E938aQ3vphItflzQDK4Zti0DR9k=" - }, - "okio-3.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.module" - ], - "hash": "sha256-aNHIef9liTHQKzrb6vu1EuFjwgqQyt8H2QyNvqfnYhA=" - }, - "okio-3.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.pom" - ], - "hash": "sha256-FPNR2puXtDaeP26PaWsK1ANtFNIbD9l6pcjG7BW+fZA=" - } - }, - "com.squareup.okio:okio-jvm:3.9.0": { - "okio-jvm-3.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.jar" - ], - "hash": "sha256-3cOG/xS9JdXJNBZxlur0WxjeTyjhxVpNs3rllMv9N+Q=" - }, - "okio-jvm-3.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.module" - ], - "hash": "sha256-z5coTsYbtR5t/Lx/K22VVsm3s+PLIswOLU8O7782GVs=" - }, - "okio-jvm-3.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.0/okio-jvm-3.9.0.pom" - ], - "hash": "sha256-VEiNRUqsyvaPcZnz3l3Ns4CBblfUYJBJF06FZSAROH4=" - } - }, - "com.typesafe:config:1.4.3": { - "config-1.4.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.jar" - ], - "hash": "sha256-itpMGFznJBZxLWPgta/cXwCcDN9AXl8m7+zfFWql37Y=" - }, - "config-1.4.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.pom" - ], - "hash": "sha256-tn6vqd0iD/h9ANumiACDpSlqXgxsAxA/XUuOHaEDD/M=" - } - }, - "commons-io:commons-io:2.11.0": { - "commons-io-2.11.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar" - ], - "hash": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=" - }, - "commons-io-2.11.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.pom" - ], - "hash": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k=" - } - }, - "io.fabric8:kubernetes-client-bom:5.12.2": { - "kubernetes-client-bom-5.12.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/io/fabric8/kubernetes-client-bom/5.12.2/kubernetes-client-bom-5.12.2.pom" - ], - "hash": "sha256-6qA8FpVlaNVKa6Q31J1Ay/DdjpOXf5hDGCQldrZQvDs=" - } - }, - "io.github.classgraph:classgraph:4.8.172": { - "classgraph-4.8.172.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.jar" - ], - "hash": "sha256-wWseIxpziZL3KVC1Jc774FSkCP9kLsy7IcrdVHCgXyI=" - }, - "classgraph-4.8.172.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.pom" - ], - "hash": "sha256-gD2mlHTiB6oi/xnshXE3MGrU4ahz4V98Xv0sqer9W74=" - } - }, - "io.github.java-diff-utils:java-diff-utils:4.12": { - "java-diff-utils-4.12.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar" - ], - "hash": "sha256-mZCiA5d49rTMlHkBQcKGiGTqzuBiDGxFlFESGpAc1bU=" - }, - "java-diff-utils-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.pom" - ], - "hash": "sha256-wm4JftyOxoBdExmBfSPU5JbMEBXMVdxSAhEtj2qRZfw=" - } - }, - "io.github.java-diff-utils:java-diff-utils-parent:4.12": { - "java-diff-utils-parent-4.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.12/java-diff-utils-parent-4.12.pom" - ], - "hash": "sha256-2BHPnxGMwsrRMMlCetVcF01MCm8aAKwa4cm8vsXESxk=" - } - }, - "io.github.pdvrieze.xmlutil:core:0.86.3": { - "core-0.86.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.jar" - ], - "hash": "sha256-ikZHG7Y7PHhzlsu6WqL2TU4zOgOSAiRBrhIRHn5yjJE=" - }, - "core-0.86.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.module" - ], - "hash": "sha256-MzlXsdCR2LrPqwYCCGgi+a2S9hMCy3Ru8g4Z9nprTbk=" - }, - "core-0.86.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core/0.86.3/core-0.86.3.pom" - ], - "hash": "sha256-ngeyUCJI+U7AYn9Wsn3wiBySBCrfzoCg35oa6sQWg4M=" - } - }, - "io.github.pdvrieze.xmlutil:core-jvm:0.86.3": { - "core-jvm-0.86.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar" - ], - "hash": "sha256-kVJ9hv6gS9YYPRQKCfENqy3qcnrxLSfZFl7jQuo9Dt4=" - }, - "core-jvm-0.86.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.module" - ], - "hash": "sha256-FgIJExZWo2dDGWXYAYk7J3fuguD3ZmaD+nXE+Wck/wc=" - }, - "core-jvm-0.86.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.pom" - ], - "hash": "sha256-oBGIoPlVW1s7nZLlQz242AJ6vjleD/cIBRU+8v6qf4U=" - } - }, - "io.github.pdvrieze.xmlutil:serialization-jvm:0.86.3": { - "serialization-jvm-0.86.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar" - ], - "hash": "sha256-nOJz3LhguSpb8uw2rR4qEbQa7YnGyYTKc+h+/17aG9A=" - }, - "serialization-jvm-0.86.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.module" - ], - "hash": "sha256-3ppDm3mA++bMPDS8rZyEqIMVmdyHZNceD2c93Ho91Jo=" - }, - "serialization-jvm-0.86.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.pom" - ], - "hash": "sha256-OX1XqPVTaUEf7HRETH1NTLaeyYANUkSTrGHekJIl4wc=" - } - }, - "io.kotest:kotest-assertions-api:5.9.0": { - "kotest-assertions-api-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.jar" - ], - "hash": "sha256-JmNIEcOE+VRVVMJUBfLZCMEaeupal1mZM/gsAIRsVAg=" - }, - "kotest-assertions-api-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.module" - ], - "hash": "sha256-qFQu4m/P0+8yxm5e3mjeuvjql90heZH0HSAje7UpT4U=" - }, - "kotest-assertions-api-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.pom" - ], - "hash": "sha256-GjEMzEBJd0cpFIPrOwUMbIle7KTONzPwHdkkZ6ZV8sw=" - } - }, - "io.kotest:kotest-assertions-api-jvm:5.9.0": { - "kotest-assertions-api-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.jar" - ], - "hash": "sha256-Sv9MqD6SBssjiDJd+HKXb1GekloGlJSr7CkuwxFMDQk=" - }, - "kotest-assertions-api-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.module" - ], - "hash": "sha256-XITlW45flkCcy1pCoS3ElCbl1ucWSnMy3wy4wrK21L4=" - }, - "kotest-assertions-api-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.pom" - ], - "hash": "sha256-1g6ynf1tj7NSGYTX+sJaE0AHFHa7ceksV1X70VpaZzY=" - } - }, - "io.kotest:kotest-assertions-core:5.9.0": { - "kotest-assertions-core-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.jar" - ], - "hash": "sha256-+uWJ9I5hs7uiaHvvMbbneu2Ji6dswFU3rdFQ7pSsmkY=" - }, - "kotest-assertions-core-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.module" - ], - "hash": "sha256-p3KZqaKYbphakO0KsWd0pzMPeu/CUnOT3E1HeNPI4sM=" - }, - "kotest-assertions-core-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.pom" - ], - "hash": "sha256-qvu+DMIo9BTt2Va2lHINRZLna47v+MiK211RRQRhu7o=" - } - }, - "io.kotest:kotest-assertions-core-jvm:5.9.0": { - "kotest-assertions-core-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.jar" - ], - "hash": "sha256-TIngmms4JoES/eJqC1LvVLsXhDtBv9IV958s9M3QJ4w=" - }, - "kotest-assertions-core-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.module" - ], - "hash": "sha256-OinQMJG5EyNIVgv1DKJKzEvBzIq+MGE8y/5alzt/F48=" - }, - "kotest-assertions-core-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.pom" - ], - "hash": "sha256-pmgjeAvzFo5CAqPmg6PWZ1K5yg4aaqx4FL/mng155NU=" - } - }, - "io.kotest:kotest-assertions-shared:5.9.0": { - "kotest-assertions-shared-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.jar" - ], - "hash": "sha256-EoSglpgVz7PTk/TOTF2tW1Dc1wvxN4h78MA0yqIVYeE=" - }, - "kotest-assertions-shared-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.module" - ], - "hash": "sha256-KK3K96Q94fICNFI+4csorIc7ztp2VESW8cU1NF2gCJM=" - }, - "kotest-assertions-shared-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.pom" - ], - "hash": "sha256-IGd1Qmuhf36c1WjpZMWGMMNCt2c67pNPIiFVLNDwBww=" - } - }, - "io.kotest:kotest-assertions-shared-jvm:5.9.0": { - "kotest-assertions-shared-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.jar" - ], - "hash": "sha256-b9wtfMr8N1c/rhZ/hOMditN/2DHArXclPzDbuyedJlY=" - }, - "kotest-assertions-shared-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.module" - ], - "hash": "sha256-VGmhRQo07HywKyDjaY3dkHYsEVH6tba/RlWXlrl4OAs=" - }, - "kotest-assertions-shared-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.pom" - ], - "hash": "sha256-VQxkW4k0LR9iU/CXo+CzdyLsOTFxctB+E02E7A8IxKY=" - } - }, - "io.kotest:kotest-common:5.9.0": { - "kotest-common-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.jar" - ], - "hash": "sha256-DGXHvQS/2EX3Lt6hmNrNtLWyBebrIbnsgzSvYMZNpfU=" - }, - "kotest-common-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.module" - ], - "hash": "sha256-lqW8WbrWuITytzfvAR+ytKiZW+NO9eTnDSw99nKoh4M=" - }, - "kotest-common-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.pom" - ], - "hash": "sha256-LGnqBsbRBz1dH/ruD2wS3Lv6W8qOYXgbi8QNi2t+BzY=" - } - }, - "io.kotest:kotest-common-jvm:5.9.0": { - "kotest-common-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.jar" - ], - "hash": "sha256-yLAfI5/3kmxV/2oDYRqXpWSdWS6a0GqhBPM9RJR2uIg=" - }, - "kotest-common-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.module" - ], - "hash": "sha256-uWwklcyvr/yACGF+Sk7NRBmR/tU8QyGhECjxxIspgLE=" - }, - "kotest-common-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.pom" - ], - "hash": "sha256-DJw4J3/CngNTIDXkXDgi3C4B4yC9lPysTGsxMUIJAhM=" - } - }, - "io.kotest:kotest-extensions:5.9.0": { - "kotest-extensions-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.module" - ], - "hash": "sha256-mr4zuEi4bBoBg3YOreTLxF1OEvxEySCz+Dnn6A146rs=" - }, - "kotest-extensions-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.pom" - ], - "hash": "sha256-r36/K79pkmBmSLcdzJdHqDG43LML6A/hCfMDgOf1veU=" - } - }, - "io.kotest:kotest-extensions-jvm:5.9.0": { - "kotest-extensions-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.jar" - ], - "hash": "sha256-Mb5rCyZdL3cS0KdeaOQv6wuOYV+r8BkInn+/5Zc04dA=" - }, - "kotest-extensions-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.module" - ], - "hash": "sha256-BOtQGGme33ZRDZkDA3UZf1+XLUhkfrBNVr4B2EgdTkU=" - }, - "kotest-extensions-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.pom" - ], - "hash": "sha256-6eDaRU1z0/8r4unJOC2QiGFdpHmLjeu6d71tQ0bOa9I=" - } - }, - "io.kotest:kotest-framework-api:5.9.0": { - "kotest-framework-api-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.module" - ], - "hash": "sha256-aGM5P0GVr+lxcVUTl0jDYdWU7KIlL+zs2qZQFg2moXI=" - }, - "kotest-framework-api-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.pom" - ], - "hash": "sha256-DR9H1blAce2rfDWIUeqSozNx5xpjl2AZiLf9cZEZCAs=" - } - }, - "io.kotest:kotest-framework-api-jvm:5.9.0": { - "kotest-framework-api-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.jar" - ], - "hash": "sha256-2SRLxofIOCISZyWzynZ25FZEemBRIQ4lF1z4qyDAtCM=" - }, - "kotest-framework-api-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.module" - ], - "hash": "sha256-losVlXIzbDC3+cKX/PvrfRyPgg6u1lx8d6TLMznY7WI=" - }, - "kotest-framework-api-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.pom" - ], - "hash": "sha256-+M0upKNYQEr5M+QjsDDRT5bGVfO+fqryE9H9cywekwg=" - } - }, - "io.kotest:kotest-framework-concurrency:5.9.0": { - "kotest-framework-concurrency-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.module" - ], - "hash": "sha256-3X24UL0kQmjOFPnvo70y25AKgbmAW5TYJCSnWJIDxB0=" - }, - "kotest-framework-concurrency-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.pom" - ], - "hash": "sha256-ML0NEgw6Tr0BJp5gw3CrNhStctHDX3/qq+/lDSlVC7I=" - } - }, - "io.kotest:kotest-framework-concurrency-jvm:5.9.0": { - "kotest-framework-concurrency-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.jar" - ], - "hash": "sha256-B5txinLAdedCmHOz+VGoVROoA2xeOnbd3ocWEPKbd7U=" - }, - "kotest-framework-concurrency-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.module" - ], - "hash": "sha256-p8YMX+xNYGBE50UAR+JfoGITADC4xYDfDikqYBWzTbQ=" - }, - "kotest-framework-concurrency-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.pom" - ], - "hash": "sha256-xoO5KKNSADRo0j5ZQOnEJEjpknBpfEu8pHOavXSLDbc=" - } - }, - "io.kotest:kotest-framework-discovery:5.9.0": { - "kotest-framework-discovery-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.module" - ], - "hash": "sha256-L+Hiv5t/+eBNzZXjEI7jtfFURkTgZAP7lLkHZIOVCUA=" - }, - "kotest-framework-discovery-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.pom" - ], - "hash": "sha256-ts05NMKO1qZRr4RysuNqOuQMRWldI7As5JE7IULEgnE=" - } - }, - "io.kotest:kotest-framework-discovery-jvm:5.9.0": { - "kotest-framework-discovery-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.jar" - ], - "hash": "sha256-miiiFNkV20R5bwZcHP+7s8I2uJtqazg5UFjYCrg+ggM=" - }, - "kotest-framework-discovery-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.module" - ], - "hash": "sha256-7Xaj5/OnkkcbTUm+u+5pKPGEU0gLopHp5yBJlgAASCE=" - }, - "kotest-framework-discovery-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.pom" - ], - "hash": "sha256-sGGEOZMEvWc0UeszHyP3aqPtPf1dpMeb8dbiIb2MjFs=" - } - }, - "io.kotest:kotest-framework-engine:5.9.0": { - "kotest-framework-engine-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.module" - ], - "hash": "sha256-gZN/CF6jy3S1hxETTtC7VsDymc/DFz27IUVCrMyVJxc=" - }, - "kotest-framework-engine-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.pom" - ], - "hash": "sha256-xBA8Jfhv52zZKiA1irX1jbAUMtcKuBphBChd2MW998U=" - } - }, - "io.kotest:kotest-framework-engine-jvm:5.9.0": { - "kotest-framework-engine-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.jar" - ], - "hash": "sha256-h6Dxzb4o39OyLp5GgSEzCx1zPdoFwkTvhs/ZHaoWYlU=" - }, - "kotest-framework-engine-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.module" - ], - "hash": "sha256-ESmBvZzHXpTgQAm6W7dkWm8AeVEwU79W72QiUnSoBDs=" - }, - "kotest-framework-engine-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.pom" - ], - "hash": "sha256-v8ljQokqqX+yqFM+r+m1elKQlQdCH6sw2K71m5QpGpI=" - } - }, - "io.kotest:kotest-runner-junit5:5.9.0": { - "kotest-runner-junit5-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.jar" - ], - "hash": "sha256-CJ4kQXv59sNO7Fcg7rssvMguooVezvkBM+sX4QedWGg=" - }, - "kotest-runner-junit5-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.module" - ], - "hash": "sha256-AfB70s+KHo+Z+dDmSpQ7X6cxE//szocwqMQ08nZSgvc=" - }, - "kotest-runner-junit5-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.pom" - ], - "hash": "sha256-xeE4b8vdz+kKt18wWVnzltXRxu7l2y/549Ik8QVsmpM=" - } - }, - "io.kotest:kotest-runner-junit5-jvm:5.9.0": { - "kotest-runner-junit5-jvm-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.jar" - ], - "hash": "sha256-dpV0ADmfVaJBZFgUGfKj0H9yfEiwPcOXLiV24YdH6iI=" - }, - "kotest-runner-junit5-jvm-5.9.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.module" - ], - "hash": "sha256-v6MTM0BhaveK/YqdH3bwAQ02Wx6GE2DWpzMqowrKy4s=" - }, - "kotest-runner-junit5-jvm-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.pom" - ], - "hash": "sha256-wuOpHya7dfndAfMnW8E5OL6Lp3KEIBwbov4DODC2xKo=" - } - }, - "io.ktor:ktor-events:2.3.11": { - "ktor-events-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.jar" - ], - "hash": "sha256-qfTivW7ALrt5prOcEEr++k281IA7ufrV2e1XCTRX8G0=" - }, - "ktor-events-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.module" - ], - "hash": "sha256-YScMYk6JE8UBLw87YF0ThAlwNl+5JOw8fuO0hLxTWXY=" - }, - "ktor-events-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.pom" - ], - "hash": "sha256-hcFsb/+tI+3auG+gJU68tB7hhOh9M3Va41ITctMZ8ug=" - } - }, - "io.ktor:ktor-events-jvm:2.3.11": { - "ktor-events-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.jar" - ], - "hash": "sha256-92Dmk7tpaq9srFhEXFI2hY0QzXwVCErCDHp1Ba50kac=" - }, - "ktor-events-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.module" - ], - "hash": "sha256-HW+ysABOvT9w8g0YdMXRR9zcSn4pjM1ogdM/msx9tkE=" - }, - "ktor-events-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.pom" - ], - "hash": "sha256-nssYQanQ3FgvP+/Yl7vKKpqntHd69GbL65epV0IHdAY=" - } - }, - "io.ktor:ktor-http:2.3.11": { - "ktor-http-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.jar" - ], - "hash": "sha256-9PADOhT6whJBqLu+HFzxkzvRA+3I6eJ37j7gwcvTRkI=" - }, - "ktor-http-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.module" - ], - "hash": "sha256-UBgBa5qlACv5oFBoGsFuBRp/uICUhPFWnvdqFpxKKiU=" - }, - "ktor-http-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.pom" - ], - "hash": "sha256-tw7Nks9eqraVRQQDQ19SvqCDJe1VtNKDM1FN0diI0Dc=" - } - }, - "io.ktor:ktor-http-cio:2.3.11": { - "ktor-http-cio-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.module" - ], - "hash": "sha256-/lHSv+0gYTxLvcY4yT1X1ZmldFlXloNtjO7Zybep+n8=" - }, - "ktor-http-cio-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.pom" - ], - "hash": "sha256-p4wT0HqIQfw3MAGgGVPYKT2YDL972n81+FR3+1Ya+RA=" - } - }, - "io.ktor:ktor-http-cio-jvm:2.3.11": { - "ktor-http-cio-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.jar" - ], - "hash": "sha256-bIKoW5GMwAsSSn2w9HTtOH8FFIpCKWgQWG7lkTRNDn8=" - }, - "ktor-http-cio-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.module" - ], - "hash": "sha256-HzV2/lizf5nFj9TuJFmgRmiEoeWTw9Qb5/2/wQ5STtU=" - }, - "ktor-http-cio-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.pom" - ], - "hash": "sha256-vy9Vnf0Mx1NzkCGv7nlbr8U3U8ajWIiGa2J0Fg3stdY=" - } - }, - "io.ktor:ktor-http-jvm:2.3.11": { - "ktor-http-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.jar" - ], - "hash": "sha256-BQMz4biz/zBwvjIW4fPuePqdZQrI0hEEHQW/SCWbTfY=" - }, - "ktor-http-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.module" - ], - "hash": "sha256-BIraZkNbJkbTFrDOjX+aXfau8yuP1KEQ6vaPiqI8zII=" - }, - "ktor-http-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.pom" - ], - "hash": "sha256-CI9yJI9u5cZPW8Wa4i6MzE5ZqDVZ7U89ZGy9vtUDqIU=" - } - }, - "io.ktor:ktor-io:2.3.11": { - "ktor-io-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.jar" - ], - "hash": "sha256-skZKEoTyY57muhpCVDIsxUsFMmWHpG+AFUy9tXAYC7I=" - }, - "ktor-io-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.module" - ], - "hash": "sha256-RvrHp728UxfkD6bGYZpMUr7X02JaNP2kWRjDyq04r2A=" - }, - "ktor-io-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.pom" - ], - "hash": "sha256-lFDUN7vjB58G5wAePQmaH2l7Fc7UWO8BorXFd1cVrPI=" - } - }, - "io.ktor:ktor-io-jvm:2.3.11": { - "ktor-io-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.jar" - ], - "hash": "sha256-nJt0vx7xFuSybVyUUJoFd7yhQPgwqAzz9S0kVM0BEhs=" - }, - "ktor-io-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.module" - ], - "hash": "sha256-EIlmqdlJzZRN/9MqUTc0pPKJyCRGt4nACmopTWM7ER8=" - }, - "ktor-io-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.pom" - ], - "hash": "sha256-mbL5+MkKES6IVeY55AE+jXlYxCD8UVGq1iha3NdD0Ak=" - } - }, - "io.ktor:ktor-network:2.3.11": { - "ktor-network-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.module" - ], - "hash": "sha256-SlUAXFfLaTqLMK+eWk302ojX/kU93TRlvWsJEAkmbCw=" - }, - "ktor-network-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.pom" - ], - "hash": "sha256-eV7oO+aNHBYV/JibHkjPGNbeNvWK9vBb/7QjtOnsC18=" - } - }, - "io.ktor:ktor-network-jvm:2.3.11": { - "ktor-network-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.jar" - ], - "hash": "sha256-9njugGQUgEV28XM5R2Lg4busruMHOaBI1Oy0g4fe5GY=" - }, - "ktor-network-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.module" - ], - "hash": "sha256-jrPuxh+wtawI9Xvqfr83Q/Bcim9DImLUcuVu7JsuGZU=" - }, - "ktor-network-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.pom" - ], - "hash": "sha256-MdRLyv4uXbBWgn3XwoxljAHVxY5NC2IsHJ0m63SpqwM=" - } - }, - "io.ktor:ktor-serialization:2.3.11": { - "ktor-serialization-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.jar" - ], - "hash": "sha256-I/oFsvofdMi+5JsvpNCmzRaXdvXLw7e00I5nfmr7n14=" - }, - "ktor-serialization-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.module" - ], - "hash": "sha256-RY1rJzbNfObY9IMGdTEbJiZbM5tYoX0nLc0RFXI8lHI=" - }, - "ktor-serialization-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.pom" - ], - "hash": "sha256-Cr072jnh1FQGF7zPRAO3J56g7KkUSo1q/+F/OPc8PGU=" - } - }, - "io.ktor:ktor-serialization-jvm:2.3.11": { - "ktor-serialization-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.jar" - ], - "hash": "sha256-TC80IiaKlf63dwx10dJ+CdAJ3Wl8m0vyb9kxczLbUD4=" - }, - "ktor-serialization-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.module" - ], - "hash": "sha256-9ys7vY/D7I5DSDSPQt3OUq8+Y/Cens9C5M2WkG2R1Tg=" - }, - "ktor-serialization-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.pom" - ], - "hash": "sha256-nVGClI7BadSZPzuAFmETNuh/2PrjgidwH1imzh/Enp8=" - } - }, - "io.ktor:ktor-server-core:2.3.11": { - "ktor-server-core-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.jar" - ], - "hash": "sha256-PztUA1uh8KXfyq3LoJd62JDVDEUa7iLVPvTVa1Om/O4=" - }, - "ktor-server-core-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.module" - ], - "hash": "sha256-9KlYTH9QBmFcpCiXTk3Tz6Rr9fgq9AgjV51bPBTHYhQ=" - }, - "ktor-server-core-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.pom" - ], - "hash": "sha256-111k/+joPoOX6n+cgCufGnnAjtYXzbHpj1hAzqNEVZo=" - } - }, - "io.ktor:ktor-server-core-jvm:2.3.11": { - "ktor-server-core-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.jar" - ], - "hash": "sha256-6mi102OoWntBxzISf3BLDpj+OqwSJSl2PYrnAEf788o=" - }, - "ktor-server-core-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.module" - ], - "hash": "sha256-FMtHfiKcHfwZgmJjHqajyNXVabXFm0zExQ7fM++s0DE=" - }, - "ktor-server-core-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.pom" - ], - "hash": "sha256-maADHI6bP1m7Bkt2pdkoD4tx19nGLtwl2hfC1E+CeeE=" - } - }, - "io.ktor:ktor-server-host-common:2.3.11": { - "ktor-server-host-common-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.module" - ], - "hash": "sha256-cg0+sO8u7FRrD4iq4pL0uILk+Pze6GY7D6KyiEXHt04=" - }, - "ktor-server-host-common-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.pom" - ], - "hash": "sha256-B8Z/z3Xv1x18tmbpWfd/dSwCj1iywfoiUHLzYhGYVqw=" - } - }, - "io.ktor:ktor-server-host-common-jvm:2.3.11": { - "ktor-server-host-common-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.jar" - ], - "hash": "sha256-HjvNeLHpjsoQjZJ7u1QdDZtyP7IYcm1h6Fucpq4cjis=" - }, - "ktor-server-host-common-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.module" - ], - "hash": "sha256-xwLIGRtpP1d1ZpHRRkZ4u6mOhtCEXQKDdiGZS+uRlTI=" - }, - "ktor-server-host-common-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.pom" - ], - "hash": "sha256-Gr877I0aFWryXIDK700+sC3wxIGN1CghIW2+SCeZXfQ=" - } - }, - "io.ktor:ktor-server-netty:2.3.11": { - "ktor-server-netty-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.jar" - ], - "hash": "sha256-Wkb9vED9LXglmIPEzG6vO14pDdB9HEbqiO6j1I9QV3I=" - }, - "ktor-server-netty-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.module" - ], - "hash": "sha256-LUtE8EMgnpzg9IDdZmgoSbkyOfKIIBo1UqglQd1rE30=" - }, - "ktor-server-netty-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.pom" - ], - "hash": "sha256-qxGxtuLNQMM816OjnKeeSZlw/rFhIoI3ClZfEn0kXSM=" - } - }, - "io.ktor:ktor-server-netty-jvm:2.3.11": { - "ktor-server-netty-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.jar" - ], - "hash": "sha256-+YxIUr325irKzWu54yreP13lsmM+UY7F7B2tmD1XX5E=" - }, - "ktor-server-netty-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.module" - ], - "hash": "sha256-NYOIDN8BaY3r8qB3UPuenAvD369DZCLiRZw+f31Arig=" - }, - "ktor-server-netty-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.pom" - ], - "hash": "sha256-J+fP+sEa+ugSVjyPhVozJlMEIYLAGp6UfEg/Rzme35A=" - } - }, - "io.ktor:ktor-utils:2.3.11": { - "ktor-utils-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.jar" - ], - "hash": "sha256-SJeUj4AL85YHGPuaWv9QErcht7iWZjhZWCbGstp8TiU=" - }, - "ktor-utils-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.module" - ], - "hash": "sha256-wFGiUpPmUdQIGWPVFfMxsnPBevWpKYBs88mYdisk9is=" - }, - "ktor-utils-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.pom" - ], - "hash": "sha256-pP/0keaxdRMn261KJ+UR/U4xNpR/NyD32ovBtl2Ny6M=" - } - }, - "io.ktor:ktor-utils-jvm:2.3.11": { - "ktor-utils-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.jar" - ], - "hash": "sha256-1QjohTKUyKcuVhoSkBJ97q+SdC4tgQNqa5tzyCsx7WE=" - }, - "ktor-utils-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.module" - ], - "hash": "sha256-41aI1T/NEKfizORi3PjCB81MGkOD8ZU46xU/9wogbp4=" - }, - "ktor-utils-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.pom" - ], - "hash": "sha256-H412FDKI60HeKk4U/pf7CtRtMdfUpXwHo7voHSTOTKA=" - } - }, - "io.ktor:ktor-websockets:2.3.11": { - "ktor-websockets-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.jar" - ], - "hash": "sha256-XdKULp+AhVyqGFXiShT3DxqHWcg3tFTplRdqPMl3QVg=" - }, - "ktor-websockets-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.module" - ], - "hash": "sha256-t4zNNnaq5vyJ3WfnvqhKG8Dy1Wj2dS+njB8umGelDY4=" - }, - "ktor-websockets-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.pom" - ], - "hash": "sha256-j87iI7x63u3+9R+IaRZJrsf3edm+JowIJ7tuiow0Nmw=" - } - }, - "io.ktor:ktor-websockets-jvm:2.3.11": { - "ktor-websockets-jvm-2.3.11.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.jar" - ], - "hash": "sha256-0DB7Dv/GNJYymcO1L1E/eM+1xWY67t6dxCS4VZtT66o=" - }, - "ktor-websockets-jvm-2.3.11.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.module" - ], - "hash": "sha256-NHCtWpjcwUnywUXqTgiQ1wY6UMd8JsXOk/fhySJqKQY=" - }, - "ktor-websockets-jvm-2.3.11.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.pom" - ], - "hash": "sha256-y26TtzMFAIabQ+RBnTzdYMa7FoD493PwfLGLAZ2S7V8=" - } - }, - "io.netty:netty-bom:4.1.86.Final": { - "netty-bom-4.1.86.Final.pom": { - "urls": [ - "https://plugins.gradle.org/m2/io/netty/netty-bom/4.1.86.Final/netty-bom-4.1.86.Final.pom" - ], - "hash": "sha256-EnFsH+ZM9b2qcETTfROq46iIIbkdR5hCDEanR2kXiv0=" - } - }, - "io.netty:netty-buffer:4.1.106.Final": { - "netty-buffer-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.jar" - ], - "hash": "sha256-1QZ72+R21jy0MpOCKDKnSafDijjBxRYQfHPSV8Ob7SE=" - }, - "netty-buffer-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.pom" - ], - "hash": "sha256-2gY34YJ9Uw2h2PQwsObNaT7Ee32qBnQrKKw02xy1RqY=" - } - }, - "io.netty:netty-codec:4.1.106.Final": { - "netty-codec-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.jar" - ], - "hash": "sha256-k4Y9/WkPes58JuTICP3CR4CtrUZbPNy3zj/HPEIt928=" - }, - "netty-codec-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.pom" - ], - "hash": "sha256-NA+IHwoS9itNCY+bcQo0fASTjV/z38wvw8pw1X7a70s=" - } - }, - "io.netty:netty-codec-http:4.1.106.Final": { - "netty-codec-http-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.jar" - ], - "hash": "sha256-uhd6A63Fh/pj6W8duunEb/JfWTl+o02WC0XgXQKWAm4=" - }, - "netty-codec-http-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.pom" - ], - "hash": "sha256-DE+4Y7F3o8Z9NhZistW8Gx43Vgubamtxfbc+lnlW2Ro=" - } - }, - "io.netty:netty-codec-http2:4.1.106.Final": { - "netty-codec-http2-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.jar" - ], - "hash": "sha256-wrgh1XpzPNZx6iqwZCACsX4KK4kATKAmxuro9Tgc+B4=" - }, - "netty-codec-http2-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.pom" - ], - "hash": "sha256-JZlznLzUACvwLSkABPTYxyvdhZ2VOyGAR7HvdW55jEY=" - } - }, - "io.netty:netty-common:4.1.106.Final": { - "netty-common-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.jar" - ], - "hash": "sha256-X/vgG9hFYXqRbeNhMBDV/aV8XraUFH040E95Hpg01cM=" - }, - "netty-common-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.pom" - ], - "hash": "sha256-4ayZMJpA1e76IEs6GBXHIcuS5K5t1UHsIoRQ2cnUgA0=" - } - }, - "io.netty:netty-handler:4.1.106.Final": { - "netty-handler-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.jar" - ], - "hash": "sha256-WpGa2Ittnp8IwwaZgLxlamKSagDmui2lhZqg7k4gLkQ=" - }, - "netty-handler-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.pom" - ], - "hash": "sha256-lhoCD6DBskT1io9MYS+egEEokLlgO/WTzmiUKaRlC0Y=" - } - }, - "io.netty:netty-parent:4.1.106.Final": { - "netty-parent-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-parent/4.1.106.Final/netty-parent-4.1.106.Final.pom" - ], - "hash": "sha256-eV8c7NBEHGSvry5vEN+yHCRtRI9sQ1cFHt6mjpw+s2U=" - } - }, - "io.netty:netty-resolver:4.1.106.Final": { - "netty-resolver-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.jar" - ], - "hash": "sha256-QElYuPBZDuUmAT0BHNI1Tat4rbqtdD19RE2zOj+eq6w=" - }, - "netty-resolver-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.pom" - ], - "hash": "sha256-phbG6XmPmDwsK0BiFDvaWM8tD2mGnZ00yMJiPdZMXXc=" - } - }, - "io.netty:netty-transport:4.1.106.Final": { - "netty-transport-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.jar" - ], - "hash": "sha256-I+qaOQCbQenQqhUVswc6+e5NpOFsLoabWqiqnxCdQlE=" - }, - "netty-transport-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.pom" - ], - "hash": "sha256-qyxCFnnBmSuuT3UyvpdpbK5L9g5pbwskf/vPunrynM4=" - } - }, - "io.netty:netty-transport-classes-epoll:4.1.106.Final": { - "netty-transport-classes-epoll-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.jar" - ], - "hash": "sha256-676g9nii85R+sgC+Az7X/lUwZ+Octd9Ldp0bn8aimHI=" - }, - "netty-transport-classes-epoll-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.pom" - ], - "hash": "sha256-kancuAlsq6lJCbohCze/4/M7qjAuZXAap/4nnWlRzGc=" - } - }, - "io.netty:netty-transport-classes-kqueue:4.1.106.Final": { - "netty-transport-classes-kqueue-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.jar" - ], - "hash": "sha256-9o7UQlABZcajhz4HMeG2IIS0L4QtD0dmdHSA7x/Jdj4=" - }, - "netty-transport-classes-kqueue-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.pom" - ], - "hash": "sha256-5VnP7dwvVFIUCbLypQY8gXefTgvpcG/+2QR0B3xBHU4=" - } - }, - "io.netty:netty-transport-native-epoll:4.1.106.Final": { - "netty-transport-native-epoll-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.jar" - ], - "hash": "sha256-ZgOaFRY1MCriM9/Rh9kcfddzoRrM0Sc1wWU7gndOd/A=" - }, - "netty-transport-native-epoll-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.pom" - ], - "hash": "sha256-U51mdWvcdwISzdMD7mJMrY2xbu9KgZiyqOKEg+ljb04=" - } - }, - "io.netty:netty-transport-native-kqueue:4.1.106.Final": { - "netty-transport-native-kqueue-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.jar" - ], - "hash": "sha256-FC/1C6Wcdbv2c6bBQ53Prjy3RprbgQXcP7ZqpAVRpK4=" - }, - "netty-transport-native-kqueue-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.pom" - ], - "hash": "sha256-BuxVaGByijbJpVnBVpIl5kzOGvQPqZ7T3GdZgmHMlOs=" - } - }, - "io.netty:netty-transport-native-unix-common:4.1.106.Final": { - "netty-transport-native-unix-common-4.1.106.Final.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.jar" - ], - "hash": "sha256-9S1LOMVxBmv6rpZKeGf6k38OVPtf9GfFdstlCiCoVOg=" - }, - "netty-transport-native-unix-common-4.1.106.Final.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.pom" - ], - "hash": "sha256-h19sn7JG3Vygm8Lc/LF4wpsBxx6lE/M3jm/Osp1KCjo=" - } - }, - "jakarta.platform:jakarta.jakartaee-bom:9.0.0": { - "jakarta.jakartaee-bom-9.0.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/jakarta/platform/jakarta.jakartaee-bom/9.0.0/jakarta.jakartaee-bom-9.0.0.pom" - ], - "hash": "sha256-kZA9Ddh23sZ/i5I/EzK6cr8pWwa9OX0Y868ZMHzhos4=" - } - }, - "jakarta.platform:jakartaee-api-parent:9.0.0": { - "jakartaee-api-parent-9.0.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/jakarta/platform/jakartaee-api-parent/9.0.0/jakartaee-api-parent-9.0.0.pom" - ], - "hash": "sha256-9l3PFLbh2RSOGYo5D6/hVfrKCTJT3ekAMH8+DqgsrTs=" - } - }, - "net.bytebuddy:byte-buddy:1.10.9": { - "byte-buddy-1.10.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.jar" - ], - "hash": "sha256-B7nKbi+XDLA/SyVlHfHy/OJx1JG0TgQJgniHeG9pLU0=" - }, - "byte-buddy-1.10.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.pom" - ], - "hash": "sha256-QIgdSUiocRWTRicPNpRbwpAlV3xstX9qXdDHwiIGnaw=" - } - }, - "net.bytebuddy:byte-buddy-agent:1.10.9": { - "byte-buddy-agent-1.10.9.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.jar" - ], - "hash": "sha256-+9BS0tTNFvcHVHxGhiHGt/uELH7Ihm0BLsvGF43h85Q=" - }, - "byte-buddy-agent-1.10.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.pom" - ], - "hash": "sha256-GZB0lfvBwjFsjrrXbwe5bRAf6xp+PAm/4VJv0/xu7J0=" - } - }, - "net.bytebuddy:byte-buddy-parent:1.10.9": { - "byte-buddy-parent-1.10.9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.10.9/byte-buddy-parent-1.10.9.pom" - ], - "hash": "sha256-k9nTgHec0XaMUrS87oLL+u3vmkow3oeuBrRB4WNP04w=" - } - }, - "net.java.dev.jna:jna:5.9.0": { - "jna-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar" - ], - "hash": "sha256-6vzHgLRFQ008Wuf6L7ZmXeGnVg1TfSxAio6AzRTScWE=" - }, - "jna-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.pom" - ], - "hash": "sha256-a8i4RZFQtZ6VmPPa2a0kWh7yFQ0IJYEBcYTrFj5ZKCk=" - } - }, - "net.java.dev.jna:jna-platform:5.9.0": { - "jna-platform-5.9.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.jar" - ], - "hash": "sha256-GQO8bYfzq5ICOVe5H0WpyOs1FbrQMDVs6XcgHlFBtyQ=" - }, - "jna-platform-5.9.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.pom" - ], - "hash": "sha256-C9pdmOS+kmHwnN+u5vokWYh5CDTX/K3I4v3ZPH1kGCU=" - } - }, - "org.apache:apache:27": { - "apache-27.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/27/apache-27.pom" - ], - "hash": "sha256-srD8aeIqZQw4kvHDZtdwdvKVdcZzjfTHpwpEhESEzfk=" - } - }, - "org.apache:apache:23": { - "apache-23.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/23/apache-23.pom" - ], - "hash": "sha256-vBBiTgYj82V3+sVjnKKTbTJA7RUvttjVM6tNJwVDSRw=" - } - }, - "org.apache:apache:21": { - "apache-21.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom" - ], - "hash": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A=" - } - }, - "org.apache.ant:ant:1.10.13": { - "ant-1.10.13.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.jar" - ], - "hash": "sha256-vvv8eedE6Yks+n25bfO26C3BfSVxr0KqQnl2/CIpmDg=" - }, - "ant-1.10.13.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.pom" - ], - "hash": "sha256-J5NR7tkLj3QbtIyVvmHD7CRU48ipr7Q7zB0LrB3aE3o=" - } - }, - "org.apache.ant:ant-launcher:1.10.13": { - "ant-launcher-1.10.13.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.jar" - ], - "hash": "sha256-zXaVs7+2lkq3G2oLMdrWAAWud/5QITI2Rnmqzwj3eXA=" - }, - "ant-launcher-1.10.13.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.pom" - ], - "hash": "sha256-ApkvvDgFU1bzyU0B6qJJmcsCoJuqnB/fXqx2t8MVY8o=" - } - }, - "org.apache.ant:ant-parent:1.10.13": { - "ant-parent-1.10.13.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-parent/1.10.13/ant-parent-1.10.13.pom" - ], - "hash": "sha256-blv8hwgiFD8f+7LG8I7EiHctsxSlKDMC9IFLEms0aTk=" - } - }, - "org.apache.commons:commons-parent:52": { - "commons-parent-52.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/52/commons-parent-52.pom" - ], - "hash": "sha256-ddvo806Y5MP/QtquSi+etMvNO18QR9VEYKzpBtu0UC4=" - } - }, - "org.apache.logging:logging-parent:7": { - "logging-parent-7.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/logging-parent/7/logging-parent-7.pom" - ], - "hash": "sha256-5YkR3J/GsXOhDlqp7bk8eZStBmAnBd0Gftz8bh6eFys=" - } - }, - "org.apache.logging.log4j:log4j:2.20.0": { - "log4j-2.20.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j/2.20.0/log4j-2.20.0.pom" - ], - "hash": "sha256-mje0qPZ+jUG8JHNxejAhYz1qPD8xBXnbmtC+PyRlnGk=" - } - }, - "org.apache.logging.log4j:log4j-api:2.20.0": { - "log4j-api-2.20.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.jar" - ], - "hash": "sha256-L0PupnnqZvFMoPE/7CqGAKwST1pSMdy034OT7dy5dVA=" - }, - "log4j-api-2.20.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.pom" - ], - "hash": "sha256-zUWDKj1s0hlENcDWPKAV8ZSWjy++pPKRVTv3r7hOFjc=" - } - }, - "org.apache.logging.log4j:log4j-bom:2.20.0": { - "log4j-bom-2.20.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-bom/2.20.0/log4j-bom-2.20.0.pom" - ], - "hash": "sha256-+LtpLpWmt72mAehxAJWOg9AGG38SMlC2gSiUOhlenaE=" - } - }, - "org.apache.logging.log4j:log4j-core:2.20.0": { - "log4j-core-2.20.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.jar" - ], - "hash": "sha256-YTffhIza7Z9NUHb3VRPGyF2oC5U/TnrMo4CYt3B2P1U=" - }, - "log4j-core-2.20.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.pom" - ], - "hash": "sha256-3nGsEAVR9KB3rsrQd70VPnHfeqacMELXZRbMXM4Ice4=" - } - }, - "org.apache.maven:maven:3.6.3": { - "maven-3.6.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven/3.6.3/maven-3.6.3.pom" - ], - "hash": "sha256-0thiRepmFJvBTS3XK7uWH5ZN1li4CaBXMlLAZTHu7BY=" - } - }, - "org.apache.maven:maven-model:3.6.3": { - "maven-model-3.6.3.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar" - ], - "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" - }, - "maven-model-3.6.3.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom" - ], - "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" - } - }, - "org.apache.maven:maven-parent:33": { - "maven-parent-33.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/apache/maven/maven-parent/33/maven-parent-33.pom" - ], - "hash": "sha256-OFbj/NFpUC1fEv4kUmBOv2x8Al8VZWv6VY6pntKdc+o=" - } - }, - "org.apiguardian:apiguardian-api:1.1.2": { - "apiguardian-api-1.1.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar" - ], - "hash": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=" - }, - "apiguardian-api-1.1.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.module" - ], - "hash": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=" - }, - "apiguardian-api-1.1.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.pom" - ], - "hash": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA=" - } - }, - "org.codehaus.groovy:groovy-bom:3.0.14": { - "groovy-bom-3.0.14.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/groovy/groovy-bom/3.0.14/groovy-bom-3.0.14.pom" - ], - "hash": "sha256-JODptzjecRjennNWD/0GA0u1zwfKE6fgNFnoi6nRric=" - } - }, - "org.codehaus.plexus:plexus:10": { - "plexus-10.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus/10/plexus-10.pom" - ], - "hash": "sha256-u6nFIQZLnKEyzpfMHMfrSvwtvjK8iMuHLIjpn2FiMB8=" - } - }, - "org.codehaus.plexus:plexus-utils:3.5.1": { - "plexus-utils-3.5.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar" - ], - "hash": "sha256-huAlXUyHnGG0gz7X8TEk6LtnnfR967EnMm59t91JoHs=" - }, - "plexus-utils-3.5.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.pom" - ], - "hash": "sha256-lP9o7etIIE0SyZGJx2cWTTqfd4oTctHc4RpBRi5iNvI=" - } - }, - "org.eclipse.ee4j:project:1.0.6": { - "project-1.0.6.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/ee4j/project/1.0.6/project-1.0.6.pom" - ], - "hash": "sha256-Tn2DKdjafc8wd52CQkG+FF8nEIky9aWiTrkHZ3vI1y0=" - } - }, - "org.eclipse.jetty:jetty-bom:9.4.50.v20221201": { - "jetty-bom-9.4.50.v20221201.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/eclipse/jetty/jetty-bom/9.4.50.v20221201/jetty-bom-9.4.50.v20221201.pom" - ], - "hash": "sha256-TN5uUz1gHq+LZazulWt3BsGBkvJ1XQI9fo0Zu31bOUM=" - } - }, - "org.eclipse.jetty:jetty-parent:21": { - "jetty-parent-21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-parent/21/jetty-parent-21.pom" - ], - "hash": "sha256-eXLp7G84UqjuHuXU0Q3Mnc1gd7El+TWqlrNnpsgjN/U=" - } - }, - "org.eclipse.jetty.alpn:alpn-api:1.1.3.v20160715": { - "alpn-api-1.1.3.v20160715.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.jar" - ], - "hash": "sha256-B76ZdYtpnhlPcPuXhNlCAtxsmCEod4KePXKwIPJmBXY=" - }, - "alpn-api-1.1.3.v20160715.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.pom" - ], - "hash": "sha256-FrRveqUg7VDUR4oM9ndjje3AFDtCNMJ48WDLS9JUgq8=" - } - }, - "org.fusesource:fusesource-pom:1.12": { - "fusesource-pom-1.12.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/fusesource/fusesource-pom/1.12/fusesource-pom-1.12.pom" - ], - "hash": "sha256-xA2WDarc73sBwbHGZXr7rE//teUxaPj8sLKLhOb9zKE=" - } - }, - "org.fusesource.jansi:jansi:2.4.1": { - "jansi-2.4.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.jar" - ], - "hash": "sha256-Ll53Wp3Fj/prvWqm8JnWL4ti3N60w8O7vlzyMBvC3ME=" - }, - "jansi-2.4.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.pom" - ], - "hash": "sha256-P5jZeaTTVZ+HefuwBLNK51Fq+t9RDhHffMPNBz6xuzs=" - } - }, - "org.gradle:gradle-tooling-api:8.7": { - "gradle-tooling-api-8.7.jar": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.jar" - ], - "hash": "sha256-UjAREw062qfdwR14e/363TmgBDIAzGd7cJtPrATLhrM=" - }, - "gradle-tooling-api-8.7.module": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.module" - ], - "hash": "sha256-c08g/Bo2leG74FuBK7m7un/wNzQ8lCp5THbpiBdpNCg=" - }, - "gradle-tooling-api-8.7.pom": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.pom", - "https://repo.maven.apache.org/maven2/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.pom" - ], - "hash": "sha256-Js9ia+mlUYCUZg1Vkot+NEGrQxuSkHTHc7+fL3V28/s=" - } - }, - "org.jdom:jdom2:2.0.6.1": { - "jdom2-2.0.6.1.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.jar" - ], - "hash": "sha256-CyD0XjoP2PDRLNxTFrBndukCsTZdsAEYh2+RdcYPMCw=" - }, - "jdom2-2.0.6.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.pom" - ], - "hash": "sha256-VXleEBi4rmR7k3lnz4EKmbCFgsI3TnhzwShzTIyRS/M=" - } - }, - "org.jetbrains:annotations:23.0.0": { - "annotations-23.0.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.jar" - ], - "hash": "sha256-ew8ZckCCy/y8ZuWr6iubySzwih6hHhkZM+1DgB6zzQU=" - }, - "annotations-23.0.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom" - ], - "hash": "sha256-yUkPZVEyMo3yz7z990P1P8ORbWwdEENxdabKbjpndxw=" - } - }, - "org.jetbrains:annotations:13.0": { - "annotations-13.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" - ], - "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" - }, - "annotations-13.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" - ], - "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" - } - }, - "org.jetbrains.intellij.deps:trove4j:1.0.20200330": { - "trove4j-1.0.20200330.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar" - ], - "hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=" - }, - "trove4j-1.0.20200330.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom" - ], - "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" - } - }, - "org.jetbrains.kotlin:kotlin-android-extensions:1.9.22": { - "kotlin-android-extensions-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar" - ], - "hash": "sha256-Hl6IFkKpnduPbRPmmVoIwZK8OEGHOWZj2ER8CB2H4k8=" - }, - "kotlin-android-extensions-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom" - ], - "hash": "sha256-lEt8+zPgpvtoRVkEjwKMuWMmyTKiRdXLAhQ7zSwDEVk=" - } - }, - "org.jetbrains.kotlin:kotlin-build-common:1.9.22": { - "kotlin-build-common-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar" - ], - "hash": "sha256-U8PcxTA/WQPmJgrqc+zMaTD5o276KhHNO9On5V32OWY=" - }, - "kotlin-build-common-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom" - ], - "hash": "sha256-KXxfSYoHdIPvic06cQzSt/LlrjgPOjrt+5xBvGI7E0A=" - } - }, - "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22": { - "kotlin-build-tools-api-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar" - ], - "hash": "sha256-3UnLfij08zgvUlDPsFyGT9XwqW0yZbspPHezCtzJP/Y=" - }, - "kotlin-build-tools-api-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom" - ], - "hash": "sha256-DFZLu4fcXs32Q005buob886Xar8IgYCN0Wb6SbBGSfs=" - } - }, - "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22": { - "kotlin-build-tools-impl-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar" - ], - "hash": "sha256-G0jW3gQqUl9jtVdROuEmbWmTSCJbAT+UDjLGPeJolCg=" - }, - "kotlin-build-tools-impl-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom" - ], - "hash": "sha256-tWM/E0m+lcdHRuHimiqm51LoneGrmmUjSS85j6aVWN0=" - } - }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22": { - "kotlin-compiler-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar" - ], - "hash": "sha256-K/6t7lmrGYjDNtvW5l2ZH3Zq4d2Gg/Km3tX6oCefDKA=" - }, - "kotlin-compiler-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom" - ], - "hash": "sha256-s9o0u29ClqzzoPRDRm8FBsbJnaXNliTW4LdFsiKHhOs=" - } - }, - "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22": { - "kotlin-compiler-runner-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar" - ], - "hash": "sha256-c+x1u5nr/6iySiSjuFPz9mCWvEapNRrw2sk967acFes=" - }, - "kotlin-compiler-runner-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom" - ], - "hash": "sha256-pO6KZ8HW8lODjAAnKAvLgFCsDc3MrZdIlhOKaaAX6wE=" - } - }, - "org.jetbrains.kotlin:kotlin-daemon-client:1.9.22": { - "kotlin-daemon-client-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar" - ], - "hash": "sha256-XXPhgVsRZ+Sv4gjwCyp1wIC8WoEHhsqtuOFHh1k6k7k=" - }, - "kotlin-daemon-client-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom" - ], - "hash": "sha256-YsRKZZ2lXbb7El4pKbmNUEow4fSvgU4I5JIUJqpST4o=" - } - }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22": { - "kotlin-daemon-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar" - ], - "hash": "sha256-kqV4ExcUR9U0Rh+hP+N9yM07f4bYPpsfe7GwvjBUH4s=" - }, - "kotlin-daemon-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom" - ], - "hash": "sha256-9uo9z2v7Og0GmER8SKa88I2Oqs+D/JX+nUGBpeXjwrE=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22": { - "kotlin-gradle-plugin-1.9.22-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar" - ], - "hash": "sha256-1OcY3V8wxrqTLZPM/FswFendPkQUOgUrh3Ao8frlQtw=" - }, - "kotlin-gradle-plugin-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module" - ], - "hash": "sha256-pPRqwMq9jVzbaJ0tN9GdWFhPcIv59k/+TpgKL/dTS7U=" - }, - "kotlin-gradle-plugin-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom" - ], - "hash": "sha256-A3750tSupA9JKdglE1g+STwOBRVuDaix1/Ujurhobyc=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22": { - "kotlin-gradle-plugin-annotations-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar" - ], - "hash": "sha256-lnaDy5jZkQFFYH+/W0VilbQ/Cq+Tsbunv2mS5zHLJOw=" - }, - "kotlin-gradle-plugin-annotations-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom" - ], - "hash": "sha256-Y7por+B4/3D3CPnpecaTxFv+iQQfeWQbC4H2tKEm7rs=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22": { - "kotlin-gradle-plugin-api-1.9.22-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar" - ], - "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" - }, - "kotlin-gradle-plugin-api-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar" - ], - "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" - }, - "kotlin-gradle-plugin-api-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module" - ], - "hash": "sha256-H0SJxTBPmlEqVof/zAqvCTCvydcgUdOpBfrAcANi+3s=" - }, - "kotlin-gradle-plugin-api-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom" - ], - "hash": "sha256-ZAFewaGutVCqGCjCQuIoODDFD2g2TkCDH+FYj9wEEfU=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22": { - "kotlin-gradle-plugin-idea-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar" - ], - "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" - }, - "kotlin-gradle-plugin-idea-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module" - ], - "hash": "sha256-z+LCbjMPaAMsAD+lJMAx5aYPzo2Jn/8uQjFBKL60QCs=" - }, - "kotlin-gradle-plugin-idea-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom" - ], - "hash": "sha256-3BSjKHVDun5QRs1OCVAtJ4hMqYfshwb1+xid54luOsw=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22": { - "kotlin-gradle-plugin-idea-proto-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar" - ], - "hash": "sha256-9dgu5hlmotmK364Z8k1hcwIsFUBIls3yNjQANe5owPU=" - }, - "kotlin-gradle-plugin-idea-proto-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom" - ], - "hash": "sha256-huMsqCkn2ogKHPNDpA7MIJgHXm/XInOzTVDfpUTzRjs=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22": { - "kotlin-gradle-plugin-model-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar" - ], - "hash": "sha256-UQj61b4UmCXs46ABA8PCHPGv6VS7ZLhweJVyk511OMs=" - }, - "kotlin-gradle-plugin-model-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module" - ], - "hash": "sha256-L/MBPfK6epteiwBOhIF1DI0PqVOtAHoZbYXSY2cdvq4=" - }, - "kotlin-gradle-plugin-model-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom" - ], - "hash": "sha256-gfUmlHml2X7oeSpITIMr495DgggSZxlhUAHKyI5C9qg=" - } - }, - "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22": { - "kotlin-gradle-plugins-bom-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module" - ], - "hash": "sha256-Qj401h0iCxoN3BgUCGqM6rTa2ed5ArDOjLRyG789xu0=" - }, - "kotlin-gradle-plugins-bom-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom" - ], - "hash": "sha256-da2/XHjOJHwiuvNijQs/8c9+19N9YB66cwTXerdb3Z8=" - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22": { - "kotlin-klib-commonizer-api-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar" - ], - "hash": "sha256-jC9lQpwYLi5KLgnLkQ5iuW227tKFWUuPga+CO35ZROI=" - }, - "kotlin-klib-commonizer-api-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom" - ], - "hash": "sha256-EMrJcNMAo0icM/CzBBVv8DLZWVm+WqrDuIAoKtWGIv4=" - } - }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22": { - "kotlin-klib-commonizer-embeddable-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar" - ], - "hash": "sha256-c/50PnTSEoPTg9C6voX9CMRCr8GnvYgIL42gUQ0FPUs=" - }, - "kotlin-klib-commonizer-embeddable-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom" - ], - "hash": "sha256-dxghItppe2YqSRPX3Z/mu68ATOhH/YZ9oj6v8MTIJEs=" - } - }, - "org.jetbrains.kotlin:kotlin-native-utils:1.9.22": { - "kotlin-native-utils-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar" - ], - "hash": "sha256-eGwSfdVTXbLDmuWXzQsMrZ6RS4PiNvHbAlEjXMnGUqw=" - }, - "kotlin-native-utils-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom" - ], - "hash": "sha256-EcUUwF7qOuno4Wq0l5bxEd9DxzSCMeNfr0xCjMT3Q+o=" - } - }, - "org.jetbrains.kotlin:kotlin-project-model:1.9.22": { - "kotlin-project-model-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar" - ], - "hash": "sha256-zBHVwLGQnFsKCP0l7w51T/0r9Wyu9mX7eFEiI15UKhg=" - }, - "kotlin-project-model-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom" - ], - "hash": "sha256-659KFngb/ADM7IAw++XuIo5vKydxxQwmezIY/rAGW0A=" - } - }, - "org.jetbrains.kotlin:kotlin-reflect:1.9.23": { - "kotlin-reflect-1.9.23.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.jar" - ], - "hash": "sha256-dHwpJ6Yjtuu3NLRl1qJoYukg3dGCjvQ3Foh8CEmjEx8=" - }, - "kotlin-reflect-1.9.23.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.pom" - ], - "hash": "sha256-WXD72CdKWAyk6I/nhkeMR8i5ufo3TFsK3ekyhFYiX2o=" - } - }, - "org.jetbrains.kotlin:kotlin-reflect:1.9.22": { - "kotlin-reflect-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar" - ], - "hash": "sha256-d/MRyhOEgR1Rn9o4n8sSaL2qBY1gUEbg7edsA7DfPpc=" - }, - "kotlin-reflect-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom" - ], - "hash": "sha256-xxLjWN97kxi2j1RjlxsIhnODf8DKQoXRw4LIEC7da18=" - } - }, - "org.jetbrains.kotlin:kotlin-reflect:1.8.22": { - "kotlin-reflect-1.8.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.jar" - ], - "hash": "sha256-ZVgl+mURIg/tDK5arU3+oqv5j9EPCud+uNr2q/zQ8Cc=" - }, - "kotlin-reflect-1.8.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.pom" - ], - "hash": "sha256-KeHqCKPTq0gtH9/UH76TRZEt9Gbbr6+0sS0YN8cr4yg=" - } - }, - "org.jetbrains.kotlin:kotlin-reflect:1.6.10": { - "kotlin-reflect-1.6.10.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" - ], - "hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=" - }, - "kotlin-reflect-1.6.10.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom" - ], - "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" - } - }, - "org.jetbrains.kotlin:kotlin-script-runtime:1.9.22": { - "kotlin-script-runtime-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar" - ], - "hash": "sha256-uAZwV59/ktRz2NWDTwsST3dVxFmP6UskQYOwKDSDRXQ=" - }, - "kotlin-script-runtime-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom" - ], - "hash": "sha256-/ra0ns9pEG1MEoXnH5ob2noSfO9oMC4+n9yCmKTjR5U=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-common:1.9.22": { - "kotlin-scripting-common-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar" - ], - "hash": "sha256-+lAMvwNJQ++BJvPT3GWvCf+Z3//kTFCZtPwu1b8vXcc=" - }, - "kotlin-scripting-common-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom" - ], - "hash": "sha256-ROURI7DCfm/ZM/wma00Nrw8GhKYq7Z/mhC6Noz8qKz8=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22": { - "kotlin-scripting-compiler-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar" - ], - "hash": "sha256-Ij/shIMCNEmc1MeiPqHJLroSfEGzXZux1LYdJBVa6zU=" - }, - "kotlin-scripting-compiler-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom" - ], - "hash": "sha256-wWCPP7yyqfdSPq0zWZwurc5MgSFhqeBmufSwBa97Qxw=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22": { - "kotlin-scripting-compiler-impl-embeddable-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar" - ], - "hash": "sha256-OJkYFqKH/3YkHxp35/ERZIHU6To9tjJZplfd4g5tD2U=" - }, - "kotlin-scripting-compiler-impl-embeddable-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom" - ], - "hash": "sha256-gmccM6lXsuKoINZqaSwvzmPjvwR/HLJeb7A5HF3c8uc=" - } - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22": { - "kotlin-scripting-jvm-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar" - ], - "hash": "sha256-jRJ9dvz6BRfDbB6g4ijs4D1aRoJkKgH2R5prvccxKik=" - }, - "kotlin-scripting-jvm-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom" - ], - "hash": "sha256-cBJS6huo/4f8M0dqYePVxtnS3aQbqpiZTdaYDuE/vG0=" - } - }, - "org.jetbrains.kotlin:kotlin-serialization:1.9.22": { - "kotlin-serialization-1.9.22-gradle82.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22-gradle82.jar" - ], - "hash": "sha256-AcrgEEPdT3sLAttWbZPHVoiwlsNAkJ9o0OSVcqvF6VQ=" - }, - "kotlin-serialization-1.9.22.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.module" - ], - "hash": "sha256-s3cuUZFg/is2t9G6MkGQYU27lLFZzmBk9M1z+RhhWiI=" - }, - "kotlin-serialization-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.pom" - ], - "hash": "sha256-D9yUsPEx2Ct3RpAEB0r0f/yntGfVeIn762oVSWg+rL0=" - } - }, - "org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:1.9.22": { - "kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar" - ], - "hash": "sha256-OFR9AAsWYbFLkkZxz7F6tSAL64NOOj2kJ37gkGLppQA=" - }, - "kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom" - ], - "hash": "sha256-i8LheiTLbQ4CMzLkjKq5e3P+MyuSdVWhGjAsb1xcPGQ=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib:1.9.23": { - "kotlin-stdlib-1.9.23-all.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23-all.jar" - ], - "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" - }, - "kotlin-stdlib-1.9.23.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.jar" - ], - "hash": "sha256-iRDMI4gH2G71UMsfCxDdXtQLNaTsGlJSX3YK7ehOrTc=" - }, - "kotlin-stdlib-1.9.23.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.module" - ], - "hash": "sha256-UZUZOzfc2touHAqw1RLEIrKtdq81V4Q6G5w0gPTnHQ4=" - }, - "kotlin-stdlib-1.9.23.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.23/kotlin-stdlib-1.9.23.pom" - ], - "hash": "sha256-wm0n8mcQrUDiPu2f/gpkuFkejBPSI8ypDFk+5j87KKs=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib:1.9.22": { - "kotlin-stdlib-1.9.22-all.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar" - ], - "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" - }, - "kotlin-stdlib-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar" - ], - "hash": "sha256-ar4UbCeGQTi4dMzM/l9TTj65I8maG3tdRUlO5WlPPgo=" - }, - "kotlin-stdlib-1.9.22.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module" - ], - "hash": "sha256-9IIxS1B5wUVfb7DUJXp0XRAcYSTOlhUiuob53JCQHkc=" - }, - "kotlin-stdlib-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom" - ], - "hash": "sha256-zOLxUoXsgHijd0a1cwigVAQt1cwlQgxD9zt4V8JGjwM=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.23": { - "kotlin-stdlib-common-1.9.23.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.module" - ], - "hash": "sha256-hjnwBfqZd67wjDL8jnonedoi7iYkZNcnMpiq/Ug3Fc0=" - }, - "kotlin-stdlib-common-1.9.23.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.23/kotlin-stdlib-common-1.9.23.pom" - ], - "hash": "sha256-OuBxRYdw47aGCafTGet5emeJ9fBAyqQUQJgJmGhb5PY=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22": { - "kotlin-stdlib-common-1.9.22.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.22/kotlin-stdlib-common-1.9.22.module" - ], - "hash": "sha256-+Tyemr+NUtjo/Y6FGqgC7OxVEyFhxK7ufTzZJL95QkY=" - }, - "kotlin-stdlib-common-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.22/kotlin-stdlib-common-1.9.22.pom" - ], - "hash": "sha256-10k21oh1ZK63EOhCmLVCB/U+m88jpSrSv6IsIIZ3V2c=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.22": { - "kotlin-stdlib-jdk7-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.jar" - ], - "hash": "sha256-+R8kz606dWaIo1Ep5fM1SA0OtAjxVooX9wfCifh2m90=" - }, - "kotlin-stdlib-jdk7-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.22/kotlin-stdlib-jdk7-1.9.22.pom" - ], - "hash": "sha256-SHnKgQKDPIraP0bHep/6+uGXDK/AvGIfUSAbatl0zp0=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.21": { - "kotlin-stdlib-jdk7-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.jar" - ], - "hash": "sha256-v+IfQkbIvKNQsYQEBv+803awXto36ypksBHeGMLKeBg=" - }, - "kotlin-stdlib-jdk7-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.21/kotlin-stdlib-jdk7-1.9.21.pom" - ], - "hash": "sha256-AVFiDhh0XvJ2ECNw/GdHBPcN821kgsxBmh5S263Cg2I=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22": { - "kotlin-stdlib-jdk7-1.8.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.jar" - ], - "hash": "sha256-BV9cskKH+hBhAJlae0erkhJrgegy6HX1+izwvVVpPQs=" - }, - "kotlin-stdlib-jdk7-1.8.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.pom" - ], - "hash": "sha256-T5WKqZPVmE+PXr7UFGVipfOp9pW2BJyfKHOBN5ytqzM=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.22": { - "kotlin-stdlib-jdk8-1.9.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.jar" - ], - "hash": "sha256-RwRsPtwy/g2xo2v+PTgilYu1vkQRxbqA866JWj7CcpE=" - }, - "kotlin-stdlib-jdk8-1.9.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.22/kotlin-stdlib-jdk8-1.9.22.pom" - ], - "hash": "sha256-yUBIJZxtAAdXi6r+tx74/3ut6wjy1ZQ3/DllHg+396s=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.21": { - "kotlin-stdlib-jdk8-1.9.21.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.jar" - ], - "hash": "sha256-BwLWS6qpDlxW5GdzeCTJvjreHlFWJHPBQ60DWByVUSc=" - }, - "kotlin-stdlib-jdk8-1.9.21.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.21/kotlin-stdlib-jdk8-1.9.21.pom" - ], - "hash": "sha256-J79Q6ETwZc0emFT8m8K9pRIrh4ZOoDBL1pW7En0AMvQ=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22": { - "kotlin-stdlib-jdk8-1.8.22.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.jar" - ], - "hash": "sha256-QZiw6vCQpPJbb35aWVgfQxS6jJ9s0dE+6dNI5l7Y9wc=" - }, - "kotlin-stdlib-jdk8-1.8.22.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.pom" - ], - "hash": "sha256-ko8hhyF0djE8uBbUgHC8dlSqO5pa6B0/xfjCecyPjZ4=" - } - }, - "org.jetbrains.kotlin:kotlin-tooling-core:1.9.22": { - "kotlin-tooling-core-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar" - ], - "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" - }, - "kotlin-tooling-core-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom" - ], - "hash": "sha256-FPx/NcY15fzRvqU3q0+kQxLoQyUtUzNRnjaxJeoImyE=" - } - }, - "org.jetbrains.kotlin:kotlin-util-io:1.9.22": { - "kotlin-util-io-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar" - ], - "hash": "sha256-9telhJGjeLCDrRvq1IikheEdFgsx52wYwa1SDx0o9Gs=" - }, - "kotlin-util-io-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom" - ], - "hash": "sha256-ZP1qINbsBAE7ttdWJ/ZYC7c2QdlIkJ1cFmTi53MQbe4=" - } - }, - "org.jetbrains.kotlin:kotlin-util-klib:1.9.22": { - "kotlin-util-klib-1.9.22.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar" - ], - "hash": "sha256-pnnuL1EPOrkmkYGN5etbCQLobYjJdnTn20TcTyJSxfk=" - }, - "kotlin-util-klib-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom" - ], - "hash": "sha256-Dep9//Cit0CIrJlwQ8vCQINdK/9Zs5/MiwysbqPrNpc=" - } - }, - "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.9.22": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.9.22/org.jetbrains.kotlin.jvm.gradle.plugin-1.9.22.pom" - ], - "hash": "sha256-HLTsuTPJGbL7/XZe/KX+SQeghxLoyZQsM6IIsrFpsYw=" - } - }, - "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin:1.9.22": { - "org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.22/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom" - ], - "hash": "sha256-+9WDi7OolDJys/EfhJrIlDeJL9MJstA012QjjEVPoyI=" - } - }, - "org.jetbrains.kotlinx:atomicfu:0.23.1": { - "atomicfu-0.23.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.jar" - ], - "hash": "sha256-fbhmDr5LkbtHjts2FsTjpQulnAfcpRfR4ShMA/6GrFc=" - }, - "atomicfu-0.23.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.module" - ], - "hash": "sha256-Pokf5ja1UQgZIQD884saObzRwlM+I8Ri/AdkTur8sg8=" - }, - "atomicfu-0.23.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.pom" - ], - "hash": "sha256-aIt5ABn0F87APmldZWexc7o7skGJVBZi8U/2ZEG1Pas=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1": { - "kotlinx-coroutines-bom-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.1/kotlinx-coroutines-bom-1.8.1.pom" - ], - "hash": "sha256-Vj5Kop+o/gmm4XRtCltRMI98fe3EaNxaDKgQpIWHcDA=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0": { - "kotlinx-coroutines-bom-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.0/kotlinx-coroutines-bom-1.8.0.pom" - ], - "hash": "sha256-Ejnp2+E5fNWXE0KVayURvDrOe2QYQuQ3KgiNz6i5rVU=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.1": { - "kotlinx-coroutines-bom-1.7.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.7.1/kotlinx-coroutines-bom-1.7.1.pom" - ], - "hash": "sha256-uSWqmIxApceqDHeyE3P+sYw5QUkmvVHHbvRENPW66cI=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1": { - "kotlinx-coroutines-core-1.8.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.jar" - ], - "hash": "sha256-2vUPHJQEsiSh1t1Shvjo7n1j/oB/eOqY9xeVwYO2Al8=" - }, - "kotlinx-coroutines-core-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.module" - ], - "hash": "sha256-CMuvMyW1Tg+O+NqF5OtZb32Ub4Q+XRYAOFRj8yaKTvA=" - }, - "kotlinx-coroutines-core-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.pom" - ], - "hash": "sha256-+IkY2/qHh8TRcasCVToUrR3viqmwxcLCDMmUVdMkHiI=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0": { - "kotlinx-coroutines-core-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.jar" - ], - "hash": "sha256-IKpDS2qTDqZtLmGwDe764J/qPTL5ZA0uDCcTEogOCt0=" - }, - "kotlinx-coroutines-core-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.module" - ], - "hash": "sha256-FE7s1TZd4+MNe0YibAWAUeOZVbXBieMfpMfP+5nWILo=" - }, - "kotlinx-coroutines-core-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.0/kotlinx-coroutines-core-1.8.0.pom" - ], - "hash": "sha256-yglaS/iLR0+trOgzLBCXC3nLgBu/XfBHo5Ov4Ql28yE=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.1": { - "kotlinx-coroutines-core-jvm-1.8.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.jar" - ], - "hash": "sha256-89T13hw5G7zCDzs0Ncy6wBNSHna2kC19WWNewVwfeX4=" - }, - "kotlinx-coroutines-core-jvm-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.module" - ], - "hash": "sha256-CbgcnRHC3uvxM62HtweSfB8ECZy2Ee8AjHcls+swgyk=" - }, - "kotlinx-coroutines-core-jvm-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.1/kotlinx-coroutines-core-jvm-1.8.1.pom" - ], - "hash": "sha256-R8alCxQVHo+vfzUKlSNcN9EqvDi/sFW2aJdCkxctryw=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0": { - "kotlinx-coroutines-core-jvm-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.jar" - ], - "hash": "sha256-mGCQahk3SQv187BtLw4Q70UeZblbJp8i2vaKPR9QZcU=" - }, - "kotlinx-coroutines-core-jvm-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.module" - ], - "hash": "sha256-/2oi2kAECTh1HbCuIRd+dlF9vxJqdnlvVCZye/dsEig=" - }, - "kotlinx-coroutines-core-jvm-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.pom" - ], - "hash": "sha256-pWM6vVNGfOuRYi2B8umCCAh3FF4LduG3V4hxVDSIXQs=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { - "kotlinx-coroutines-core-jvm-1.5.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar" - ], - "hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module" - ], - "hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4=" - }, - "kotlinx-coroutines-core-jvm-1.5.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom", - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom" - ], - "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.1": { - "kotlinx-coroutines-debug-1.8.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.jar" - ], - "hash": "sha256-JFUwMZoX18m8ShFSb0LpV1Dkqz/IZMlA2evo9UjqGHA=" - }, - "kotlinx-coroutines-debug-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.module" - ], - "hash": "sha256-CA+LzOocTvqCk+0p/5z3xKfR0s3ekBzIZKz3Ly6AdXI=" - }, - "kotlinx-coroutines-debug-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.pom" - ], - "hash": "sha256-x9+Ci/O0+ofumYH7ATaN1NwHmV0XzLqPpmEhcTwF69Q=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.0": { - "kotlinx-coroutines-debug-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.jar" - ], - "hash": "sha256-Zy1UU0UXCoyrgoeygZRL55DWdUWXK+vdVKor9MhsxT8=" - }, - "kotlinx-coroutines-debug-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.module" - ], - "hash": "sha256-piquUrrd+ncw5Wey6kHzYOoQqbN8FiJDqNIaWnySHGI=" - }, - "kotlinx-coroutines-debug-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.0/kotlinx-coroutines-debug-1.8.0.pom" - ], - "hash": "sha256-EZPR60nUsUgNqlrGIBctfcmZFidM2Ra+NpQVLA5vb3w=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1": { - "kotlinx-coroutines-jdk8-1.8.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.jar" - ], - "hash": "sha256-2M+0w2PJHHczU7EVvUprWgRgjnkW/iNdOp2H78uZbAE=" - }, - "kotlinx-coroutines-jdk8-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.module" - ], - "hash": "sha256-Ifl7EL6TJkGBfTULclRP+LoyQYf/uREMbo2IESdv2TM=" - }, - "kotlinx-coroutines-jdk8-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.pom" - ], - "hash": "sha256-3uCuamO2M1ETIAqW2eHHgJ32DQ1CS7/xy7tTsxQWWvk=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.0": { - "kotlinx-coroutines-jdk8-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.jar" - ], - "hash": "sha256-2EGf2zy6quxAfmKrFL5WQ20edrW/MyRMV2VWH8E/0Gs=" - }, - "kotlinx-coroutines-jdk8-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.module" - ], - "hash": "sha256-HKyxz+5adTBFR1rzCF+4DcnMzjA3VKnVIApB3/W+AOk=" - }, - "kotlinx-coroutines-jdk8-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.pom" - ], - "hash": "sha256-4ZIahLHW5/k6SUgCfRhUHXWjDi6KZNem5DEAMZVR8r0=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.7.1": { - "kotlinx-coroutines-jdk8-1.7.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.module" - ], - "hash": "sha256-sJV+aTzxwefUrWJGqm4weV2/S/t1jB5LMv25wkQJuXM=" - }, - "kotlinx-coroutines-jdk8-1.7.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.pom" - ], - "hash": "sha256-x3kWU2lOpaVLnN1HCAgtv7i9apeKX0IYSxFBz7SjDnU=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1": { - "kotlinx-coroutines-test-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.module" - ], - "hash": "sha256-oc7i2rKWwTt47BwGDhj+QDNKRAyKB36QzKbeclJ9jN4=" - }, - "kotlinx-coroutines-test-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.pom" - ], - "hash": "sha256-TyiEIOjObP+RUgyfq9bK9o0C2GtkCp8hKPh6TkZtwlg=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0": { - "kotlinx-coroutines-test-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.module" - ], - "hash": "sha256-DsPHX/2ZpqLfto8wfy8vcxQckz5Yt3sQTxyMrDr9U5Q=" - }, - "kotlinx-coroutines-test-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.pom" - ], - "hash": "sha256-NV8/pvBjDl6ZuHxywcQ4YgKin0lpFeOHWaOK3gsGkAQ=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.1": { - "kotlinx-coroutines-test-jvm-1.8.1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.jar" - ], - "hash": "sha256-xO8d6zG+P4HtguzyNyIMyViGhop+xSekGFmd//FZ3ts=" - }, - "kotlinx-coroutines-test-jvm-1.8.1.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.module" - ], - "hash": "sha256-+wj8JXyQBDPS35l71sKeBJzZ979UHAt3YYDgmYJB9XY=" - }, - "kotlinx-coroutines-test-jvm-1.8.1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.pom" - ], - "hash": "sha256-4qht+xaCAWeYuVoPAGy0tdAQRsVaAS6hs2vSAjLcVXQ=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0": { - "kotlinx-coroutines-test-jvm-1.8.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.jar" - ], - "hash": "sha256-FTXMH0MjXYVm+NW8bRwR8HBBF+TlY/Ls5+aqPmhpXyA=" - }, - "kotlinx-coroutines-test-jvm-1.8.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.module" - ], - "hash": "sha256-HS0Zc6L0GowMEmPmCyXneS9ji4xV18ocbQZztkvlfac=" - }, - "kotlinx-coroutines-test-jvm-1.8.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.0/kotlinx-coroutines-test-jvm-1.8.0.pom" - ], - "hash": "sha256-BtHlPqNm5to7FxkwV1+RYnzxnkUqTnqfDeMNLwQdZFE=" - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3": { - "kotlinx-serialization-bom-1.6.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.3/kotlinx-serialization-bom-1.6.3.pom" - ], - "hash": "sha256-KdaYQrt9RJviqkreakp85qpVgn0KsT0Wh0X+bZVzkzI=" - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.2": { - "kotlinx-serialization-bom-1.6.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.2/kotlinx-serialization-bom-1.6.2.pom" - ], - "hash": "sha256-ew4dde6GIUmc+VQwyhL9qjL0p/kg1cMBv+lfoYfyczc=" - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3": { - "kotlinx-serialization-core-1.6.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.jar" - ], - "hash": "sha256-L6Ba/w8zpw2oc8CaD/ZrXVTM3BXjnnykuCYz5wx5LzQ=" - }, - "kotlinx-serialization-core-1.6.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.module" - ], - "hash": "sha256-Nh6eMetylhdLdAhaxJ7dhKTzkAupQxpOQM0cI952oyg=" - }, - "kotlinx-serialization-core-1.6.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.pom" - ], - "hash": "sha256-0tv2/BU2TIlp1qq24+zMdROZU/LMBXtzDjUmdGWztX4=" - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2": { - "kotlinx-serialization-core-1.6.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.module" - ], - "hash": "sha256-arz0gTrJTfA3AS4xZzaKNEUHD9+OqyHQjYhtTtnC+2c=" - }, - "kotlinx-serialization-core-1.6.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.2/kotlinx-serialization-core-1.6.2.pom" - ], - "hash": "sha256-BibddZLIUwKToOPoHgiBltNRh3o422hHaTY3S6ZJ+S8=" - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3": { - "kotlinx-serialization-core-jvm-1.6.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.jar" - ], - "hash": "sha256-KcghqNTiXL/k8s6WzdRSb2H49OaaE1+WEqNKgdk7ZfE=" - }, - "kotlinx-serialization-core-jvm-1.6.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.module" - ], - "hash": "sha256-MpEE29NOS96QVhHUJ8dYTlPD+MQRg2+59pmsnbpbqmw=" - }, - "kotlinx-serialization-core-jvm-1.6.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.pom" - ], - "hash": "sha256-K0qolJn8AbMNHBB1lmmOCvQ0BBLVQBnFAdm6ayk7oro=" - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3": { - "kotlinx-serialization-json-1.6.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.jar" - ], - "hash": "sha256-jAAWiQp5q1mA3VIKWrGmc4AjwpqjtkN8SC4OX9wG2rE=" - }, - "kotlinx-serialization-json-1.6.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.module" - ], - "hash": "sha256-gNHYf6CmO/+Dleo5EL2oDQnw9YNQTd6o7QB7x6hrTNQ=" - }, - "kotlinx-serialization-json-1.6.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.pom" - ], - "hash": "sha256-KcIhdhjlMdfYMsyICupu0aj0B3PkN/WkHXC9FUaNPOM=" - } - }, - "org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.3": { - "kotlinx-serialization-json-jvm-1.6.3.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.jar" - ], - "hash": "sha256-0yNBebz/GIbVPWfBHspH9/PPe2PDSdFpZfbbUbfz3Zo=" - }, - "kotlinx-serialization-json-jvm-1.6.3.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.module" - ], - "hash": "sha256-InoqmtOMAQsQe8gFjNYVF32lqqhts399WNSdnJt/l9A=" - }, - "kotlinx-serialization-json-jvm-1.6.3.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.pom" - ], - "hash": "sha256-eN9n0GTTuq8a9Ohi6YFGl3YpfGyHi7e/G0Ljky9vr48=" - } - }, - "org.junit:junit-bom:5.9.1": { - "junit-bom-5.9.1.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.module" - ], - "hash": "sha256-kCbBZWaQ+hRa117Og2dCEaoSrYkwqRsQfC9c3s4vGxw=" - }, - "junit-bom-5.9.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.pom" - ], - "hash": "sha256-sWPBz8j8H9WLRXoA1YbATEbphtdZBOnKVMA6l9ZbSWw=" - } - }, - "org.junit:junit-bom:5.8.2": { - "junit-bom-5.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.module" - ], - "hash": "sha256-QM+tmT+nDs3yr3TQxW2hSE7iIJZL6Pkyz+YyvponM/o=" - }, - "junit-bom-5.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom" - ], - "hash": "sha256-g2Bpyp6O48VuSDdiItopEmPxN70/0W2E/dR+/MPyhuI=" - } - }, - "org.junit:junit-bom:5.7.2": { - "junit-bom-5.7.2.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.module" - ], - "hash": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=" - }, - "junit-bom-5.7.2.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.pom" - ], - "hash": "sha256-zRSqqGmZH4ICHFhdVw0x/zQry6WLtEIztwGTdxuWSHs=" - } - }, - "org.junit.jupiter:junit-jupiter-api:5.8.2": { - "junit-jupiter-api-5.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar" - ], - "hash": "sha256-GAjuh+D3GM1uJfO3WvwXlWrIo+3EjH6bq58Z+aeeOAE=" - }, - "junit-jupiter-api-5.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.module" - ], - "hash": "sha256-fpr03/9iZ6zd0VfZ4Rug1dyRszL6dLxMZZOeRReht3A=" - }, - "junit-jupiter-api-5.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.pom" - ], - "hash": "sha256-yb3jYieVswp3NTHoXFgy+NyKp37N0xPu4jXJg8v9Anc=" - } - }, - "org.junit.platform:junit-platform-commons:1.8.2": { - "junit-platform-commons-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar" - ], - "hash": "sha256-0uAV/KcTDnmvL0YI3FRBXksQtZLXczPey0saJ0wYUFA=" - }, - "junit-platform-commons-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.module" - ], - "hash": "sha256-NChH0wRv6kNVlWkttPBdXwOeDh0eIE9NV1WQJVcIJiY=" - }, - "junit-platform-commons-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.pom" - ], - "hash": "sha256-zoUuNMahhKpsgO6N8EcXE6dAgTQTTwjjwcPdh8a1mrc=" - } - }, - "org.junit.platform:junit-platform-engine:1.8.2": { - "junit-platform-engine-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar" - ], - "hash": "sha256-C30AD4w+jl99a4GWSZNue5k4MU6HyPmDgFIY6ldWflk=" - }, - "junit-platform-engine-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.module" - ], - "hash": "sha256-66d7Nu/fdaZ/RkODM4JfnkSPVQ1SHnJJ2VA1hYDuY2s=" - }, - "junit-platform-engine-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.pom" - ], - "hash": "sha256-AWhkMmYGDtko71qBgjAD7PrnmpqMC7/Xb0IBxsnXccU=" - } - }, - "org.junit.platform:junit-platform-launcher:1.8.2": { - "junit-platform-launcher-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar" - ], - "hash": "sha256-giFWQJ/YPmguTFGZs0YAVCmbU4oFjCxtD1ybalvbdZQ=" - }, - "junit-platform-launcher-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.module" - ], - "hash": "sha256-4XQA7HvnYIwfiI1yG0MAHpc2wVDUD5jIoLzalWPYyus=" - }, - "junit-platform-launcher-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.pom" - ], - "hash": "sha256-tfancaautzyJpud/Vtcp9LqOta/dDxD0TbRNaq25UJU=" - } - }, - "org.junit.platform:junit-platform-suite-api:1.8.2": { - "junit-platform-suite-api-1.8.2.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.jar" - ], - "hash": "sha256-lO80OwW4dbsuTvlKfMYuYQ4bnNeCR+Ky7EPtYYoe0Kc=" - }, - "junit-platform-suite-api-1.8.2.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.module" - ], - "hash": "sha256-kwagU4n8QNetnQsSigFEMOXRyldKGErujXhns+iRC3o=" - }, - "junit-platform-suite-api-1.8.2.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.pom" - ], - "hash": "sha256-QB/ZdNa5RmRSS+y3z4B8TUfXxXSy+vGxMeukiUn+mJg=" - } - }, - "org.opentest4j:opentest4j:1.3.0": { - "opentest4j-1.3.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar" - ], - "hash": "sha256-SOLfY2yrZWPO1k3N/4q7I1VifLI27wvzdZhoLd90Lxs=" - }, - "opentest4j-1.3.0.module": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.module" - ], - "hash": "sha256-SL8dbItdyU90ZSvReQD2VN63FDUCSM9ej8onuQkMjg0=" - }, - "opentest4j-1.3.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.pom" - ], - "hash": "sha256-m/fP/EEPPoNywlIleN+cpW2dQ72TfjCUhwbCMqlDs1U=" - } - }, - "org.opentest4j:opentest4j:1.2.0": { - "opentest4j-1.2.0.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" - ], - "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" - }, - "opentest4j-1.2.0.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom" - ], - "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" - } - }, - "org.ow2:ow2:1.5.1": { - "ow2-1.5.1.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/ow2/1.5.1/ow2-1.5.1.pom" - ], - "hash": "sha256-Mh3bt+5v5PU96mtM1tt0FU1r+kI5HB92OzYbn0hazwU=" - } - }, - "org.ow2.asm:asm:9.4": { - "asm-9.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.jar" - ], - "hash": "sha256-OdDis9xFr2Wgmwl5RXUKlKEm4FLhJPk0aEQ6HQ4V84E=" - }, - "asm-9.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.pom" - ], - "hash": "sha256-SDdR5I+y0fQ8Ya06sA/6Rm7cAzPY/C/bWibpXTKYI5Q=" - } - }, - "org.ow2.asm:asm-commons:9.4": { - "asm-commons-9.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.jar" - ], - "hash": "sha256-DBKKnsPzPJiVknL20WzxQke1CPWJUVdLzb0rVtYyY2Q=" - }, - "asm-commons-9.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.pom" - ], - "hash": "sha256-tCyiq8+IEXdqXdwCkPIQbX8xP4LHiw3czVzOTGOjUXk=" - } - }, - "org.ow2.asm:asm-tree:9.4": { - "asm-tree-9.4.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.jar" - ], - "hash": "sha256-xC1HnPJFZqIesgr37q7vToa9tKiGMGz3L0g7ZedbKs8=" - }, - "asm-tree-9.4.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.pom" - ], - "hash": "sha256-x+nvk73YqzYwMs5TgvzGTQAtbFicF1IzI2zSmOUaPBY=" - } - }, - "org.slf4j:slf4j-api:2.1.0-alpha1": { - "slf4j-api-2.1.0-alpha1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.jar" - ], - "hash": "sha256-mrf/pkYgK0mdBZlaPsgvMbzLelA0XBUU2MtC7IzOo1M=" - }, - "slf4j-api-2.1.0-alpha1.pom": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.pom", - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.1.0-alpha1/slf4j-api-2.1.0-alpha1.pom" - ], - "hash": "sha256-QirqW+u6gwWzxhT6Zo7SKePJYQkw7PQvhzOO4F4minU=" - } - }, - "org.slf4j:slf4j-bom:2.1.0-alpha1": { - "slf4j-bom-2.1.0-alpha1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-bom/2.1.0-alpha1/slf4j-bom-2.1.0-alpha1.pom" - ], - "hash": "sha256-qOgTiZePRAcJJBuYPTHvp4cRO+EbgYwsa82e0wlv1IU=" - } - }, - "org.slf4j:slf4j-parent:2.1.0-alpha1": { - "slf4j-parent-2.1.0-alpha1.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.1.0-alpha1/slf4j-parent-2.1.0-alpha1.pom" - ], - "hash": "sha256-zkc1sfnIId4Lkrjb5AsHHG6jIHMuWTVZxupt+WX4c48=" - } - }, - "org.slf4j:slf4j-simple:2.1.0-alpha1": { - "slf4j-simple-2.1.0-alpha1.jar": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.jar" - ], - "hash": "sha256-AU/trHoyKI7W+PcqEAfn+zKuxb/tsnFGfkluCVNIL3U=" - }, - "slf4j-simple-2.1.0-alpha1.pom": { - "urls": [ - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.pom", - "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.1.0-alpha1/slf4j-simple-2.1.0-alpha1.pom" - ], - "hash": "sha256-RgReG+EA94JLUITh83eCxoBJcEeKRXPejEmgfQOpSGM=" - } - }, - "org.sonatype.oss:oss-parent:9": { - "oss-parent-9.pom": { - "urls": [ - "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom" - ], - "hash": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno=" - } - }, - "org.sonatype.oss:oss-parent:7": { - "oss-parent-7.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" - ], - "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" - } - }, - "org.springframework:spring-framework-bom:5.3.24": { - "spring-framework-bom-5.3.24.module": { - "urls": [ - "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.module" - ], - "hash": "sha256-GZbh9hfLA/p26hGFD+Kh4gsOMKEEa6bV2zvbv0QRP84=" - }, - "spring-framework-bom-5.3.24.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.pom" - ], - "hash": "sha256-U1ITVmu77+Jjag1OjdGnOt5hLiQwyP/TENzCo7O5ukE=" - } - }, - "org.vafer:jdependency:2.8.0": { - "jdependency-2.8.0.jar": { - "urls": [ - "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.jar" - ], - "hash": "sha256-v9LMfhv8eKqDtEwKVL8s3jikOC7CRyivaD2Y3GvngZI=" - }, - "jdependency-2.8.0.pom": { - "urls": [ - "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.pom" - ], - "hash": "sha256-EBhn8/npJlei74mjELYE1D0JDJuQqj4LBS3NFqO78y0=" - } - } -} \ No newline at end of file diff --git a/gradle.lock b/gradle.lock index b740f49..c09f2ed 100644 --- a/gradle.lock +++ b/gradle.lock @@ -1,20 +1,42 @@ { - "com.fasterxml:oss-parent:48": { - "oss-parent-48.pom": { - "url": "https://plugins.gradle.org/m2/com/fasterxml/oss-parent/48/oss-parent-48.pom", - "hash": "sha256-EbuiLYYxgW4JtiOiAHR0U9ZJGmbqyPXAicc9ordJAU8=" + "com.fasterxml:oss-parent:56": { + "oss-parent-56.pom": { + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/56/oss-parent-56.pom", + "hash": "sha256-/UkfeIV0JBBtLj1gW815m1PTGlZc3IaEY8p+h120WlA=" } }, - "com.fasterxml.jackson:jackson-bom:2.14.1": { - "jackson-bom-2.14.1.pom": { - "url": "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.14.1/jackson-bom-2.14.1.pom", - "hash": "sha256-eP35nlBQ/EhfQRfauMzL+2+mxoOF6184oJtlU3HUpsw=" + "com.fasterxml:oss-parent:50": { + "oss-parent-50.pom": { + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/50/oss-parent-50.pom", + "hash": "sha256-9dpV3XuI+xcMRoAdF3dKZS+y9FgftbHQpfyGqhgrhXc=" } }, - "com.fasterxml.jackson:jackson-parent:2.14": { - "jackson-parent-2.14.pom": { - "url": "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.14/jackson-parent-2.14.pom", - "hash": "sha256-CQat2FWuOfkjV9Y/SFiJsI/KTEOl/kM1ItdTROB1exk=" + "com.fasterxml:oss-parent:38": { + "oss-parent-38.pom": { + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/38/oss-parent-38.pom", + "hash": "sha256-yD+PRd/cqNC2s2YcYLP4R4D2cbEuBvka1dHBodH5Zug=" + } + }, + "com.fasterxml.jackson:jackson-bom:2.16.1": { + "jackson-bom-2.16.1.pom": { + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.16.1/jackson-bom-2.16.1.pom", + "hash": "sha256-adi/myp9QsnPHXCtgr5C9qxv14iRim4ddXkuzcwRegs=" + } + }, + "com.fasterxml.jackson:jackson-parent:2.16": { + "jackson-parent-2.16.pom": { + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.16/jackson-parent-2.16.pom", + "hash": "sha256-i/YUKBIUiiq/aFCycvCvTD2P8RIe1gTEAvPzjJ5lRqs=" + } + }, + "com.fasterxml.woodstox:woodstox-core:6.5.1": { + "woodstox-core-6.5.1.jar": { + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/woodstox/woodstox-core/6.5.1/woodstox-core-6.5.1.jar", + "hash": "sha256-ySjWBmXGQV+xw5d1z5XPxE9/RYDPWrAbHDgOv/12iH8=" + }, + "woodstox-core-6.5.1.pom": { + "url": "https://repo.maven.apache.org/maven2/com/fasterxml/woodstox/woodstox-core/6.5.1/woodstox-core-6.5.1.pom", + "hash": "sha256-SDllThaxcU509Rq8s3jYNWgUq49NUnPR3S8c6KOQrdw=" } }, "com.github.ajalt:colormath:1.2.0": { @@ -121,70 +143,72 @@ "hash": "sha256-095n7fFjX1ytZvkcVnXx+IfJDTuVlPfngQUgfxK04F0=" } }, - "com.github.johnrengelman:shadow:8.1.1": { - "shadow-8.1.1.jar": { - "url": "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.jar", - "hash": "sha256-CEGXVVWQpTuyG1lQijMwVZ9TbdtEjq/R7GdfVGIDb88=" - }, - "shadow-8.1.1.module": { - "url": "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.module", - "hash": "sha256-nQ87SqpniYcj6vbF6c0nOHj5V03azWSqNwJDYgzgLko=" + "com.typesafe:config:1.4.3": { + "config-1.4.3.jar": { + "url": "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.jar", + "hash": "sha256-itpMGFznJBZxLWPgta/cXwCcDN9AXl8m7+zfFWql37Y=" }, - "shadow-8.1.1.pom": { - "url": "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/8.1.1/shadow-8.1.1.pom", - "hash": "sha256-Mu55f8hDI3xM5cSeX0FSxYoIlK/OCg6SY25qLU/JjDU=" - } - }, - "com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:8.1.1": { - "com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom": { - "url": "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/8.1.1/com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom", - "hash": "sha256-PLOIa5ffbgZvEIwxayGfJiyXw8st9tp4kn5kXetkPLA=" + "config-1.4.3.pom": { + "url": "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.pom", + "hash": "sha256-tn6vqd0iD/h9ANumiACDpSlqXgxsAxA/XUuOHaEDD/M=" } }, - "com.gradle.plugin-publish:com.gradle.plugin-publish.gradle.plugin:1.2.1": { - "com.gradle.plugin-publish.gradle.plugin-1.2.1.pom": { - "url": "https://plugins.gradle.org/m2/com/gradle/plugin-publish/com.gradle.plugin-publish.gradle.plugin/1.2.1/com.gradle.plugin-publish.gradle.plugin-1.2.1.pom", - "hash": "sha256-60lBRA8TGZbmT6SCDc264js95UhBi6ke9MY0pqcfVMs=" + "commons-io:commons-io:2.15.1": { + "commons-io-2.15.1.jar": { + "url": "https://repo.maven.apache.org/maven2/commons-io/commons-io/2.15.1/commons-io-2.15.1.jar", + "hash": "sha256-pYrxLuG2jP0uuwwnyu8WTwhDgaAOyBpIzCdf1+pU4VQ=" + }, + "commons-io-2.15.1.pom": { + "url": "https://repo.maven.apache.org/maven2/commons-io/commons-io/2.15.1/commons-io-2.15.1.pom", + "hash": "sha256-Fxoa+CtnWetXQLO4gJrKgBE96vEVMDby9ERZAd/T+R0=" } }, - "com.gradle.publish:plugin-publish-plugin:1.2.1": { - "plugin-publish-plugin-1.2.1.jar": { - "url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar", - "hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg=" + "dev.gradleplugins:gradle-api:8.1": { + "gradle-api-8.1.jar": { + "url": "https://repo.maven.apache.org/maven2/dev/gradleplugins/gradle-api/8.1/gradle-api-8.1.jar", + "hash": "sha256-qQ+xIkbkncH18WXTb++9rLVBf4ePxqDG5aZZFqotxgU=" }, - "plugin-publish-plugin-1.2.1.module": { - "url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module", - "hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk=" + "gradle-api-8.1.module": { + "url": "https://repo.maven.apache.org/maven2/dev/gradleplugins/gradle-api/8.1/gradle-api-8.1.module", + "hash": "sha256-4fDXN/B1PmxMCb3QSaCoQnMA/KWbrNz6zWTVXdUJS44=" }, - "plugin-publish-plugin-1.2.1.pom": { - "url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom", - "hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M=" + "gradle-api-8.1.pom": { + "url": "https://repo.maven.apache.org/maven2/dev/gradleplugins/gradle-api/8.1/gradle-api-8.1.pom", + "hash": "sha256-268wHq3FM5m4fA2jsO86Klw4GH0OBcrFLJVaTt6EtlQ=" } }, - "com.typesafe:config:1.4.3": { - "config-1.4.3.jar": { - "url": "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.jar", - "hash": "sha256-itpMGFznJBZxLWPgta/cXwCcDN9AXl8m7+zfFWql37Y=" + "dev.gradleplugins:gradle-api:8.0": { + "gradle-api-8.0.jar": { + "url": "https://repo.maven.apache.org/maven2/dev/gradleplugins/gradle-api/8.0/gradle-api-8.0.jar", + "hash": "sha256-YtXRVCHMSl/XGg2atxHpuxfFFg+4xuWjiSeO91bmubI=" }, - "config-1.4.3.pom": { - "url": "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.pom", - "hash": "sha256-tn6vqd0iD/h9ANumiACDpSlqXgxsAxA/XUuOHaEDD/M=" + "gradle-api-8.0.module": { + "url": "https://repo.maven.apache.org/maven2/dev/gradleplugins/gradle-api/8.0/gradle-api-8.0.module", + "hash": "sha256-Zbj3mHw01rf0j9Jv51xSyopufGKQ19ew9RJqlV0Qndk=" + }, + "gradle-api-8.0.pom": { + "url": "https://repo.maven.apache.org/maven2/dev/gradleplugins/gradle-api/8.0/gradle-api-8.0.pom", + "hash": "sha256-OGHuMFGDS0aQTXOx4EpvAV2AXMTWnY/9/SEnNnMJKGY=" } }, - "commons-io:commons-io:2.11.0": { - "commons-io-2.11.0.jar": { - "url": "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar", - "hash": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=" + "dev.gradleplugins:gradle-api:6.9": { + "gradle-api-6.9.jar": { + "url": "https://repo.maven.apache.org/maven2/dev/gradleplugins/gradle-api/6.9/gradle-api-6.9.jar", + "hash": "sha256-5aOsEJuh8SxTT9m6cwFGAR4YIJrR3WOYMIz3XYQdOqs=" + }, + "gradle-api-6.9.module": { + "url": "https://repo.maven.apache.org/maven2/dev/gradleplugins/gradle-api/6.9/gradle-api-6.9.module", + "hash": "sha256-yQEaM+vP1sXqJ+OD5nYmHRUyfa8YGHvo8+0ZD/E/ov8=" }, - "commons-io-2.11.0.pom": { - "url": "https://plugins.gradle.org/m2/commons-io/commons-io/2.11.0/commons-io-2.11.0.pom", - "hash": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k=" + "gradle-api-6.9.pom": { + "url": "https://repo.maven.apache.org/maven2/dev/gradleplugins/gradle-api/6.9/gradle-api-6.9.pom", + "hash": "sha256-tqwVS1a890Qz7cMVZ5kF2gjeTPPeV2KqmiACpnPpojY=" } }, - "io.fabric8:kubernetes-client-bom:5.12.2": { - "kubernetes-client-bom-5.12.2.pom": { - "url": "https://plugins.gradle.org/m2/io/fabric8/kubernetes-client-bom/5.12.2/kubernetes-client-bom-5.12.2.pom", - "hash": "sha256-6qA8FpVlaNVKa6Q31J1Ay/DdjpOXf5hDGCQldrZQvDs=" + "io.fabric8:kubernetes-client-bom:5.12.4": { + "kubernetes-client-bom-5.12.4.pom": { + "url": "https://repo.maven.apache.org/maven2/io/fabric8/kubernetes-client-bom/5.12.4/kubernetes-client-bom-5.12.4.pom", + "hash": "sha256-0jI5KonD79yFqymcWpToud01vALzQM6ERv9lmqFZE6A=" } }, "io.github.classgraph:classgraph:4.8.172": { @@ -197,6 +221,20 @@ "hash": "sha256-gD2mlHTiB6oi/xnshXE3MGrU4ahz4V98Xv0sqer9W74=" } }, + "io.github.goooler.shadow:shadow-gradle-plugin:8.1.7": { + "shadow-gradle-plugin-8.1.7.jar": { + "url": "https://repo.maven.apache.org/maven2/io/github/goooler/shadow/shadow-gradle-plugin/8.1.7/shadow-gradle-plugin-8.1.7.jar", + "hash": "sha256-jyJn7xy7ZeVcRflyQi+8ARyuaKArtNaNQBH2b3WQ7qU=" + }, + "shadow-gradle-plugin-8.1.7.module": { + "url": "https://repo.maven.apache.org/maven2/io/github/goooler/shadow/shadow-gradle-plugin/8.1.7/shadow-gradle-plugin-8.1.7.module", + "hash": "sha256-quuoKtQQ5uLPCpl8VBwuVX9CvwfWt/qi6ZUHNwIjjcI=" + }, + "shadow-gradle-plugin-8.1.7.pom": { + "url": "https://repo.maven.apache.org/maven2/io/github/goooler/shadow/shadow-gradle-plugin/8.1.7/shadow-gradle-plugin-8.1.7.pom", + "hash": "sha256-VrTvWS4FE+0WY5C/WBK/iqWglEHHYZItGLgs2jKxKPw=" + } + }, "io.github.java-diff-utils:java-diff-utils:4.12": { "java-diff-utils-4.12.jar": { "url": "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar", @@ -769,10 +807,10 @@ "hash": "sha256-y26TtzMFAIabQ+RBnTzdYMa7FoD493PwfLGLAZ2S7V8=" } }, - "io.netty:netty-bom:4.1.86.Final": { - "netty-bom-4.1.86.Final.pom": { - "url": "https://plugins.gradle.org/m2/io/netty/netty-bom/4.1.86.Final/netty-bom-4.1.86.Final.pom", - "hash": "sha256-EnFsH+ZM9b2qcETTfROq46iIIbkdR5hCDEanR2kXiv0=" + "io.netty:netty-bom:4.1.107.Final": { + "netty-bom-4.1.107.Final.pom": { + "url": "https://repo.maven.apache.org/maven2/io/netty/netty-bom/4.1.107.Final/netty-bom-4.1.107.Final.pom", + "hash": "sha256-w2mXVYv7ThHyAN2m7i5BpF8t+eGu9njtoI553Yk4whA=" } }, "io.netty:netty-buffer:4.1.106.Final": { @@ -921,16 +959,16 @@ "hash": "sha256-g5JDu+YWEfk3uwtdmzHQyOCWx9DWeZIs9u05+Cxu4NI=" } }, - "jakarta.platform:jakarta.jakartaee-bom:9.0.0": { - "jakarta.jakartaee-bom-9.0.0.pom": { - "url": "https://plugins.gradle.org/m2/jakarta/platform/jakarta.jakartaee-bom/9.0.0/jakarta.jakartaee-bom-9.0.0.pom", - "hash": "sha256-kZA9Ddh23sZ/i5I/EzK6cr8pWwa9OX0Y868ZMHzhos4=" + "jakarta.platform:jakarta.jakartaee-bom:9.1.0": { + "jakarta.jakartaee-bom-9.1.0.pom": { + "url": "https://repo.maven.apache.org/maven2/jakarta/platform/jakarta.jakartaee-bom/9.1.0/jakarta.jakartaee-bom-9.1.0.pom", + "hash": "sha256-35jgJmIZ/buCVigm15o6IHdqi6Aqp4fw8HZaU4ZUyKQ=" } }, - "jakarta.platform:jakartaee-api-parent:9.0.0": { - "jakartaee-api-parent-9.0.0.pom": { - "url": "https://plugins.gradle.org/m2/jakarta/platform/jakartaee-api-parent/9.0.0/jakartaee-api-parent-9.0.0.pom", - "hash": "sha256-9l3PFLbh2RSOGYo5D6/hVfrKCTJT3ekAMH8+DqgsrTs=" + "jakarta.platform:jakartaee-api-parent:9.1.0": { + "jakartaee-api-parent-9.1.0.pom": { + "url": "https://repo.maven.apache.org/maven2/jakarta/platform/jakartaee-api-parent/9.1.0/jakartaee-api-parent-9.1.0.pom", + "hash": "sha256-p3AsSHAmgCeEtXl7YjMKi41lkr8PRzeyXGel6sgmWcA=" } }, "net.bytebuddy:byte-buddy:1.10.9": { @@ -979,114 +1017,134 @@ "hash": "sha256-C9pdmOS+kmHwnN+u5vokWYh5CDTX/K3I4v3ZPH1kGCU=" } }, - "org.apache:apache:27": { - "apache-27.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/apache/27/apache-27.pom", - "hash": "sha256-srD8aeIqZQw4kvHDZtdwdvKVdcZzjfTHpwpEhESEzfk=" + "org.apache:apache:31": { + "apache-31.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/apache/31/apache-31.pom", + "hash": "sha256-VV0MnqppwEKv+SSSe5OB6PgXQTbTVe6tRFIkRS5ikcw=" } }, - "org.apache:apache:23": { - "apache-23.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/apache/23/apache-23.pom", - "hash": "sha256-vBBiTgYj82V3+sVjnKKTbTJA7RUvttjVM6tNJwVDSRw=" + "org.apache.ant:ant:1.10.14": { + "ant-1.10.14.jar": { + "url": "https://repo.maven.apache.org/maven2/org/apache/ant/ant/1.10.14/ant-1.10.14.jar", + "hash": "sha256-TLvZJD3kwQQtYdmhXbTEPJD/k7FteLOUgdoclWyOlnE=" + }, + "ant-1.10.14.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/ant/ant/1.10.14/ant-1.10.14.pom", + "hash": "sha256-L6QmnmscRXI6iojmnZhKdm27IEzQ/pgUlMzfP+469lw=" } }, - "org.apache:apache:21": { - "apache-21.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom", - "hash": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A=" + "org.apache.ant:ant-launcher:1.10.14": { + "ant-launcher-1.10.14.jar": { + "url": "https://repo.maven.apache.org/maven2/org/apache/ant/ant-launcher/1.10.14/ant-launcher-1.10.14.jar", + "hash": "sha256-8JCXJaeiTjk4iPP7tVg0er9QbOL368WB/yYzG5TZUaU=" + }, + "ant-launcher-1.10.14.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/ant/ant-launcher/1.10.14/ant-launcher-1.10.14.pom", + "hash": "sha256-nJ2qQSPp63BzVnk2UsOIo1UQqqWm0UW0T4VdCN1LK7w=" } }, - "org.apache.ant:ant:1.10.13": { - "ant-1.10.13.jar": { - "url": "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.jar", - "hash": "sha256-vvv8eedE6Yks+n25bfO26C3BfSVxr0KqQnl2/CIpmDg=" - }, - "ant-1.10.13.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/ant/ant/1.10.13/ant-1.10.13.pom", - "hash": "sha256-J5NR7tkLj3QbtIyVvmHD7CRU48ipr7Q7zB0LrB3aE3o=" + "org.apache.ant:ant-parent:1.10.14": { + "ant-parent-1.10.14.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/ant/ant-parent/1.10.14/ant-parent-1.10.14.pom", + "hash": "sha256-CBYQamBniMJw767yFWLPy9j0uvfafBG85RSetWYbMx8=" } }, - "org.apache.ant:ant-launcher:1.10.13": { - "ant-launcher-1.10.13.jar": { - "url": "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.jar", - "hash": "sha256-zXaVs7+2lkq3G2oLMdrWAAWud/5QITI2Rnmqzwj3eXA=" - }, - "ant-launcher-1.10.13.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.10.13/ant-launcher-1.10.13.pom", - "hash": "sha256-ApkvvDgFU1bzyU0B6qJJmcsCoJuqnB/fXqx2t8MVY8o=" + "org.apache.commons:commons-parent:65": { + "commons-parent-65.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/65/commons-parent-65.pom", + "hash": "sha256-bPNJX8LmrJE6K38uA/tZCPs/Ip+wbTNY3EVnjVrz424=" } }, - "org.apache.ant:ant-parent:1.10.13": { - "ant-parent-1.10.13.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/ant/ant-parent/1.10.13/ant-parent-1.10.13.pom", - "hash": "sha256-blv8hwgiFD8f+7LG8I7EiHctsxSlKDMC9IFLEms0aTk=" + "org.apache.logging:logging-parent:10.6.0": { + "logging-parent-10.6.0.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/logging/logging-parent/10.6.0/logging-parent-10.6.0.pom", + "hash": "sha256-+CdHWECmQIO1heyNu/cJO2/QJiQpPOw31W7fn8NUEJ4=" } }, - "org.apache.commons:commons-parent:52": { - "commons-parent-52.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/52/commons-parent-52.pom", - "hash": "sha256-ddvo806Y5MP/QtquSi+etMvNO18QR9VEYKzpBtu0UC4=" + "org.apache.logging.log4j:log4j:2.23.0": { + "log4j-2.23.0.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j/2.23.0/log4j-2.23.0.pom", + "hash": "sha256-Wd6Ka/FgR0CA43Mt63n2DaCGGczvHPEhJ3+AXTD0EKs=" } }, - "org.apache.logging:logging-parent:7": { - "logging-parent-7.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/logging/logging-parent/7/logging-parent-7.pom", - "hash": "sha256-5YkR3J/GsXOhDlqp7bk8eZStBmAnBd0Gftz8bh6eFys=" + "org.apache.logging.log4j:log4j-api:2.23.0": { + "log4j-api-2.23.0.jar": { + "url": "https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-api/2.23.0/log4j-api-2.23.0.jar", + "hash": "sha256-/xpYo532bVVTTedE65ciXU92ZUguc5iKSWaB9fJ0STg=" + }, + "log4j-api-2.23.0.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-api/2.23.0/log4j-api-2.23.0.pom", + "hash": "sha256-RZyGlnBV46O6Dnzz5ITruvHr896Q6YOr0yqqYlW9EQk=" } }, - "org.apache.logging.log4j:log4j:2.20.0": { - "log4j-2.20.0.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j/2.20.0/log4j-2.20.0.pom", - "hash": "sha256-mje0qPZ+jUG8JHNxejAhYz1qPD8xBXnbmtC+PyRlnGk=" + "org.apache.logging.log4j:log4j-bom:2.23.0": { + "log4j-bom-2.23.0.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-bom/2.23.0/log4j-bom-2.23.0.pom", + "hash": "sha256-LloZmss0yqynpj+xtuGleffg7ZgSHcX4g1Q+ZTSTBFA=" } }, - "org.apache.logging.log4j:log4j-api:2.20.0": { - "log4j-api-2.20.0.jar": { - "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.jar", - "hash": "sha256-L0PupnnqZvFMoPE/7CqGAKwST1pSMdy034OT7dy5dVA=" + "org.apache.logging.log4j:log4j-core:2.23.0": { + "log4j-core-2.23.0.jar": { + "url": "https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-core/2.23.0/log4j-core-2.23.0.jar", + "hash": "sha256-D+9EHuk4cZ9jXbfvIa1bHd99W/j1q/XsqPKcP0Mmgds=" }, - "log4j-api-2.20.0.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.pom", - "hash": "sha256-zUWDKj1s0hlENcDWPKAV8ZSWjy++pPKRVTv3r7hOFjc=" + "log4j-core-2.23.0.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-core/2.23.0/log4j-core-2.23.0.pom", + "hash": "sha256-f1deoeMU9ruF/Xsg+5YSrIvmSaeg99TRcnwJ/MHk3wA=" } }, - "org.apache.logging.log4j:log4j-bom:2.20.0": { - "log4j-bom-2.20.0.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-bom/2.20.0/log4j-bom-2.20.0.pom", - "hash": "sha256-+LtpLpWmt72mAehxAJWOg9AGG38SMlC2gSiUOhlenaE=" + "org.apache.maven:maven:4.0.0-alpha-9": { + "maven-4.0.0-alpha-9.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/maven/maven/4.0.0-alpha-9/maven-4.0.0-alpha-9.pom", + "hash": "sha256-5QzZ/zefQ3H3/ywsrFF5YfPS9n7fgJCHU8e9UGuRPX4=" } }, - "org.apache.logging.log4j:log4j-core:2.20.0": { - "log4j-core-2.20.0.jar": { - "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.jar", - "hash": "sha256-YTffhIza7Z9NUHb3VRPGyF2oC5U/TnrMo4CYt3B2P1U=" - }, - "log4j-core-2.20.0.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.pom", - "hash": "sha256-3nGsEAVR9KB3rsrQd70VPnHfeqacMELXZRbMXM4Ice4=" + "org.apache.maven:maven-api:4.0.0-alpha-9": { + "maven-api-4.0.0-alpha-9.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/maven/maven-api/4.0.0-alpha-9/maven-api-4.0.0-alpha-9.pom", + "hash": "sha256-ZYvglXcymzX5TemWdb8O/HI26ZYbXHhfMyqkfyKUcfA=" } }, - "org.apache.maven:maven:3.6.3": { - "maven-3.6.3.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/maven/maven/3.6.3/maven-3.6.3.pom", - "hash": "sha256-0thiRepmFJvBTS3XK7uWH5ZN1li4CaBXMlLAZTHu7BY=" + "org.apache.maven:maven-api-meta:4.0.0-alpha-9": { + "maven-api-meta-4.0.0-alpha-9.jar": { + "url": "https://repo.maven.apache.org/maven2/org/apache/maven/maven-api-meta/4.0.0-alpha-9/maven-api-meta-4.0.0-alpha-9.jar", + "hash": "sha256-MsT1yturaAw0lS+ctXBFehODzOxMmlewOSYH1xkcaUk=" + }, + "maven-api-meta-4.0.0-alpha-9.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/maven/maven-api-meta/4.0.0-alpha-9/maven-api-meta-4.0.0-alpha-9.pom", + "hash": "sha256-2ePDXW/aysuNGLn2QoYJDH/65yjWbLJq9aJmgZUNvnk=" } }, - "org.apache.maven:maven-model:3.6.3": { - "maven-model-3.6.3.jar": { - "url": "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar", - "hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8=" + "org.apache.maven:maven-api-xml:4.0.0-alpha-9": { + "maven-api-xml-4.0.0-alpha-9.jar": { + "url": "https://repo.maven.apache.org/maven2/org/apache/maven/maven-api-xml/4.0.0-alpha-9/maven-api-xml-4.0.0-alpha-9.jar", + "hash": "sha256-KbJijQ8CgRlxWRaEnBnu1FsyzcZ+sTVReYxzr6SqI9Y=" }, - "maven-model-3.6.3.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom", - "hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA=" + "maven-api-xml-4.0.0-alpha-9.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/maven/maven-api-xml/4.0.0-alpha-9/maven-api-xml-4.0.0-alpha-9.pom", + "hash": "sha256-N2bjAzOTTJIvUlj6M0uHXyi7ABJ/8D3vANl/KlOnrps=" } }, - "org.apache.maven:maven-parent:33": { - "maven-parent-33.pom": { - "url": "https://plugins.gradle.org/m2/org/apache/maven/maven-parent/33/maven-parent-33.pom", - "hash": "sha256-OFbj/NFpUC1fEv4kUmBOv2x8Al8VZWv6VY6pntKdc+o=" + "org.apache.maven:maven-bom:4.0.0-alpha-9": { + "maven-bom-4.0.0-alpha-9.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/maven/maven-bom/4.0.0-alpha-9/maven-bom-4.0.0-alpha-9.pom", + "hash": "sha256-4EfSnTUI/yd6Wsk1u5J/NUkQLMbTec5a4p4pYzeE0Rw=" + } + }, + "org.apache.maven:maven-parent:41": { + "maven-parent-41.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/41/maven-parent-41.pom", + "hash": "sha256-di/N1M6GIcX6Ciz2SVrSaXKoCT60Mqo+QCvC1OJQDFM=" + } + }, + "org.apache.maven:maven-xml-impl:4.0.0-alpha-9": { + "maven-xml-impl-4.0.0-alpha-9.jar": { + "url": "https://repo.maven.apache.org/maven2/org/apache/maven/maven-xml-impl/4.0.0-alpha-9/maven-xml-impl-4.0.0-alpha-9.jar", + "hash": "sha256-JucCuIHVeuTuiNAsAJQLpkBjcF7mkgWuiVi/g5qLBrE=" + }, + "maven-xml-impl-4.0.0-alpha-9.pom": { + "url": "https://repo.maven.apache.org/maven2/org/apache/maven/maven-xml-impl/4.0.0-alpha-9/maven-xml-impl-4.0.0-alpha-9.pom", + "hash": "sha256-us0USYVzbUMmuuRChHM78eMTKX3NolNGTkYpsddoGPc=" } }, "org.apiguardian:apiguardian-api:1.1.2": { @@ -1103,38 +1161,94 @@ "hash": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA=" } }, - "org.codehaus.groovy:groovy-bom:3.0.14": { - "groovy-bom-3.0.14.pom": { - "url": "https://plugins.gradle.org/m2/org/codehaus/groovy/groovy-bom/3.0.14/groovy-bom-3.0.14.pom", - "hash": "sha256-JODptzjecRjennNWD/0GA0u1zwfKE6fgNFnoi6nRric=" + "org.codehaus.groovy:groovy:3.0.15": { + "groovy-3.0.15.jar": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy/3.0.15/groovy-3.0.15.jar", + "hash": "sha256-p3r2KNZnzIpjCdXiobBLJTxRa9NtnGZpA7TNkWfJLxE=" + }, + "groovy-3.0.15.pom": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy/3.0.15/groovy-3.0.15.pom", + "hash": "sha256-IvKthDdcpQxe38Ci1rTQwCX1p7nMhcVmsugDAj1sYvs=" + } + }, + "org.codehaus.groovy:groovy:3.0.13": { + "groovy-3.0.13.jar": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy/3.0.13/groovy-3.0.13.jar", + "hash": "sha256-BEVpwgsUOCY0cFhWJ9obLJci8fuNiflOeMD/IZq9AUY=" + }, + "groovy-3.0.13.pom": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy/3.0.13/groovy-3.0.13.pom", + "hash": "sha256-mhyxiooB/kLaUw9AWc7f0JSNbozzEA2uHuKXfB6lWsw=" + } + }, + "org.codehaus.groovy:groovy:2.5.12": { + "groovy-2.5.12.jar": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy/2.5.12/groovy-2.5.12.jar", + "hash": "sha256-tNOLCT4gPHi6x8ig8mp8s5P8YHeJf2k4dFANnjWhiuk=" + }, + "groovy-2.5.12.pom": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy/2.5.12/groovy-2.5.12.pom", + "hash": "sha256-CtZFmfE/kNtrwPTme+kr9pI6BP69XxmIdSNBX3NYxko=" + } + }, + "org.codehaus.groovy:groovy-bom:3.0.20": { + "groovy-bom-3.0.20.pom": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-bom/3.0.20/groovy-bom-3.0.20.pom", + "hash": "sha256-dkRwvR07YF/ykc/Q8byQEL1uOaQQkTXHBO442qrdRHQ=" + } + }, + "org.codehaus.plexus:plexus:16": { + "plexus-16.pom": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/16/plexus-16.pom", + "hash": "sha256-aNTu1lo9u8NC7YDdE4++nGfLf7TCq8T1IBzbW59kWGg=" } }, - "org.codehaus.plexus:plexus:10": { - "plexus-10.pom": { - "url": "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus/10/plexus-10.pom", - "hash": "sha256-u6nFIQZLnKEyzpfMHMfrSvwtvjK8iMuHLIjpn2FiMB8=" + "org.codehaus.plexus:plexus:13": { + "plexus-13.pom": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/13/plexus-13.pom", + "hash": "sha256-V1lF3AiWbGbrA9W66RNb0iyjkgoYZbuZ0+zZO+9Vq9M=" } }, - "org.codehaus.plexus:plexus-utils:3.5.1": { - "plexus-utils-3.5.1.jar": { - "url": "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar", - "hash": "sha256-huAlXUyHnGG0gz7X8TEk6LtnnfR967EnMm59t91JoHs=" + "org.codehaus.plexus:plexus-utils:4.0.0": { + "plexus-utils-4.0.0.jar": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/4.0.0/plexus-utils-4.0.0.jar", + "hash": "sha256-JwzXA7SMblyMaR8YdfItYtIs/gcsc64vWBTYPWjB2gs=" }, - "plexus-utils-3.5.1.pom": { - "url": "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.pom", - "hash": "sha256-lP9o7etIIE0SyZGJx2cWTTqfd4oTctHc4RpBRi5iNvI=" + "plexus-utils-4.0.0.pom": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/4.0.0/plexus-utils-4.0.0.pom", + "hash": "sha256-pExUeUJt6g57//0uw630nGhRUBl4iWXE0jH8PwTaQSk=" } }, - "org.eclipse.ee4j:project:1.0.6": { - "project-1.0.6.pom": { - "url": "https://plugins.gradle.org/m2/org/eclipse/ee4j/project/1.0.6/project-1.0.6.pom", - "hash": "sha256-Tn2DKdjafc8wd52CQkG+FF8nEIky9aWiTrkHZ3vI1y0=" + "org.codehaus.plexus:plexus-xml:4.0.3": { + "plexus-xml-4.0.3.jar": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-xml/4.0.3/plexus-xml-4.0.3.jar", + "hash": "sha256-eqWeb9aTuGF8hydq7KnnoUmhC9qWB4iJO5TYpUcDc/c=" + }, + "plexus-xml-4.0.3.pom": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-xml/4.0.3/plexus-xml-4.0.3.pom", + "hash": "sha256-JzxQW2WJJwZxENYbbo/hL8tzcPVZgMk7r+lc4Lgt0FY=" + } + }, + "org.codehaus.woodstox:stax2-api:4.2.1": { + "stax2-api-4.2.1.jar": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/woodstox/stax2-api/4.2.1/stax2-api-4.2.1.jar", + "hash": "sha256-Z4Vn5ItRpCxlxpnyZlOa09Z21LGlsK19iezoudV3JXk=" + }, + "stax2-api-4.2.1.pom": { + "url": "https://repo.maven.apache.org/maven2/org/codehaus/woodstox/stax2-api/4.2.1/stax2-api-4.2.1.pom", + "hash": "sha256-edpBDIwPRqP46K2zDWwkzNYGW272v96HvZfpiB6gouc=" } }, - "org.eclipse.jetty:jetty-bom:9.4.50.v20221201": { - "jetty-bom-9.4.50.v20221201.pom": { - "url": "https://plugins.gradle.org/m2/org/eclipse/jetty/jetty-bom/9.4.50.v20221201/jetty-bom-9.4.50.v20221201.pom", - "hash": "sha256-TN5uUz1gHq+LZazulWt3BsGBkvJ1XQI9fo0Zu31bOUM=" + "org.eclipse.ee4j:project:1.0.7": { + "project-1.0.7.pom": { + "url": "https://repo.maven.apache.org/maven2/org/eclipse/ee4j/project/1.0.7/project-1.0.7.pom", + "hash": "sha256-IFwDmkLLrjVW776wSkg+s6PPlVC9db+EJg3I8oIY8QU=" + } + }, + "org.eclipse.jetty:jetty-bom:9.4.54.v20240208": { + "jetty-bom-9.4.54.v20240208.pom": { + "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-bom/9.4.54.v20240208/jetty-bom-9.4.54.v20240208.pom", + "hash": "sha256-00QQSm7mGdplmEA8JdA6qqrw9U6WRv01EkWN9Xyarrg=" } }, "org.eclipse.jetty:jetty-parent:21": { @@ -1183,13 +1297,33 @@ "hash": "sha256-Js9ia+mlUYCUZg1Vkot+NEGrQxuSkHTHc7+fL3V28/s=" } }, + "org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.3.0": { + "gradle-kotlin-dsl-plugins-4.3.0.jar": { + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.jar", + "hash": "sha256-+IsyeBRxXRfiD4to/wCbmrGo+8GjyRLDO4TfucEVn78=" + }, + "gradle-kotlin-dsl-plugins-4.3.0.module": { + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.module", + "hash": "sha256-wDF/LfYjmTSfi1NHpsZme9yjHMt1meBsKG/IOPxM7c0=" + }, + "gradle-kotlin-dsl-plugins-4.3.0.pom": { + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.pom", + "hash": "sha256-d1G9LyTDRdGbRhGy5+1NZfT1YIA2iuNqpyT5X63VbDw=" + } + }, + "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.3.0": { + "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom": { + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.3.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom", + "hash": "sha256-hgR9KoSpaXsVkXDj1rLL9Cpv5UCQTYdZzJ8JUsmUnXw=" + } + }, "org.jdom:jdom2:2.0.6.1": { "jdom2-2.0.6.1.jar": { - "url": "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.jar", + "url": "https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.jar", "hash": "sha256-CyD0XjoP2PDRLNxTFrBndukCsTZdsAEYh2+RdcYPMCw=" }, "jdom2-2.0.6.1.pom": { - "url": "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.pom", + "url": "https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.pom", "hash": "sha256-VXleEBi4rmR7k3lnz4EKmbCFgsI3TnhzwShzTIyRS/M=" } }, @@ -1251,224 +1385,238 @@ "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" } }, - "org.jetbrains.kotlin:kotlin-android-extensions:1.9.24": { - "kotlin-android-extensions-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.24/kotlin-android-extensions-1.9.24.jar", - "hash": "sha256-4z5UUlSR0ZgdRODKmnxTIWh91QRDPsVJZhqb5UYKEW4=" + "org.jetbrains.kotlin:kotlin-android-extensions:1.9.22": { + "kotlin-android-extensions-1.9.22.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar", + "hash": "sha256-Hl6IFkKpnduPbRPmmVoIwZK8OEGHOWZj2ER8CB2H4k8=" }, - "kotlin-android-extensions-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.24/kotlin-android-extensions-1.9.24.pom", - "hash": "sha256-6QmjYHLn/lbQULgKdXEDwdP4dz+2wb0GcrxKr7hRCEs=" + "kotlin-android-extensions-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom", + "hash": "sha256-lEt8+zPgpvtoRVkEjwKMuWMmyTKiRdXLAhQ7zSwDEVk=" } }, - "org.jetbrains.kotlin:kotlin-build-common:1.9.24": { - "kotlin-build-common-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.24/kotlin-build-common-1.9.24.jar", - "hash": "sha256-+RqOaTfik7FEv6F0DHB3xa12EdtI9CnKMcCm2yduaUo=" + "org.jetbrains.kotlin:kotlin-assignment:1.9.22": { + "kotlin-assignment-1.9.22-gradle82.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22-gradle82.jar", + "hash": "sha256-SbgHX6DiGLoRuhim9yUE38XwOZQovs8Ta9yHHceBgMU=" + }, + "kotlin-assignment-1.9.22.module": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22.module", + "hash": "sha256-bxIe+E4ozzMG/eTDHVXC2D14RPJLDnslZfh7Apn7sx0=" }, - "kotlin-build-common-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.24/kotlin-build-common-1.9.24.pom", - "hash": "sha256-iNt6ER1bfbV+4gKFEX2mNz3NJQQxqd58h8ZCJRYL0RI=" + "kotlin-assignment-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22.pom", + "hash": "sha256-9kQYoM3bm9hQ96/CasjyPon7ptlgSNqnNZVWJ5AgbwA=" } }, - "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.24": { - "kotlin-build-tools-api-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.24/kotlin-build-tools-api-1.9.24.jar", - "hash": "sha256-ZUX99qL/t4jN3O3KymMiOdx+XmHD90SCNzXjse2cG1Q=" + "org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22": { + "kotlin-assignment-compiler-plugin-embeddable-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.22/kotlin-assignment-compiler-plugin-embeddable-1.9.22.jar", + "hash": "sha256-KmHdIZ/tvlMYo7HiPA9zm0XtG1sksLZzdRm3hF6Alfg=" }, - "kotlin-build-tools-api-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.24/kotlin-build-tools-api-1.9.24.pom", - "hash": "sha256-efIYZmDsHYeQhu4jEEeY2M1PthcsJ5xeVuAsqeVbxHU=" + "kotlin-assignment-compiler-plugin-embeddable-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.22/kotlin-assignment-compiler-plugin-embeddable-1.9.22.pom", + "hash": "sha256-nbJr6D8/Y8Uf972pHjpqQNTDTaAj5ilsAQW7SqZvzJI=" } }, - "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.24": { - "kotlin-build-tools-impl-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.24/kotlin-build-tools-impl-1.9.24.jar", - "hash": "sha256-VPyCvEOOGGoMEGH55uYZEQuozUnFH6GOcFb726IpFhc=" + "org.jetbrains.kotlin:kotlin-build-common:1.9.22": { + "kotlin-build-common-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar", + "hash": "sha256-U8PcxTA/WQPmJgrqc+zMaTD5o276KhHNO9On5V32OWY=" }, - "kotlin-build-tools-impl-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.24/kotlin-build-tools-impl-1.9.24.pom", - "hash": "sha256-WI+dA6B9qcDw3JZu6OWqjBEhsUf+1MdxsdwSTMnLONc=" + "kotlin-build-common-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom", + "hash": "sha256-KXxfSYoHdIPvic06cQzSt/LlrjgPOjrt+5xBvGI7E0A=" } }, - "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.24": { - "kotlin-compiler-embeddable-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.24/kotlin-compiler-embeddable-1.9.24.jar", - "hash": "sha256-5x/xnmsUGrhakyj9AQlBUxowJUMCa9QkTJWtwgjVAfY=" + "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22": { + "kotlin-build-tools-api-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar", + "hash": "sha256-3UnLfij08zgvUlDPsFyGT9XwqW0yZbspPHezCtzJP/Y=" }, - "kotlin-compiler-embeddable-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.24/kotlin-compiler-embeddable-1.9.24.pom", - "hash": "sha256-1w0fiFkkQ/R1eVFUVqTWwxBRztoK0RRGkjrK/kwMldE=" + "kotlin-build-tools-api-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom", + "hash": "sha256-DFZLu4fcXs32Q005buob886Xar8IgYCN0Wb6SbBGSfs=" } }, - "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.24": { - "kotlin-compiler-runner-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.24/kotlin-compiler-runner-1.9.24.jar", - "hash": "sha256-g4Q5dMH/0NNmbTxkk0Hb/TB32eFAZlVKakR7laMB3S0=" + "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22": { + "kotlin-build-tools-impl-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar", + "hash": "sha256-G0jW3gQqUl9jtVdROuEmbWmTSCJbAT+UDjLGPeJolCg=" }, - "kotlin-compiler-runner-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.24/kotlin-compiler-runner-1.9.24.pom", - "hash": "sha256-wb508udfB+SamqaJA+DctogA0iRkBBi0hHfuQsvDWQQ=" + "kotlin-build-tools-impl-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom", + "hash": "sha256-tWM/E0m+lcdHRuHimiqm51LoneGrmmUjSS85j6aVWN0=" } }, - "org.jetbrains.kotlin:kotlin-daemon-client:1.9.24": { - "kotlin-daemon-client-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.24/kotlin-daemon-client-1.9.24.jar", - "hash": "sha256-WIqveo7Y55uL8+qLknj/Enii1ZKFpF4Jjxz8v7Dc080=" + "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22": { + "kotlin-compiler-embeddable-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar", + "hash": "sha256-K/6t7lmrGYjDNtvW5l2ZH3Zq4d2Gg/Km3tX6oCefDKA=" }, - "kotlin-daemon-client-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.24/kotlin-daemon-client-1.9.24.pom", - "hash": "sha256-tv4ne9GuP/zAzriOxmZZmHpc0TeaiXaDEvXe3x8uH+U=" + "kotlin-compiler-embeddable-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom", + "hash": "sha256-s9o0u29ClqzzoPRDRm8FBsbJnaXNliTW4LdFsiKHhOs=" } }, - "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.24": { - "kotlin-daemon-embeddable-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.24/kotlin-daemon-embeddable-1.9.24.jar", - "hash": "sha256-F3vIsqQHbcznh4rQ2P0HFjrzF44/qQ7mPU9zO7R7/ck=" + "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22": { + "kotlin-compiler-runner-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar", + "hash": "sha256-c+x1u5nr/6iySiSjuFPz9mCWvEapNRrw2sk967acFes=" }, - "kotlin-daemon-embeddable-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.24/kotlin-daemon-embeddable-1.9.24.pom", - "hash": "sha256-T7V/xqxyCVGzIkd0s7sqVFSelj0vTf3GhB6Ex77WKrE=" + "kotlin-compiler-runner-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom", + "hash": "sha256-pO6KZ8HW8lODjAAnKAvLgFCsDc3MrZdIlhOKaaAX6wE=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.24": { - "kotlin-gradle-plugin-1.9.24-gradle82.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.24/kotlin-gradle-plugin-1.9.24-gradle82.jar", - "hash": "sha256-6K7ZqBLmU2zu+z7VaPE0ZPoF8ka/0TaTONZDyDKUAks=" - }, - "kotlin-gradle-plugin-1.9.24.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.24/kotlin-gradle-plugin-1.9.24.module", - "hash": "sha256-txNZQoRrVH+xtZaGQXBGPC81+hW1qtkzX60P/YamE3s=" + "org.jetbrains.kotlin:kotlin-daemon-client:1.9.22": { + "kotlin-daemon-client-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar", + "hash": "sha256-XXPhgVsRZ+Sv4gjwCyp1wIC8WoEHhsqtuOFHh1k6k7k=" }, - "kotlin-gradle-plugin-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.24/kotlin-gradle-plugin-1.9.24.pom", - "hash": "sha256-ilwTAHAhV//cHyV1hDZZbsVsM3Z8GqLouOskamWs9SM=" + "kotlin-daemon-client-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom", + "hash": "sha256-YsRKZZ2lXbb7El4pKbmNUEow4fSvgU4I5JIUJqpST4o=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.24": { - "kotlin-gradle-plugin-annotations-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.24/kotlin-gradle-plugin-annotations-1.9.24.jar", - "hash": "sha256-syBxajMCclSau65oGoD14P5YBLo5TQ8kW1s3f6JWNVk=" + "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22": { + "kotlin-daemon-embeddable-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar", + "hash": "sha256-kqV4ExcUR9U0Rh+hP+N9yM07f4bYPpsfe7GwvjBUH4s=" }, - "kotlin-gradle-plugin-annotations-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.24/kotlin-gradle-plugin-annotations-1.9.24.pom", - "hash": "sha256-fHb3hHzJ5bWOGoJbbqAZV7QoHpHmzXBcFmy+afvDtYs=" + "kotlin-daemon-embeddable-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom", + "hash": "sha256-9uo9z2v7Og0GmER8SKa88I2Oqs+D/JX+nUGBpeXjwrE=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.24": { - "kotlin-gradle-plugin-api-1.9.24-gradle82.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24-gradle82.jar", - "hash": "sha256-LV53JHoKf1klIL64gx6OPrl0m/OIhfgv+9Y8f/BRPhI=" + "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22": { + "kotlin-gradle-plugin-1.9.22-gradle82.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar", + "hash": "sha256-1OcY3V8wxrqTLZPM/FswFendPkQUOgUrh3Ao8frlQtw=" }, - "kotlin-gradle-plugin-api-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24.jar", - "hash": "sha256-LV53JHoKf1klIL64gx6OPrl0m/OIhfgv+9Y8f/BRPhI=" + "kotlin-gradle-plugin-1.9.22.module": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module", + "hash": "sha256-pPRqwMq9jVzbaJ0tN9GdWFhPcIv59k/+TpgKL/dTS7U=" }, - "kotlin-gradle-plugin-api-1.9.24.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24.module", - "hash": "sha256-kB+s0LsPLdJ9XzvJDkQvJ3OrEuHOcgnT78HlhWNsfWQ=" + "kotlin-gradle-plugin-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom", + "hash": "sha256-A3750tSupA9JKdglE1g+STwOBRVuDaix1/Ujurhobyc=" + } + }, + "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22": { + "kotlin-gradle-plugin-annotations-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar", + "hash": "sha256-lnaDy5jZkQFFYH+/W0VilbQ/Cq+Tsbunv2mS5zHLJOw=" }, - "kotlin-gradle-plugin-api-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24.pom", - "hash": "sha256-r9FlfZ0Vx2BxZ1InnZEdG73PjfTPXZYEUGHjCunBMX4=" + "kotlin-gradle-plugin-annotations-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom", + "hash": "sha256-Y7por+B4/3D3CPnpecaTxFv+iQQfeWQbC4H2tKEm7rs=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.24": { - "kotlin-gradle-plugin-idea-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.24/kotlin-gradle-plugin-idea-1.9.24.jar", - "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" + "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22": { + "kotlin-gradle-plugin-api-1.9.22-gradle82.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar", + "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" + }, + "kotlin-gradle-plugin-api-1.9.22.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar", + "hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" }, - "kotlin-gradle-plugin-idea-1.9.24.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.24/kotlin-gradle-plugin-idea-1.9.24.module", - "hash": "sha256-4Jx9wdImjqtl5EGtLjgWDzGHsNjAv5zxrUyF+nUjm6Q=" + "kotlin-gradle-plugin-api-1.9.22.module": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module", + "hash": "sha256-H0SJxTBPmlEqVof/zAqvCTCvydcgUdOpBfrAcANi+3s=" }, - "kotlin-gradle-plugin-idea-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.24/kotlin-gradle-plugin-idea-1.9.24.pom", - "hash": "sha256-aTnfzQ6JgI3AA25alaOPcb+EKF53bpEFIdVWJnp8sMc=" + "kotlin-gradle-plugin-api-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom", + "hash": "sha256-ZAFewaGutVCqGCjCQuIoODDFD2g2TkCDH+FYj9wEEfU=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.24": { - "kotlin-gradle-plugin-idea-proto-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.24/kotlin-gradle-plugin-idea-proto-1.9.24.jar", - "hash": "sha256-hR4BJ+5ixRDpf4UB6Q/V6yTQ15bHCcv5SvM5R0Fre/4=" + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22": { + "kotlin-gradle-plugin-idea-1.9.22.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar", + "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" + }, + "kotlin-gradle-plugin-idea-1.9.22.module": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module", + "hash": "sha256-z+LCbjMPaAMsAD+lJMAx5aYPzo2Jn/8uQjFBKL60QCs=" }, - "kotlin-gradle-plugin-idea-proto-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.24/kotlin-gradle-plugin-idea-proto-1.9.24.pom", - "hash": "sha256-3gafD+sze0Nbc/GdKaISONBW5oegumvivczlmvqSa7Y=" + "kotlin-gradle-plugin-idea-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom", + "hash": "sha256-3BSjKHVDun5QRs1OCVAtJ4hMqYfshwb1+xid54luOsw=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.24": { - "kotlin-gradle-plugin-model-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.24/kotlin-gradle-plugin-model-1.9.24.jar", - "hash": "sha256-VbEQENUcmcMXybbvXpVJrUhXEhjN5hvYRIGMti0aPxk=" - }, - "kotlin-gradle-plugin-model-1.9.24.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.24/kotlin-gradle-plugin-model-1.9.24.module", - "hash": "sha256-cQXlShB2dqp9KAzFqUl0QX4qO1cD1w3WH8yr6wccSug=" + "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22": { + "kotlin-gradle-plugin-idea-proto-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar", + "hash": "sha256-9dgu5hlmotmK364Z8k1hcwIsFUBIls3yNjQANe5owPU=" }, - "kotlin-gradle-plugin-model-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.24/kotlin-gradle-plugin-model-1.9.24.pom", - "hash": "sha256-rquP4uqM+lwumZi1/nU4MaeYfCx4Q6U1MjYqB/pvABg=" + "kotlin-gradle-plugin-idea-proto-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom", + "hash": "sha256-huMsqCkn2ogKHPNDpA7MIJgHXm/XInOzTVDfpUTzRjs=" } }, - "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.24": { - "kotlin-gradle-plugins-bom-1.9.24.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.24/kotlin-gradle-plugins-bom-1.9.24.module", - "hash": "sha256-BEh8cNHIzCkBwDdNgarX+k/Rp5NeJa200LH69WkKzNs=" + "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22": { + "kotlin-gradle-plugin-model-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar", + "hash": "sha256-UQj61b4UmCXs46ABA8PCHPGv6VS7ZLhweJVyk511OMs=" }, - "kotlin-gradle-plugins-bom-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.24/kotlin-gradle-plugins-bom-1.9.24.pom", - "hash": "sha256-wqVTvkQFNLjTMOV69hNjc1WLXgIPppzPsDsuWDx1nAA=" + "kotlin-gradle-plugin-model-1.9.22.module": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module", + "hash": "sha256-L/MBPfK6epteiwBOhIF1DI0PqVOtAHoZbYXSY2cdvq4=" + }, + "kotlin-gradle-plugin-model-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom", + "hash": "sha256-gfUmlHml2X7oeSpITIMr495DgggSZxlhUAHKyI5C9qg=" } }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.24": { - "kotlin-klib-commonizer-api-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.24/kotlin-klib-commonizer-api-1.9.24.jar", - "hash": "sha256-U791bL22Uj3LTA16syrLZBR5bBz0nOQxvkC3DMV9tUk=" + "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22": { + "kotlin-gradle-plugins-bom-1.9.22.module": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module", + "hash": "sha256-Qj401h0iCxoN3BgUCGqM6rTa2ed5ArDOjLRyG789xu0=" }, - "kotlin-klib-commonizer-api-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.24/kotlin-klib-commonizer-api-1.9.24.pom", - "hash": "sha256-6pO4z4DdKXdKf7GEeclxH7uWPqhqwjq2FOepQAUsZ34=" + "kotlin-gradle-plugins-bom-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom", + "hash": "sha256-da2/XHjOJHwiuvNijQs/8c9+19N9YB66cwTXerdb3Z8=" } }, - "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.24": { - "kotlin-klib-commonizer-embeddable-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.24/kotlin-klib-commonizer-embeddable-1.9.24.jar", - "hash": "sha256-AUyBXNeOK4yub4JeHOpPMd6v4HEBOh0G/jZXVzTDA6E=" + "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22": { + "kotlin-klib-commonizer-api-1.9.22.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar", + "hash": "sha256-jC9lQpwYLi5KLgnLkQ5iuW227tKFWUuPga+CO35ZROI=" }, - "kotlin-klib-commonizer-embeddable-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.24/kotlin-klib-commonizer-embeddable-1.9.24.pom", - "hash": "sha256-yshuQs6nFQwXJJW69k1hWar/vCjFm1+433K+p1iL9Rw=" + "kotlin-klib-commonizer-api-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom", + "hash": "sha256-EMrJcNMAo0icM/CzBBVv8DLZWVm+WqrDuIAoKtWGIv4=" } }, - "org.jetbrains.kotlin:kotlin-native-utils:1.9.24": { - "kotlin-native-utils-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.24/kotlin-native-utils-1.9.24.jar", - "hash": "sha256-I1WvMJo7FgeymmF02Fe05umxs2EH1sHvu8PMSbpDRQw=" + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22": { + "kotlin-klib-commonizer-embeddable-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar", + "hash": "sha256-c/50PnTSEoPTg9C6voX9CMRCr8GnvYgIL42gUQ0FPUs=" }, - "kotlin-native-utils-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.24/kotlin-native-utils-1.9.24.pom", - "hash": "sha256-uvA25RxRge8Q8wVRXRnfawKWsLcIS0g9I4oImN630i0=" + "kotlin-klib-commonizer-embeddable-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom", + "hash": "sha256-dxghItppe2YqSRPX3Z/mu68ATOhH/YZ9oj6v8MTIJEs=" } }, - "org.jetbrains.kotlin:kotlin-project-model:1.9.24": { - "kotlin-project-model-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.24/kotlin-project-model-1.9.24.jar", - "hash": "sha256-Nri/x5EqvuVIWSxcI5keVRQODS17OhqTTdPOj6Q0+N0=" + "org.jetbrains.kotlin:kotlin-native-utils:1.9.22": { + "kotlin-native-utils-1.9.22.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar", + "hash": "sha256-eGwSfdVTXbLDmuWXzQsMrZ6RS4PiNvHbAlEjXMnGUqw=" }, - "kotlin-project-model-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.24/kotlin-project-model-1.9.24.pom", - "hash": "sha256-sF4O4QAsGO3t626JrwfjvheFB9sT2hutbs52vmDz7es=" + "kotlin-native-utils-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom", + "hash": "sha256-EcUUwF7qOuno4Wq0l5bxEd9DxzSCMeNfr0xCjMT3Q+o=" } }, - "org.jetbrains.kotlin:kotlin-reflect:1.9.24": { - "kotlin-reflect-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.24/kotlin-reflect-1.9.24.jar", - "hash": "sha256-plFmRFu4XvgWzeEnJ5/gAX0rfMQ5s7lyOQ4bc21k6Uw=" + "org.jetbrains.kotlin:kotlin-project-model:1.9.22": { + "kotlin-project-model-1.9.22.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar", + "hash": "sha256-zBHVwLGQnFsKCP0l7w51T/0r9Wyu9mX7eFEiI15UKhg=" }, - "kotlin-reflect-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.24/kotlin-reflect-1.9.24.pom", - "hash": "sha256-CghcMAUb1tSrdlrVoMUXnEE7NfdBjyiDFy+9m6GrzMk=" + "kotlin-project-model-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom", + "hash": "sha256-659KFngb/ADM7IAw++XuIo5vKydxxQwmezIY/rAGW0A=" } }, "org.jetbrains.kotlin:kotlin-reflect:1.9.23": { @@ -1481,6 +1629,16 @@ "hash": "sha256-WXD72CdKWAyk6I/nhkeMR8i5ufo3TFsK3ekyhFYiX2o=" } }, + "org.jetbrains.kotlin:kotlin-reflect:1.9.22": { + "kotlin-reflect-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar", + "hash": "sha256-d/MRyhOEgR1Rn9o4n8sSaL2qBY1gUEbg7edsA7DfPpc=" + }, + "kotlin-reflect-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom", + "hash": "sha256-xxLjWN97kxi2j1RjlxsIhnODf8DKQoXRw4LIEC7da18=" + } + }, "org.jetbrains.kotlin:kotlin-reflect:1.8.22": { "kotlin-reflect-1.8.22.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.jar", @@ -1501,106 +1659,120 @@ "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" } }, - "org.jetbrains.kotlin:kotlin-script-runtime:1.9.24": { - "kotlin-script-runtime-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.24/kotlin-script-runtime-1.9.24.jar", - "hash": "sha256-MUx9MI/nUGVDZbrGFEeAYTyRac89nh2vurkc+AvcNXw=" + "org.jetbrains.kotlin:kotlin-sam-with-receiver:1.9.22": { + "kotlin-sam-with-receiver-1.9.22-gradle82.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22-gradle82.jar", + "hash": "sha256-cvvN3L25ZaQ9uWfLKjGaXXp3NttQrCA8lrmatVc5wkE=" + }, + "kotlin-sam-with-receiver-1.9.22.module": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22.module", + "hash": "sha256-7rpm+YBjiXkSCkm5/aW4YeEHLWCQIzi1NyYH8kljDC0=" }, - "kotlin-script-runtime-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.24/kotlin-script-runtime-1.9.24.pom", - "hash": "sha256-mGDF58qg5AlxmVCQEtoD01GX/teewKkKUOKPjeh1QE0=" + "kotlin-sam-with-receiver-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22.pom", + "hash": "sha256-AD+clOG/rX8ZDm70F+kTOhCjH3hRMBPlkHS2DzZZLCY=" } }, - "org.jetbrains.kotlin:kotlin-scripting-common:1.9.24": { - "kotlin-scripting-common-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.24/kotlin-scripting-common-1.9.24.jar", - "hash": "sha256-KqeY6XgokBDYByTdGdn+GQtSQkFIEQT89RjAO8OdTks=" + "org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22": { + "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.22/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.jar", + "hash": "sha256-jqUUoRQABsxXoHMVsVoTaI7W/qFwfzrJjpzoCVu2z38=" }, - "kotlin-scripting-common-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.24/kotlin-scripting-common-1.9.24.pom", - "hash": "sha256-S9rpUqslCWFRsfqERCooGupzwW0dTNVdigLDccqJusQ=" + "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.22/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.pom", + "hash": "sha256-MM9L0JPCbn/Ryt/F1Qop5q60WXUSeia84rEJUfJPgqo=" } }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.24": { - "kotlin-scripting-compiler-embeddable-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.24/kotlin-scripting-compiler-embeddable-1.9.24.jar", - "hash": "sha256-02gR+1yZeXaEH/PQqxnGt96RkomeQIK6Hz/7oH6UBfQ=" + "org.jetbrains.kotlin:kotlin-script-runtime:1.9.22": { + "kotlin-script-runtime-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar", + "hash": "sha256-uAZwV59/ktRz2NWDTwsST3dVxFmP6UskQYOwKDSDRXQ=" }, - "kotlin-scripting-compiler-embeddable-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.24/kotlin-scripting-compiler-embeddable-1.9.24.pom", - "hash": "sha256-FUgOkd8v/sfFfOHgpfFBBltFIrbbyJsv2yk9xsVwwMU=" + "kotlin-script-runtime-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom", + "hash": "sha256-/ra0ns9pEG1MEoXnH5ob2noSfO9oMC4+n9yCmKTjR5U=" } }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.24": { - "kotlin-scripting-compiler-impl-embeddable-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.24/kotlin-scripting-compiler-impl-embeddable-1.9.24.jar", - "hash": "sha256-i/2A2RNqKjJhALC3O/saG7NX7d+uDYEiDkYSa4im7no=" + "org.jetbrains.kotlin:kotlin-scripting-common:1.9.22": { + "kotlin-scripting-common-1.9.22.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar", + "hash": "sha256-+lAMvwNJQ++BJvPT3GWvCf+Z3//kTFCZtPwu1b8vXcc=" }, - "kotlin-scripting-compiler-impl-embeddable-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.24/kotlin-scripting-compiler-impl-embeddable-1.9.24.pom", - "hash": "sha256-Sg6yUXF8Sih6ZBfp/QRBZ4xJatxnAdhasPFi8W0s+4c=" + "kotlin-scripting-common-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom", + "hash": "sha256-ROURI7DCfm/ZM/wma00Nrw8GhKYq7Z/mhC6Noz8qKz8=" } }, - "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.24": { - "kotlin-scripting-jvm-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.24/kotlin-scripting-jvm-1.9.24.jar", - "hash": "sha256-G9aQBgqUhDl3N0pFds2J10nk7srx+3pYA2/rOuVRxKw=" + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22": { + "kotlin-scripting-compiler-embeddable-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar", + "hash": "sha256-Ij/shIMCNEmc1MeiPqHJLroSfEGzXZux1LYdJBVa6zU=" }, - "kotlin-scripting-jvm-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.24/kotlin-scripting-jvm-1.9.24.pom", - "hash": "sha256-kkM+M+MLpFvMS/hKxUsX0p8Dlkp2BwYW1sZS3WxhySU=" + "kotlin-scripting-compiler-embeddable-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom", + "hash": "sha256-wWCPP7yyqfdSPq0zWZwurc5MgSFhqeBmufSwBa97Qxw=" } }, - "org.jetbrains.kotlin:kotlin-serialization:1.9.24": { - "kotlin-serialization-1.9.24-gradle82.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.24/kotlin-serialization-1.9.24-gradle82.jar", - "hash": "sha256-qwl/Ug33fXOXhQfsR6/B2K9ME0tn5hCrfcLLzYrFIFg=" - }, - "kotlin-serialization-1.9.24.module": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.24/kotlin-serialization-1.9.24.module", - "hash": "sha256-aRNY++5uyvcPyLLR8ic1q21RAErJHEh8Jbdm2xPD74k=" + "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22": { + "kotlin-scripting-compiler-impl-embeddable-1.9.22.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar", + "hash": "sha256-OJkYFqKH/3YkHxp35/ERZIHU6To9tjJZplfd4g5tD2U=" }, - "kotlin-serialization-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.24/kotlin-serialization-1.9.24.pom", - "hash": "sha256-5JgomGgooBL/9+I+cSUCASVSzCtmOdx3HgsX2VINhJ0=" + "kotlin-scripting-compiler-impl-embeddable-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom", + "hash": "sha256-gmccM6lXsuKoINZqaSwvzmPjvwR/HLJeb7A5HF3c8uc=" } }, - "org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:1.9.24": { - "kotlin-serialization-compiler-plugin-embeddable-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.24/kotlin-serialization-compiler-plugin-embeddable-1.9.24.jar", - "hash": "sha256-T/XIE76vaHjvBxFIZvU4keMdlscr+XWMvG81CmxNNs0=" + "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22": { + "kotlin-scripting-jvm-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar", + "hash": "sha256-jRJ9dvz6BRfDbB6g4ijs4D1aRoJkKgH2R5prvccxKik=" }, - "kotlin-serialization-compiler-plugin-embeddable-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.24/kotlin-serialization-compiler-plugin-embeddable-1.9.24.pom", - "hash": "sha256-GWjfZLq2HzC6UvTrMQ0tzFl1IQGbsUL72ZPw5VWk3+k=" + "kotlin-scripting-jvm-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom", + "hash": "sha256-cBJS6huo/4f8M0dqYePVxtnS3aQbqpiZTdaYDuE/vG0=" } }, - "org.jetbrains.kotlin:kotlin-stdlib:1.9.24": { - "kotlin-stdlib-1.9.24-all.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24-all.jar", - "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" + "org.jetbrains.kotlin:kotlin-serialization:1.9.22": { + "kotlin-serialization-1.9.22-gradle82.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22-gradle82.jar", + "hash": "sha256-AcrgEEPdT3sLAttWbZPHVoiwlsNAkJ9o0OSVcqvF6VQ=" }, - "kotlin-stdlib-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24.jar", - "hash": "sha256-hYuQJpbanPWFq52Y/8HCcSJpgoNU3+kQfjcRsISjZGg=" + "kotlin-serialization-1.9.22.module": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.module", + "hash": "sha256-s3cuUZFg/is2t9G6MkGQYU27lLFZzmBk9M1z+RhhWiI=" }, - "kotlin-stdlib-1.9.24.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24.module", - "hash": "sha256-8uKmVztbUmXEEtXFgfv46gDGKxC5yS1WdMnpfy8zNbM=" + "kotlin-serialization-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-serialization/1.9.22/kotlin-serialization-1.9.22.pom", + "hash": "sha256-D9yUsPEx2Ct3RpAEB0r0f/yntGfVeIn762oVSWg+rL0=" + } + }, + "org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:1.9.22": { + "kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.jar", + "hash": "sha256-OFR9AAsWYbFLkkZxz7F6tSAL64NOOj2kJ37gkGLppQA=" }, - "kotlin-stdlib-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24.pom", - "hash": "sha256-uc6tTCIt7pDHT28BPTFqnlD4EaApMxPDNRrssvfM7V8=" + "kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-serialization-compiler-plugin-embeddable/1.9.22/kotlin-serialization-compiler-plugin-embeddable-1.9.22.pom", + "hash": "sha256-i8LheiTLbQ4CMzLkjKq5e3P+MyuSdVWhGjAsb1xcPGQ=" } }, - "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.24": { - "kotlin-stdlib-common-1.9.24.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.24/kotlin-stdlib-common-1.9.24.module", - "hash": "sha256-6Y6oxE+zaCDQG7iwAxaOI6IhtAHLQyVtcjo/C3fWFsI=" + "org.jetbrains.kotlin:kotlin-stdlib:1.9.22": { + "kotlin-stdlib-1.9.22-all.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar", + "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" }, - "kotlin-stdlib-common-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.24/kotlin-stdlib-common-1.9.24.pom", - "hash": "sha256-XZfiDNWGLoR6aYF1uTno3Fxr11vtmZ1vPU6ghIESFsA=" + "kotlin-stdlib-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar", + "hash": "sha256-ar4UbCeGQTi4dMzM/l9TTj65I8maG3tdRUlO5WlPPgo=" + }, + "kotlin-stdlib-1.9.22.module": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module", + "hash": "sha256-9IIxS1B5wUVfb7DUJXp0XRAcYSTOlhUiuob53JCQHkc=" + }, + "kotlin-stdlib-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom", + "hash": "sha256-zOLxUoXsgHijd0a1cwigVAQt1cwlQgxD9zt4V8JGjwM=" } }, "org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22": { @@ -1613,16 +1785,6 @@ "hash": "sha256-10k21oh1ZK63EOhCmLVCB/U+m88jpSrSv6IsIIZ3V2c=" } }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.24": { - "kotlin-stdlib-jdk7-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.24/kotlin-stdlib-jdk7-1.9.24.jar", - "hash": "sha256-tmmbhQugeJ8ukEJ5zYvce+qRMP/RV826AB/HQl2KR7c=" - }, - "kotlin-stdlib-jdk7-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.24/kotlin-stdlib-jdk7-1.9.24.pom", - "hash": "sha256-RYapN9W8vDqzBCwECaHHKWFLy6PHpylvJS1ibuNzh9Q=" - } - }, "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22": { "kotlin-stdlib-jdk7-1.8.22.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.jar", @@ -1633,16 +1795,6 @@ "hash": "sha256-T5WKqZPVmE+PXr7UFGVipfOp9pW2BJyfKHOBN5ytqzM=" } }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.24": { - "kotlin-stdlib-jdk8-1.9.24.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.24/kotlin-stdlib-jdk8-1.9.24.jar", - "hash": "sha256-W1u/s+EYS14TMXw9QiN/okrdRDsud4GWHuozTbE2rbE=" - }, - "kotlin-stdlib-jdk8-1.9.24.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.24/kotlin-stdlib-jdk8-1.9.24.pom", - "hash": "sha256-BuBt70n5aq9uXD7EKDauWdbi2mJUcAkUKBZ1Z53J8qU=" - } - }, "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22": { "kotlin-stdlib-jdk8-1.8.22.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.jar", @@ -1653,46 +1805,40 @@ "hash": "sha256-ko8hhyF0djE8uBbUgHC8dlSqO5pa6B0/xfjCecyPjZ4=" } }, - "org.jetbrains.kotlin:kotlin-tooling-core:1.9.24": { - "kotlin-tooling-core-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.24/kotlin-tooling-core-1.9.24.jar", + "org.jetbrains.kotlin:kotlin-tooling-core:1.9.22": { + "kotlin-tooling-core-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar", "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" }, - "kotlin-tooling-core-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.24/kotlin-tooling-core-1.9.24.pom", - "hash": "sha256-dbytE+kWgPzwEsjuGqGqxxn1m2IbOUyj/DLGJf+YclY=" + "kotlin-tooling-core-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom", + "hash": "sha256-FPx/NcY15fzRvqU3q0+kQxLoQyUtUzNRnjaxJeoImyE=" } }, - "org.jetbrains.kotlin:kotlin-util-io:1.9.24": { - "kotlin-util-io-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.24/kotlin-util-io-1.9.24.jar", - "hash": "sha256-u0z0H/UG5Q+bLDQiBkmIFupO3f6ImYqQtotDlLT6xfo=" + "org.jetbrains.kotlin:kotlin-util-io:1.9.22": { + "kotlin-util-io-1.9.22.jar": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar", + "hash": "sha256-9telhJGjeLCDrRvq1IikheEdFgsx52wYwa1SDx0o9Gs=" }, - "kotlin-util-io-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.24/kotlin-util-io-1.9.24.pom", - "hash": "sha256-82VnN3kyTzMtOTkMeAd1h4BNEeznKv5K7uMlOtZTPFE=" + "kotlin-util-io-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom", + "hash": "sha256-ZP1qINbsBAE7ttdWJ/ZYC7c2QdlIkJ1cFmTi53MQbe4=" } }, - "org.jetbrains.kotlin:kotlin-util-klib:1.9.24": { - "kotlin-util-klib-1.9.24.jar": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.24/kotlin-util-klib-1.9.24.jar", - "hash": "sha256-4NqKfwZIV8BIOmVyfRYtPtV84m1+R3ix8ADg0MDck3E=" + "org.jetbrains.kotlin:kotlin-util-klib:1.9.22": { + "kotlin-util-klib-1.9.22.jar": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar", + "hash": "sha256-pnnuL1EPOrkmkYGN5etbCQLobYjJdnTn20TcTyJSxfk=" }, - "kotlin-util-klib-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.24/kotlin-util-klib-1.9.24.pom", - "hash": "sha256-krQjr9XnKbsRT3G1ip4DhF3+K9pWJFTrvbg8nYOyMHE=" - } - }, - "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.9.24": { - "org.jetbrains.kotlin.jvm.gradle.plugin-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.9.24/org.jetbrains.kotlin.jvm.gradle.plugin-1.9.24.pom", - "hash": "sha256-7v934tgCArrgxdMiTdws8lklMcyyuJL2uFSyMd+fEBU=" + "kotlin-util-klib-1.9.22.pom": { + "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom", + "hash": "sha256-Dep9//Cit0CIrJlwQ8vCQINdK/9Zs5/MiwysbqPrNpc=" } }, - "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin:1.9.24": { - "org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.24.pom": { - "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.24/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.24.pom", - "hash": "sha256-4VQlt07TxI1q7g8h3u9MQ5npbV4lZ3vxVZVNOBYRZII=" + "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin:1.9.22": { + "org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom": { + "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/plugin/serialization/org.jetbrains.kotlin.plugin.serialization.gradle.plugin/1.9.22/org.jetbrains.kotlin.plugin.serialization.gradle.plugin-1.9.22.pom", + "hash": "sha256-+9WDi7OolDJys/EfhJrIlDeJL9MJstA012QjjEVPoyI=" } }, "org.jetbrains.kotlinx:atomicfu:0.23.1": { @@ -1913,14 +2059,34 @@ "hash": "sha256-eN9n0GTTuq8a9Ohi6YFGl3YpfGyHi7e/G0Ljky9vr48=" } }, - "org.junit:junit-bom:5.9.1": { - "junit-bom-5.9.1.module": { - "url": "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.module", - "hash": "sha256-kCbBZWaQ+hRa117Og2dCEaoSrYkwqRsQfC9c3s4vGxw=" + "org.junit:junit-bom:5.10.2": { + "junit-bom-5.10.2.module": { + "url": "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.2/junit-bom-5.10.2.module", + "hash": "sha256-3iOxFLPkEZqP5usXvtWjhSgWaYus5nBxV51tkn67CAo=" }, - "junit-bom-5.9.1.pom": { - "url": "https://plugins.gradle.org/m2/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.pom", - "hash": "sha256-sWPBz8j8H9WLRXoA1YbATEbphtdZBOnKVMA6l9ZbSWw=" + "junit-bom-5.10.2.pom": { + "url": "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.2/junit-bom-5.10.2.pom", + "hash": "sha256-Fp3ZBKSw9lIM/+ZYzGIpK/6fPBSpifqSEgckzeQ6mWg=" + } + }, + "org.junit:junit-bom:5.10.1": { + "junit-bom-5.10.1.module": { + "url": "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.1/junit-bom-5.10.1.module", + "hash": "sha256-IbCvz//i7LN3D16wCuehn+rulOdx+jkYFzhQ2ueAZ7c=" + }, + "junit-bom-5.10.1.pom": { + "url": "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.1/junit-bom-5.10.1.pom", + "hash": "sha256-IcSwKG9LIAaVd/9LIJeKhcEArIpGtvHIZy+6qzN7w/I=" + } + }, + "org.junit:junit-bom:5.9.3": { + "junit-bom-5.9.3.module": { + "url": "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.9.3/junit-bom-5.9.3.module", + "hash": "sha256-tAH9JZAeWCpSSqU0PEs54ovFbiSWHBBpvytLv87ka5M=" + }, + "junit-bom-5.9.3.pom": { + "url": "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.9.3/junit-bom-5.9.3.pom", + "hash": "sha256-TQMpzZ5y8kIOXKFXJMv+b/puX9KIg2FRYnEZD9w0Ltc=" } }, "org.junit:junit-bom:5.8.2": { @@ -1933,16 +2099,6 @@ "hash": "sha256-g2Bpyp6O48VuSDdiItopEmPxN70/0W2E/dR+/MPyhuI=" } }, - "org.junit:junit-bom:5.7.2": { - "junit-bom-5.7.2.module": { - "url": "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.module", - "hash": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=" - }, - "junit-bom-5.7.2.pom": { - "url": "https://plugins.gradle.org/m2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.pom", - "hash": "sha256-zRSqqGmZH4ICHFhdVw0x/zQry6WLtEIztwGTdxuWSHs=" - } - }, "org.junit.jupiter:junit-jupiter-api:5.8.2": { "junit-jupiter-api-5.8.2.jar": { "url": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar", @@ -2013,6 +2169,18 @@ "hash": "sha256-QB/ZdNa5RmRSS+y3z4B8TUfXxXSy+vGxMeukiUn+mJg=" } }, + "org.mockito:mockito-bom:5.7.0": { + "mockito-bom-5.7.0.pom": { + "url": "https://repo.maven.apache.org/maven2/org/mockito/mockito-bom/5.7.0/mockito-bom-5.7.0.pom", + "hash": "sha256-dlcAW89JAw1nzF1S3rxm3xj0jVTbs+1GZ/1yWwZ5+6A=" + } + }, + "org.mockito:mockito-bom:4.11.0": { + "mockito-bom-4.11.0.pom": { + "url": "https://repo.maven.apache.org/maven2/org/mockito/mockito-bom/4.11.0/mockito-bom-4.11.0.pom", + "hash": "sha256-2FMadGyYj39o7V8YjN6pRQBq6pk+xd+eUk4NJ9YUkdo=" + } + }, "org.opentest4j:opentest4j:1.3.0": { "opentest4j-1.3.0.jar": { "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar", @@ -2039,38 +2207,38 @@ }, "org.ow2:ow2:1.5.1": { "ow2-1.5.1.pom": { - "url": "https://plugins.gradle.org/m2/org/ow2/ow2/1.5.1/ow2-1.5.1.pom", + "url": "https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5.1/ow2-1.5.1.pom", "hash": "sha256-Mh3bt+5v5PU96mtM1tt0FU1r+kI5HB92OzYbn0hazwU=" } }, - "org.ow2.asm:asm:9.4": { - "asm-9.4.jar": { - "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.jar", - "hash": "sha256-OdDis9xFr2Wgmwl5RXUKlKEm4FLhJPk0aEQ6HQ4V84E=" + "org.ow2.asm:asm:9.6": { + "asm-9.6.jar": { + "url": "https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.6/asm-9.6.jar", + "hash": "sha256-PG+sJCTbPUqFO2afTj0dnDxVIjXhmjGWc/iHCDwjA6E=" }, - "asm-9.4.pom": { - "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm/9.4/asm-9.4.pom", - "hash": "sha256-SDdR5I+y0fQ8Ya06sA/6Rm7cAzPY/C/bWibpXTKYI5Q=" + "asm-9.6.pom": { + "url": "https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.6/asm-9.6.pom", + "hash": "sha256-ku7iS8PIQ+SIHUbB3WUFRx7jFC+s+0ZrQoz+paVsa2A=" } }, - "org.ow2.asm:asm-commons:9.4": { - "asm-commons-9.4.jar": { - "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.jar", - "hash": "sha256-DBKKnsPzPJiVknL20WzxQke1CPWJUVdLzb0rVtYyY2Q=" + "org.ow2.asm:asm-commons:9.6": { + "asm-commons-9.6.jar": { + "url": "https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.6/asm-commons-9.6.jar", + "hash": "sha256-eu/Q1cCQFwHGn3UT/tp2X7a+M68s56oXxXgfyHZXxRE=" }, - "asm-commons-9.4.pom": { - "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/9.4/asm-commons-9.4.pom", - "hash": "sha256-tCyiq8+IEXdqXdwCkPIQbX8xP4LHiw3czVzOTGOjUXk=" + "asm-commons-9.6.pom": { + "url": "https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.6/asm-commons-9.6.pom", + "hash": "sha256-qYrkiVM0uvj/hr1mUWIQ29mgPxpuFeR92oKvz2tT13w=" } }, - "org.ow2.asm:asm-tree:9.4": { - "asm-tree-9.4.jar": { - "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.jar", - "hash": "sha256-xC1HnPJFZqIesgr37q7vToa9tKiGMGz3L0g7ZedbKs8=" + "org.ow2.asm:asm-tree:9.6": { + "asm-tree-9.6.jar": { + "url": "https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.6/asm-tree-9.6.jar", + "hash": "sha256-xD7PF7U5x3fhXae1uGVTs3fi05poPeYoVWfVKDiI5+8=" }, - "asm-tree-9.4.pom": { - "url": "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/9.4/asm-tree-9.4.pom", - "hash": "sha256-x+nvk73YqzYwMs5TgvzGTQAtbFicF1IzI2zSmOUaPBY=" + "asm-tree-9.6.pom": { + "url": "https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.6/asm-tree-9.6.pom", + "hash": "sha256-G8tIHX/Ba5VbtgygfIz6JCS87ni9xAW7oxx9b13C0RM=" } }, "org.slf4j:slf4j-api:1.7.36": { @@ -2107,28 +2275,28 @@ }, "org.sonatype.oss:oss-parent:7": { "oss-parent-7.pom": { - "url": "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", + "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", "hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ=" } }, - "org.springframework:spring-framework-bom:5.3.24": { - "spring-framework-bom-5.3.24.module": { - "url": "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.module", - "hash": "sha256-GZbh9hfLA/p26hGFD+Kh4gsOMKEEa6bV2zvbv0QRP84=" + "org.springframework:spring-framework-bom:5.3.32": { + "spring-framework-bom-5.3.32.module": { + "url": "https://repo.maven.apache.org/maven2/org/springframework/spring-framework-bom/5.3.32/spring-framework-bom-5.3.32.module", + "hash": "sha256-R6cJH2l8pjEYXtQY8Morhu7wyCqhbRdx3exLLDu3s70=" }, - "spring-framework-bom-5.3.24.pom": { - "url": "https://plugins.gradle.org/m2/org/springframework/spring-framework-bom/5.3.24/spring-framework-bom-5.3.24.pom", - "hash": "sha256-U1ITVmu77+Jjag1OjdGnOt5hLiQwyP/TENzCo7O5ukE=" + "spring-framework-bom-5.3.32.pom": { + "url": "https://repo.maven.apache.org/maven2/org/springframework/spring-framework-bom/5.3.32/spring-framework-bom-5.3.32.pom", + "hash": "sha256-glr3ES49kupDa7DfeMGVFIhfXAFtD8YMiyTUdjoBWhA=" } }, - "org.vafer:jdependency:2.8.0": { - "jdependency-2.8.0.jar": { - "url": "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.jar", - "hash": "sha256-v9LMfhv8eKqDtEwKVL8s3jikOC7CRyivaD2Y3GvngZI=" + "org.vafer:jdependency:2.10": { + "jdependency-2.10.jar": { + "url": "https://repo.maven.apache.org/maven2/org/vafer/jdependency/2.10/jdependency-2.10.jar", + "hash": "sha256-Hc2DVauevO1odxW/ElLrKu5dDnRJeiAU/TOHz86N+F8=" }, - "jdependency-2.8.0.pom": { - "url": "https://plugins.gradle.org/m2/org/vafer/jdependency/2.8.0/jdependency-2.8.0.pom", - "hash": "sha256-EBhn8/npJlei74mjELYE1D0JDJuQqj4LBS3NFqO78y0=" + "jdependency-2.10.pom": { + "url": "https://repo.maven.apache.org/maven2/org/vafer/jdependency/2.10/jdependency-2.10.pom", + "hash": "sha256-q1PyWatfZIPT27AjVGngeNSiLP2JB3GrBPh9s6W0YGc=" } } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 3d9fb41..d951a47 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,4 @@ +kotlin.stdlib.default.dependency=false org.gradle.jvmargs='-Dfile.encoding=UTF-8' org.gradle.caching=true org.gradle.configuration-cache=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ae27794..8a92b32 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,27 +1,34 @@ [versions] gradle = "8.7" junit = "5.8.2" -kotlin = "1.9.24" +# Intentionally using the version embedded in Gradle to reduce dependency count +# See https://docs.gradle.org/current/userguide/compatibility.html#kotlin +kotlin = { strictly = "1.9.22" } ktor = "2.3.11" kotest = "5.9.0" +shadow = "8.1.7" [libraries] clikt = "com.github.ajalt.clikt:clikt:4.4.0" +gradle-api-69 = "dev.gradleplugins:gradle-api:6.9" +gradle-api-80 = "dev.gradleplugins:gradle-api:8.0" +gradle-api-81 = "dev.gradleplugins:gradle-api:8.1" +gradle-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +gradle-shadow = { module = "io.github.goooler.shadow:shadow-gradle-plugin", version.ref = "shadow" } gradle-toolingApi = { module = "org.gradle:gradle-tooling-api", version.ref = "gradle" } kotest-assertions = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" } kotest-runner = { module = "io.kotest:kotest-runner-junit5", version.ref = "kotest" } +kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } kotlinx-coroutines-core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1" ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor" } ktor-server-netty = { module = "io.ktor:ktor-server-netty", version.ref = "ktor" } okio = "com.squareup.okio:okio:3.9.0" serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3" slf4j-simple = "org.slf4j:slf4j-simple:1.7.36" -xmlutil = "io.github.pdvrieze.xmlutil:serialization-jvm:0.90.0-RC1" [plugins] -pluginPublish = { id = "com.gradle.plugin-publish", version = "1.2.1" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } -shadow = { id = "com.github.johnrengelman.shadow", version = "8.1.1" } +shadow = { id = "io.github.goooler.shadow", version.ref = "shadow" } [bundles] diff --git a/model/build.gradle.kts b/model/build.gradle.kts index 7317d66..67929f7 100644 --- a/model/build.gradle.kts +++ b/model/build.gradle.kts @@ -1,16 +1,34 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { id("org.jetbrains.kotlin.jvm") } +dependencies { + compileOnly(libs.kotlin.stdlib) +} + java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } -kotlin { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_1_8) - } +kotlin.compilerOptions { + @Suppress("DEPRECATION") // we can't use api version greater than 1.4 as minimal supported Gradle version uses kotlin-stdlib 1.4 + apiVersion.set(KotlinVersion.KOTLIN_1_4) + @Suppress("DEPRECATION") // we can't use language version greater than 1.5 as minimal supported Gradle embeds Kotlin 1.4 + languageVersion.set(KotlinVersion.KOTLIN_1_5) + jvmTarget.set(JvmTarget.JVM_1_8) + freeCompilerArgs.addAll( + listOf( + "-Xskip-prerelease-check", + "-Xsuppress-version-warnings", + // We have to override the default value for `-Xsam-conversions` to `class` + // otherwise the compiler would compile lambdas using invokedynamic, + // such lambdas are not serializable so are not compatible with Gradle configuration cache. + // It doesn't lead to a significant difference in binaries sizes, and previously (before LV 1.5) the `class` value was set by default. + "-Xsam-conversions=class", + ), + ) } diff --git a/plugin/base/build.gradle.kts b/plugin/base/build.gradle.kts new file mode 100644 index 0000000..fb92486 --- /dev/null +++ b/plugin/base/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + `plugin-conventions` +} + +dependencies { + implementation(project(":plugin:common")) + compileOnly(libs.gradle.api.get69()) +} + +tasks.shadowJar { + archiveFileName = "plugin-base.jar" +} diff --git a/plugin/base/src/main/kotlin/DependencyExtractor.base.kt b/plugin/base/src/main/kotlin/DependencyExtractor.base.kt new file mode 100644 index 0000000..8bfdc08 --- /dev/null +++ b/plugin/base/src/main/kotlin/DependencyExtractor.base.kt @@ -0,0 +1,18 @@ +package org.nixos.gradle2nix + +import org.gradle.api.invocation.Gradle +import org.gradle.internal.operations.BuildOperationListenerManager + +object DependencyExtractorApplierBase : DependencyExtractorApplier { + override fun apply( + gradle: Gradle, + extractor: DependencyExtractor, + ) { + val buildOperationListenerManager = gradle.service() + + buildOperationListenerManager.addListener(extractor) + gradle.buildFinished { + buildOperationListenerManager.removeListener(extractor) + } + } +} diff --git a/plugin/base/src/main/kotlin/Gradle2NixPlugin.gradle69.kt b/plugin/base/src/main/kotlin/Gradle2NixPlugin.gradle69.kt new file mode 100644 index 0000000..628ff01 --- /dev/null +++ b/plugin/base/src/main/kotlin/Gradle2NixPlugin.gradle69.kt @@ -0,0 +1,7 @@ +package org.nixos.gradle2nix + +abstract class Gradle2NixPlugin : AbstractGradle2NixPlugin( + GradleCacheAccessFactoryBase, + DependencyExtractorApplierBase, + ResolveAllArtifactsApplierBase, +) diff --git a/plugin/base/src/main/kotlin/GradleCacheAccess.gradle69.kt b/plugin/base/src/main/kotlin/GradleCacheAccess.gradle69.kt new file mode 100644 index 0000000..3d48c52 --- /dev/null +++ b/plugin/base/src/main/kotlin/GradleCacheAccess.gradle69.kt @@ -0,0 +1,18 @@ +package org.nixos.gradle2nix + +import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider +import org.gradle.api.invocation.Gradle + +object GradleCacheAccessFactoryBase : GradleCacheAccessFactory { + override fun create(gradle: Gradle): GradleCacheAccess { + return GradleCacheAccessBase(gradle) + } +} + +class GradleCacheAccessBase(gradle: Gradle) : GradleCacheAccess { + private val artifactCachesProvider = gradle.service() + + override fun useCache(block: () -> Unit) { + artifactCachesProvider.writableCacheLockingManager.useCache(block) + } +} diff --git a/plugin/base/src/main/kotlin/ResolveAllArtifacts.gradle69.kt b/plugin/base/src/main/kotlin/ResolveAllArtifacts.gradle69.kt new file mode 100644 index 0000000..8954848 --- /dev/null +++ b/plugin/base/src/main/kotlin/ResolveAllArtifacts.gradle69.kt @@ -0,0 +1,20 @@ +package org.nixos.gradle2nix + +import org.gradle.api.Project +import org.gradle.api.tasks.TaskAction +import org.gradle.api.tasks.TaskProvider +import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK + +object ResolveAllArtifactsApplierBase : AbstractResolveAllArtifactsApplier() { + override fun Project.registerProjectTask(): TaskProvider<*> = + tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTaskBase::class.java) +} + +abstract class ResolveProjectDependenciesTaskBase : ResolveProjectDependenciesTask() { + @TaskAction + fun action() { + for (configuration in getReportableConfigurations()) { + configuration.artifactFiles().count() + } + } +} diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts deleted file mode 100644 index a00f9a7..0000000 --- a/plugin/build.gradle.kts +++ /dev/null @@ -1,61 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - -plugins { - id("org.jetbrains.kotlin.jvm") - id("com.gradle.plugin-publish") - id("com.github.johnrengelman.shadow") -} - -dependencies { - shadow(kotlin("stdlib-jdk8")) - shadow(kotlin("reflect")) - implementation(project(":model")) - implementation(libs.serialization.json) -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - -kotlin { - compilerOptions { - apiVersion.set(KotlinVersion.KOTLIN_1_6) - languageVersion.set(KotlinVersion.KOTLIN_1_6) - jvmTarget.set(JvmTarget.JVM_1_8) - optIn.add("kotlin.RequiresOptIn") - } -} - -gradlePlugin { - plugins { - register("gradle2nix") { - id = "org.nixos.gradle2nix" - displayName = "gradle2nix" - description = "Expose Gradle tooling model for the gradle2nix tool" - implementationClass = "org.nixos.gradle2nix.Gradle2NixPlugin" - } - } -} - -tasks { - jar { - manifest { - attributes["Implementation-Version"] = archiveVersion.get() - attributes["Implementation-Title"] = "Gradle2Nix Plugin" - attributes["Implementation-Vendor"] = "Tad Fisher" - } - } - - shadowJar { - archiveClassifier.set("") - relocate("kotlin", "${project.group}.shadow.kotlin") - relocate("org.intellij", "${project.group}.shadow.intellij") - relocate("org.jetbrains", "${project.group}.shadow.jetbrains") - } - - validatePlugins { - enableStricterValidation.set(true) - } -} diff --git a/plugin/common/build.gradle.kts b/plugin/common/build.gradle.kts new file mode 100644 index 0000000..dac985d --- /dev/null +++ b/plugin/common/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + `gradle-kotlin-conventions` +} + +dependencies { + compileOnly(libs.gradle.api.get69()) + api(project(":model")) + implementation(libs.serialization.json) +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/DependencyExtractor.kt b/plugin/common/src/main/kotlin/DependencyExtractor.kt similarity index 83% rename from plugin/src/main/kotlin/org/nixos/gradle2nix/DependencyExtractor.kt rename to plugin/common/src/main/kotlin/DependencyExtractor.kt index 755ca1c..3a86df6 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/DependencyExtractor.kt +++ b/plugin/common/src/main/kotlin/DependencyExtractor.kt @@ -7,10 +7,8 @@ import kotlinx.serialization.json.decodeFromStream import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive -import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider -import org.gradle.api.services.BuildService -import org.gradle.api.services.BuildServiceParameters +import org.gradle.api.invocation.Gradle import org.gradle.internal.hash.ChecksumService import org.gradle.internal.operations.BuildOperationDescriptor import org.gradle.internal.operations.BuildOperationListener @@ -29,30 +27,11 @@ import org.nixos.gradle2nix.model.impl.DefaultResolvedDependency import java.io.File import java.util.concurrent.ConcurrentHashMap -internal abstract class DependencyExtractorService : - BuildService, BuildOperationListener, AutoCloseable { - var extractor: DependencyExtractor? = null - - override fun started( - buildOperation: BuildOperationDescriptor, - startEvent: OperationStartEvent, - ) {} - - override fun progress( - operationIdentifier: OperationIdentifier, - progressEvent: OperationProgressEvent, - ) {} - - override fun finished( - buildOperation: BuildOperationDescriptor, - finishEvent: OperationFinishEvent, - ) { - extractor?.finished(buildOperation, finishEvent) - } - - override fun close() { - extractor = null - } +interface DependencyExtractorApplier { + fun apply( + gradle: Gradle, + extractor: DependencyExtractor, + ) } class DependencyExtractor : BuildOperationListener { @@ -80,14 +59,14 @@ class DependencyExtractor : BuildOperationListener { } fun buildDependencySet( - artifactCachesProvider: ArtifactCachesProvider, + cacheAccess: GradleCacheAccess, checksumService: ChecksumService, fileStoreAndIndexProvider: FileStoreAndIndexProvider, ): DependencySet { val files = mutableMapOf>() val mappings = mutableMapOf>() - artifactCachesProvider.writableCacheAccessCoordinator.useCache { + cacheAccess.useCache { for ((url, _) in urls) { fileStoreAndIndexProvider.externalResourceIndex.lookup(url)?.let { cached -> cached.cachedFile?.let { file -> @@ -131,6 +110,8 @@ class DependencyExtractor : BuildOperationListener { } } +private fun buildList(block: MutableList.() -> Unit): List = mutableListOf().apply(block).toList() + private fun cachedComponentId(file: File): DependencyCoordinates? { val parts = file.invariantSeparatorsPath.split('/') if (parts.size < 6) return null @@ -148,7 +129,7 @@ private fun parseFileMappings(file: File): Map? = ?.mapNotNull { val name = it["name"]?.jsonPrimitive?.content ?: return@mapNotNull null val url = it["url"]?.jsonPrimitive?.content ?: return@mapNotNull null - name to url + if (name != url) name to url else null } ?.toMap() ?.takeUnless { it.isEmpty() } diff --git a/plugin/common/src/main/kotlin/DependencySetModelBuilder.kt b/plugin/common/src/main/kotlin/DependencySetModelBuilder.kt new file mode 100644 index 0000000..e5cd465 --- /dev/null +++ b/plugin/common/src/main/kotlin/DependencySetModelBuilder.kt @@ -0,0 +1,27 @@ +package org.nixos.gradle2nix + +import org.gradle.api.Project +import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider +import org.gradle.internal.hash.ChecksumService +import org.gradle.tooling.provider.model.ToolingModelBuilder +import org.nixos.gradle2nix.model.DependencySet + +class DependencySetModelBuilder( + private val dependencyExtractor: DependencyExtractor, + private val cacheAccess: GradleCacheAccess, + private val checksumService: ChecksumService, + private val fileStoreAndIndexProvider: FileStoreAndIndexProvider, +) : ToolingModelBuilder { + override fun canBuild(modelName: String): Boolean = modelName == DependencySet::class.qualifiedName + + override fun buildAll( + modelName: String, + project: Project, + ): DependencySet { + return dependencyExtractor.buildDependencySet( + cacheAccess, + checksumService, + fileStoreAndIndexProvider, + ) + } +} diff --git a/plugin/common/src/main/kotlin/Gradle2NixPlugin.kt b/plugin/common/src/main/kotlin/Gradle2NixPlugin.kt new file mode 100644 index 0000000..4b56cb2 --- /dev/null +++ b/plugin/common/src/main/kotlin/Gradle2NixPlugin.kt @@ -0,0 +1,32 @@ +package org.nixos.gradle2nix + +import org.gradle.api.Plugin +import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider +import org.gradle.api.invocation.Gradle +import org.gradle.internal.hash.ChecksumService +import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry + +abstract class AbstractGradle2NixPlugin( + private val cacheAccessFactory: GradleCacheAccessFactory, + private val dependencyExtractorApplier: DependencyExtractorApplier, + private val resolveAllArtifactsApplier: ResolveAllArtifactsApplier, +) : Plugin { + override fun apply(gradle: Gradle) { + val extractor = DependencyExtractor() + + gradle.service().register( + DependencySetModelBuilder( + extractor, + cacheAccessFactory.create(gradle), + gradle.service(), + gradle.service(), + ), + ) + + dependencyExtractorApplier.apply(gradle, extractor) + + gradle.projectsEvaluated { + resolveAllArtifactsApplier.apply(gradle) + } + } +} diff --git a/plugin/common/src/main/kotlin/GradleCacheAccess.kt b/plugin/common/src/main/kotlin/GradleCacheAccess.kt new file mode 100644 index 0000000..e1c9ebe --- /dev/null +++ b/plugin/common/src/main/kotlin/GradleCacheAccess.kt @@ -0,0 +1,11 @@ +package org.nixos.gradle2nix + +import org.gradle.api.invocation.Gradle + +fun interface GradleCacheAccessFactory { + fun create(gradle: Gradle): GradleCacheAccess +} + +interface GradleCacheAccess { + fun useCache(block: () -> Unit) +} diff --git a/plugin/common/src/main/kotlin/GradleExtensions.kt b/plugin/common/src/main/kotlin/GradleExtensions.kt new file mode 100644 index 0000000..e09d05e --- /dev/null +++ b/plugin/common/src/main/kotlin/GradleExtensions.kt @@ -0,0 +1,6 @@ +package org.nixos.gradle2nix + +import org.gradle.api.internal.GradleInternal +import org.gradle.api.invocation.Gradle + +inline fun Gradle.service(): T = (this as GradleInternal).services.get(T::class.java) diff --git a/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt b/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt new file mode 100644 index 0000000..205496c --- /dev/null +++ b/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt @@ -0,0 +1,50 @@ +package org.nixos.gradle2nix + +import org.gradle.api.DefaultTask +import org.gradle.api.Project +import org.gradle.api.artifacts.Configuration +import org.gradle.api.artifacts.component.ModuleComponentIdentifier +import org.gradle.api.file.FileCollection +import org.gradle.api.invocation.Gradle +import org.gradle.api.tasks.Internal +import org.gradle.api.tasks.TaskProvider +import org.gradle.internal.deprecation.DeprecatableConfiguration +import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK + +fun interface ResolveAllArtifactsApplier { + fun apply(gradle: Gradle) +} + +abstract class AbstractResolveAllArtifactsApplier : ResolveAllArtifactsApplier { + abstract fun Project.registerProjectTask(): TaskProvider<*> + + final override fun apply(gradle: Gradle) { + val resolveAll = gradle.rootProject.tasks.register(RESOLVE_ALL_TASK) + + // Depend on "dependencies" task in all projects + gradle.allprojects { project -> + val resolveProject = project.registerProjectTask() + resolveAll.configure { it.dependsOn(resolveProject) } + } + + // Depend on all 'resolveBuildDependencies' task in each included build + gradle.includedBuilds.forEach { includedBuild -> + resolveAll.configure { + it.dependsOn(includedBuild.task(":$RESOLVE_ALL_TASK")) + } + } + } +} + +abstract class ResolveProjectDependenciesTask : DefaultTask() { + @Internal + protected fun getReportableConfigurations(): List { + return project.configurations.filter { (it as? DeprecatableConfiguration)?.canSafelyBeResolved() ?: true } + } + + protected fun Configuration.artifactFiles(): FileCollection { + return incoming.artifactView { viewConfiguration -> + viewConfiguration.componentFilter { it is ModuleComponentIdentifier } + }.files + } +} diff --git a/plugin/gradle8/build.gradle.kts b/plugin/gradle8/build.gradle.kts new file mode 100644 index 0000000..9051fe7 --- /dev/null +++ b/plugin/gradle8/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + `gradle-kotlin-conventions` +} + +dependencies { + compileOnly(libs.gradle.api.get80()) + api(project(":plugin:common")) +} diff --git a/plugin/gradle8/src/main/kotlin/DependencyExtractor.gradle8.kt b/plugin/gradle8/src/main/kotlin/DependencyExtractor.gradle8.kt new file mode 100644 index 0000000..6d360e0 --- /dev/null +++ b/plugin/gradle8/src/main/kotlin/DependencyExtractor.gradle8.kt @@ -0,0 +1,57 @@ +package org.nixos.gradle2nix + +import org.gradle.api.invocation.Gradle +import org.gradle.api.services.BuildService +import org.gradle.api.services.BuildServiceParameters +import org.gradle.internal.build.event.BuildEventListenerRegistryInternal +import org.gradle.internal.operations.BuildOperationDescriptor +import org.gradle.internal.operations.BuildOperationListener +import org.gradle.internal.operations.OperationFinishEvent +import org.gradle.internal.operations.OperationIdentifier +import org.gradle.internal.operations.OperationProgressEvent +import org.gradle.internal.operations.OperationStartEvent + +object DependencyExtractorApplierG8 : DependencyExtractorApplier { + @Suppress("UnstableApiUsage") + override fun apply( + gradle: Gradle, + extractor: DependencyExtractor, + ) { + val serviceProvider = + gradle.sharedServices.registerIfAbsent( + "nixDependencyExtractor", + DependencyExtractorService::class.java, + ) {}.map { service -> + service.apply { this.extractor = extractor } + } + + gradle.service().onOperationCompletion(serviceProvider) + } +} + +@Suppress("UnstableApiUsage") +internal abstract class DependencyExtractorService : + BuildService, BuildOperationListener, AutoCloseable { + var extractor: DependencyExtractor? = null + + override fun started( + buildOperation: BuildOperationDescriptor, + startEvent: OperationStartEvent, + ) {} + + override fun progress( + operationIdentifier: OperationIdentifier, + progressEvent: OperationProgressEvent, + ) {} + + override fun finished( + buildOperation: BuildOperationDescriptor, + finishEvent: OperationFinishEvent, + ) { + extractor?.finished(buildOperation, finishEvent) + } + + override fun close() { + extractor = null + } +} diff --git a/plugin/gradle8/src/main/kotlin/ResolveAllArtifacts.gradle8.kt b/plugin/gradle8/src/main/kotlin/ResolveAllArtifacts.gradle8.kt new file mode 100644 index 0000000..404170b --- /dev/null +++ b/plugin/gradle8/src/main/kotlin/ResolveAllArtifacts.gradle8.kt @@ -0,0 +1,38 @@ +package org.nixos.gradle2nix + +import org.gradle.api.Project +import org.gradle.api.file.FileCollection +import org.gradle.api.model.ObjectFactory +import org.gradle.api.tasks.TaskAction +import org.gradle.api.tasks.TaskProvider +import org.gradle.internal.serialization.Cached +import org.gradle.work.DisableCachingByDefault +import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK +import javax.inject.Inject + +object ResolveAllArtifactsApplierG8 : AbstractResolveAllArtifactsApplier() { + override fun Project.registerProjectTask(): TaskProvider<*> = + tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTaskG8::class.java) +} + +@DisableCachingByDefault(because = "Not worth caching") +abstract class ResolveProjectDependenciesTaskG8 + @Inject + constructor( + private val objects: ObjectFactory, + ) : ResolveProjectDependenciesTask() { + private val artifactFiles = Cached.of { artifactFiles() } + + private fun artifactFiles(): FileCollection { + return objects.fileCollection().from( + getReportableConfigurations().map { configuration -> + configuration.artifactFiles() + }, + ) + } + + @TaskAction + fun action() { + artifactFiles.get().count() + } + } diff --git a/plugin/gradle80/build.gradle.kts b/plugin/gradle80/build.gradle.kts new file mode 100644 index 0000000..5923b39 --- /dev/null +++ b/plugin/gradle80/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + `plugin-conventions` +} + +dependencies { + implementation(project(":plugin:gradle8")) + compileOnly(libs.gradle.api.get80()) +} + +tasks.shadowJar { + archiveFileName = "plugin-gradle80.jar" +} diff --git a/plugin/gradle80/src/main/kotlin/Gradle2NixPlugin.gradle80.kt b/plugin/gradle80/src/main/kotlin/Gradle2NixPlugin.gradle80.kt new file mode 100644 index 0000000..e39189f --- /dev/null +++ b/plugin/gradle80/src/main/kotlin/Gradle2NixPlugin.gradle80.kt @@ -0,0 +1,7 @@ +package org.nixos.gradle2nix + +abstract class Gradle2NixPlugin : AbstractGradle2NixPlugin( + GradleCacheAccessFactoryG80, + DependencyExtractorApplierG8, + ResolveAllArtifactsApplierG8, +) diff --git a/plugin/gradle80/src/main/kotlin/GradleCacheAccess.gradle80.kt b/plugin/gradle80/src/main/kotlin/GradleCacheAccess.gradle80.kt new file mode 100644 index 0000000..67cb510 --- /dev/null +++ b/plugin/gradle80/src/main/kotlin/GradleCacheAccess.gradle80.kt @@ -0,0 +1,18 @@ +package org.nixos.gradle2nix + +import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider +import org.gradle.api.invocation.Gradle + +object GradleCacheAccessFactoryG80 : GradleCacheAccessFactory { + override fun create(gradle: Gradle): GradleCacheAccess { + return GradleCacheAccessG80(gradle) + } +} + +class GradleCacheAccessG80(gradle: Gradle) : GradleCacheAccess { + private val artifactCachesProvider = gradle.service() + + override fun useCache(block: () -> Unit) { + artifactCachesProvider.writableCacheLockingManager.useCache(block) + } +} diff --git a/plugin/gradle81/build.gradle.kts b/plugin/gradle81/build.gradle.kts new file mode 100644 index 0000000..5b87a40 --- /dev/null +++ b/plugin/gradle81/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + `plugin-conventions` +} + +dependencies { + implementation(project(":plugin:gradle8")) + compileOnly(libs.gradle.api.get81()) +} + +tasks.shadowJar { + archiveFileName = "plugin-gradle81.jar" +} diff --git a/plugin/gradle81/src/main/kotlin/Gradle2NixPlugin.gradle81.kt b/plugin/gradle81/src/main/kotlin/Gradle2NixPlugin.gradle81.kt new file mode 100644 index 0000000..c4c79dd --- /dev/null +++ b/plugin/gradle81/src/main/kotlin/Gradle2NixPlugin.gradle81.kt @@ -0,0 +1,7 @@ +package org.nixos.gradle2nix + +abstract class Gradle2NixPlugin : AbstractGradle2NixPlugin( + GradleCacheAccessFactoryG81, + DependencyExtractorApplierG8, + ResolveAllArtifactsApplierG8, +) diff --git a/plugin/gradle81/src/main/kotlin/GradleCacheAccess.gradle81.kt b/plugin/gradle81/src/main/kotlin/GradleCacheAccess.gradle81.kt new file mode 100644 index 0000000..d247f1a --- /dev/null +++ b/plugin/gradle81/src/main/kotlin/GradleCacheAccess.gradle81.kt @@ -0,0 +1,18 @@ +package org.nixos.gradle2nix + +import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider +import org.gradle.api.invocation.Gradle + +object GradleCacheAccessFactoryG81 : GradleCacheAccessFactory { + override fun create(gradle: Gradle): GradleCacheAccess { + return GradleCacheAccessG81(gradle) + } +} + +class GradleCacheAccessG81(gradle: Gradle) : GradleCacheAccess { + private val artifactCachesProvider = gradle.service() + + override fun useCache(block: () -> Unit) { + artifactCachesProvider.writableCacheAccessCoordinator.useCache(block) + } +} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt deleted file mode 100644 index 6e008d4..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt +++ /dev/null @@ -1,93 +0,0 @@ -@file:Suppress("UnstableApiUsage") - -package org.nixos.gradle2nix - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider -import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider -import org.gradle.api.invocation.Gradle -import org.gradle.internal.hash.ChecksumService -import org.gradle.tooling.provider.model.ToolingModelBuilder -import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry -import org.gradle.util.GradleVersion -import org.nixos.gradle2nix.model.DependencySet -import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK -import javax.inject.Inject - -@Suppress("UNUSED") -abstract class Gradle2NixPlugin - @Inject - constructor( - private val toolingModelBuilderRegistry: ToolingModelBuilderRegistry, - ) : Plugin { - override fun apply(gradle: Gradle) { - val dependencyExtractor = DependencyExtractor() - - toolingModelBuilderRegistry.register( - DependencySetModelBuilder( - dependencyExtractor, - gradle.artifactCachesProvider, - gradle.checksumService, - gradle.fileStoreAndIndexProvider, - ), - ) - - if (GradleVersion.current() < GradleVersion.version("8.0")) { - val extractor = DependencyExtractor() - gradle.buildOperationListenerManager.addListener(extractor) - - @Suppress("DEPRECATION") - gradle.buildFinished { - gradle.buildOperationListenerManager.removeListener(extractor) - } - } else { - val serviceProvider = - gradle.sharedServices.registerIfAbsent( - "nixDependencyExtractor", - DependencyExtractorService::class.java, - ) {}.map { service -> - service.apply { extractor = dependencyExtractor } - } - - gradle.buildEventListenerRegistryInternal.onOperationCompletion(serviceProvider) - } - - gradle.projectsEvaluated { - val resolveAll = gradle.rootProject.tasks.register(RESOLVE_ALL_TASK) - - // Depend on "dependencies" task in all projects - gradle.allprojects { project -> - val resolveProject = project.createResolveTask() - resolveAll.configure { it.dependsOn(resolveProject) } - } - - // Depend on all 'resolveBuildDependencies' task in each included build - gradle.includedBuilds.forEach { includedBuild -> - resolveAll.configure { - it.dependsOn(includedBuild.task(":$RESOLVE_ALL_TASK")) - } - } - } - } - } - -internal class DependencySetModelBuilder( - private val dependencyExtractor: DependencyExtractor, - private val artifactCachesProvider: ArtifactCachesProvider, - private val checksumService: ChecksumService, - private val fileStoreAndIndexProvider: FileStoreAndIndexProvider, -) : ToolingModelBuilder { - override fun canBuild(modelName: String): Boolean = modelName == DependencySet::class.qualifiedName - - override fun buildAll( - modelName: String, - project: Project, - ): DependencySet { - return dependencyExtractor.buildDependencySet( - artifactCachesProvider, - checksumService, - fileStoreAndIndexProvider, - ) - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/GradleExtensions.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/GradleExtensions.kt deleted file mode 100644 index 1447426..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/GradleExtensions.kt +++ /dev/null @@ -1,42 +0,0 @@ -package org.nixos.gradle2nix - -import org.gradle.api.artifacts.Configuration -import org.gradle.api.internal.GradleInternal -import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider -import org.gradle.api.internal.artifacts.ivyservice.modulecache.FileStoreAndIndexProvider -import org.gradle.api.invocation.Gradle -import org.gradle.internal.build.event.BuildEventListenerRegistryInternal -import org.gradle.internal.hash.ChecksumService -import org.gradle.internal.operations.BuildOperationListenerManager -import org.gradle.util.GradleVersion -import java.lang.reflect.Method - -internal inline val Gradle.artifactCachesProvider: ArtifactCachesProvider - get() = service() - -internal inline val Gradle.buildEventListenerRegistryInternal: BuildEventListenerRegistryInternal - get() = service() - -internal inline val Gradle.buildOperationListenerManager: BuildOperationListenerManager - get() = service() - -internal inline val Gradle.checksumService: ChecksumService - get() = service() - -internal inline val Gradle.fileStoreAndIndexProvider: FileStoreAndIndexProvider - get() = service() - -internal inline fun Gradle.service(): T = (this as GradleInternal).services.get(T::class.java) - -private val canSafelyBeResolvedMethod: Method? = - try { - val dc = Class.forName("org.gradle.internal.deprecation.DeprecatableConfiguration") - dc.getMethod("canSafelyBeResolved") - } catch (e: ReflectiveOperationException) { - null - } - -internal fun Configuration.canSafelyBeResolved(): Boolean = canSafelyBeResolvedMethod?.invoke(this) as? Boolean ?: isCanBeResolved - -internal val gradleVersionIsAtLeast8: Boolean = - GradleVersion.current() >= GradleVersion.version("8.0") diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/ResolveAllArtifacts.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/ResolveAllArtifacts.kt deleted file mode 100644 index 86314ec..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/ResolveAllArtifacts.kt +++ /dev/null @@ -1,66 +0,0 @@ -package org.nixos.gradle2nix - -import org.gradle.api.DefaultTask -import org.gradle.api.Project -import org.gradle.api.Task -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.component.ModuleComponentIdentifier -import org.gradle.api.file.FileCollection -import org.gradle.api.model.ObjectFactory -import org.gradle.api.tasks.Internal -import org.gradle.api.tasks.TaskAction -import org.gradle.api.tasks.TaskProvider -import org.gradle.internal.serialization.Cached -import org.gradle.work.DisableCachingByDefault -import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK -import javax.inject.Inject - -internal fun Project.createResolveTask(): TaskProvider { - return if (gradleVersionIsAtLeast8) { - tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTask::class.java) - } else { - tasks.register(RESOLVE_PROJECT_TASK, LegacyResolveProjectDependenciesTask::class.java) - } -} - -@DisableCachingByDefault(because = "Not worth caching") -sealed class AbstractResolveProjectDependenciesTask : DefaultTask() { - @Internal - protected fun getReportableConfigurations(): List { - return project.configurations.filter { it.canSafelyBeResolved() } - } -} - -@DisableCachingByDefault(because = "Not worth caching") -abstract class LegacyResolveProjectDependenciesTask : AbstractResolveProjectDependenciesTask() { - @TaskAction - fun action() { - for (configuration in getReportableConfigurations()) { - configuration.incoming.resolutionResult.root - } - } -} - -@DisableCachingByDefault(because = "Not worth caching") -abstract class ResolveProjectDependenciesTask - @Inject - constructor( - private val objects: ObjectFactory, - ) : AbstractResolveProjectDependenciesTask() { - private val artifactFiles = Cached.of { artifactFiles() } - - private fun artifactFiles(): FileCollection { - return objects.fileCollection().from( - getReportableConfigurations().map { configuration -> - configuration.incoming.artifactView { viewConfiguration -> - viewConfiguration.componentFilter { it is ModuleComponentIdentifier } - }.files - }, - ) - } - - @TaskAction - fun action() { - artifactFiles.get().count() - } - } diff --git a/settings.gradle.kts b/settings.gradle.kts index ff2556c..6f1b4c4 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -11,5 +11,9 @@ dependencyResolutionManagement { include( ":app", ":model", - ":plugin", + ":plugin:base", + ":plugin:common", + ":plugin:gradle8", + ":plugin:gradle80", + ":plugin:gradle81", ) From 95c758b11cb393ed5ad478c6bbebf7b7fbf6889b Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Tue, 4 Jun 2024 13:23:09 -0700 Subject: [PATCH 25/34] Don't run tasks in buildSrc project --- .../org/nixos/gradle2nix/GradleRunner.kt | 14 +- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 7 +- gradle.lock | 1116 ----------------- 3 files changed, 9 insertions(+), 1128 deletions(-) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt index ec82f94..59d8e99 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt @@ -7,7 +7,6 @@ import org.gradle.tooling.ProjectConnection import org.gradle.tooling.ResultHandler import org.gradle.tooling.model.gradle.GradleBuild import org.nixos.gradle2nix.model.DependencySet -import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK import java.io.File import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException @@ -50,7 +49,10 @@ suspend fun ProjectConnection.buildModel(): GradleBuild = ) } -suspend fun ProjectConnection.build(config: Config): DependencySet = +suspend fun ProjectConnection.build( + config: Config, + tasks: List, +): DependencySet = suspendCancellableCoroutine { continuation -> val cancellationTokenSource = GradleConnector.newCancellationTokenSource() @@ -58,13 +60,7 @@ suspend fun ProjectConnection.build(config: Config): DependencySet = action { controller -> controller.getModel(DependencySet::class.java) } .withCancellationToken(cancellationTokenSource.token()) - .apply { - if (config.tasks.isNotEmpty()) { - forTasks(*config.tasks.toTypedArray()) - } else { - forTasks(RESOLVE_ALL_TASK) - } - } + .forTasks(*tasks.toTypedArray()) .setJavaHome(config.gradleJdk) .addArguments(config.gradleArgs) .addArguments( diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index dcb3125..4f0f3e0 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -22,6 +22,7 @@ import kotlinx.serialization.json.Json import kotlinx.serialization.json.encodeToStream import org.gradle.tooling.model.gradle.GradleBuild import org.nixos.gradle2nix.model.DependencySet +import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK import java.io.File import java.net.URI @@ -71,7 +72,7 @@ class Gradle2Nix : CliktCommand( "-t", metavar = "TASK", help = "Gradle tasks to run", - ).multiple() + ).multiple(default = listOf(RESOLVE_ALL_TASK)) private val projectDir: File by option( "--project", @@ -198,12 +199,12 @@ class Gradle2Nix : CliktCommand( val dependencySets = mutableListOf() connect(config).use { connection -> - dependencySets.add(runBlocking { connection.build(config) }) + dependencySets.add(runBlocking { connection.build(config, config.tasks) }) } for (buildSrc in buildSrcs) { connect(config, buildSrc).use { connection -> - dependencySets.add(runBlocking { connection.build(config) }) + dependencySets.add(runBlocking { connection.build(config, listOf(RESOLVE_ALL_TASK)) }) } } diff --git a/gradle.lock b/gradle.lock index c09f2ed..442b031 100644 --- a/gradle.lock +++ b/gradle.lock @@ -39,31 +39,7 @@ "hash": "sha256-SDllThaxcU509Rq8s3jYNWgUq49NUnPR3S8c6KOQrdw=" } }, - "com.github.ajalt:colormath:1.2.0": { - "colormath-1.2.0.jar": { - "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.jar", - "hash": "sha256-hqUffbsyq+QQ1UMx7GGsBoSlQ7JO6Xlnu6wKTmcp8DE=" - }, - "colormath-1.2.0.pom": { - "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/1.2.0/colormath-1.2.0.pom", - "hash": "sha256-a3EKjQoQu+PgV5Xvf03ux3j9eQBbDBvA5cF4Ae5r3Z0=" - } - }, - "com.github.ajalt:mordant:1.2.1": { - "mordant-1.2.1.jar": { - "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.jar", - "hash": "sha256-enFOuNJbTZun8lalTHVZzKh9heyQ1pQ98ZE8rUPbldY=" - }, - "mordant-1.2.1.pom": { - "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/1.2.1/mordant-1.2.1.pom", - "hash": "sha256-8DLcV/gHnB9WJvvF8PZfz14SNA3ictgpsLVOkpeacro=" - } - }, "com.github.ajalt.clikt:clikt:4.4.0": { - "clikt-4.4.0.jar": { - "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.jar", - "hash": "sha256-pGJRQhCAqew0Cm92KHhUIOuyx9Ccw7BVOZ+j+676doY=" - }, "clikt-4.4.0.module": { "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/clikt/clikt/4.4.0/clikt-4.4.0.module", "hash": "sha256-Z84+Rk1+r4GaBRQVd6IERrjkWbfk6RqCzoh7WKiOrWg=" @@ -88,10 +64,6 @@ } }, "com.github.ajalt.colormath:colormath:3.5.0": { - "colormath-3.5.0.jar": { - "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.jar", - "hash": "sha256-vSKbrzuv1VbRid5yRx2dF8KaofXTJEVgJwvvjmOiMZo=" - }, "colormath-3.5.0.module": { "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/colormath/colormath/3.5.0/colormath-3.5.0.module", "hash": "sha256-WgMLkC+VqHlsIUX2sppgwpeNxmQR4I6miLT7eK6p7wk=" @@ -116,10 +88,6 @@ } }, "com.github.ajalt.mordant:mordant:2.5.0": { - "mordant-2.5.0.jar": { - "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.jar", - "hash": "sha256-j80uWaxhZQy8d7paxqDaZlMD6xvVURejzZSpi+ir0xM=" - }, "mordant-2.5.0.module": { "url": "https://repo.maven.apache.org/maven2/com/github/ajalt/mordant/mordant/2.5.0/mordant-2.5.0.module", "hash": "sha256-KMoVBsOzOqA5GK9FWSHfiv49oLtN3O5sezdOAG3g4bY=" @@ -143,16 +111,6 @@ "hash": "sha256-095n7fFjX1ytZvkcVnXx+IfJDTuVlPfngQUgfxK04F0=" } }, - "com.typesafe:config:1.4.3": { - "config-1.4.3.jar": { - "url": "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.jar", - "hash": "sha256-itpMGFznJBZxLWPgta/cXwCcDN9AXl8m7+zfFWql37Y=" - }, - "config-1.4.3.pom": { - "url": "https://repo.maven.apache.org/maven2/com/typesafe/config/1.4.3/config-1.4.3.pom", - "hash": "sha256-tn6vqd0iD/h9ANumiACDpSlqXgxsAxA/XUuOHaEDD/M=" - } - }, "commons-io:commons-io:2.15.1": { "commons-io-2.15.1.jar": { "url": "https://repo.maven.apache.org/maven2/commons-io/commons-io/2.15.1/commons-io-2.15.1.jar", @@ -211,16 +169,6 @@ "hash": "sha256-0jI5KonD79yFqymcWpToud01vALzQM6ERv9lmqFZE6A=" } }, - "io.github.classgraph:classgraph:4.8.172": { - "classgraph-4.8.172.jar": { - "url": "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.jar", - "hash": "sha256-wWseIxpziZL3KVC1Jc774FSkCP9kLsy7IcrdVHCgXyI=" - }, - "classgraph-4.8.172.pom": { - "url": "https://repo.maven.apache.org/maven2/io/github/classgraph/classgraph/4.8.172/classgraph-4.8.172.pom", - "hash": "sha256-gD2mlHTiB6oi/xnshXE3MGrU4ahz4V98Xv0sqer9W74=" - } - }, "io.github.goooler.shadow:shadow-gradle-plugin:8.1.7": { "shadow-gradle-plugin-8.1.7.jar": { "url": "https://repo.maven.apache.org/maven2/io/github/goooler/shadow/shadow-gradle-plugin/8.1.7/shadow-gradle-plugin-8.1.7.jar", @@ -235,720 +183,12 @@ "hash": "sha256-VrTvWS4FE+0WY5C/WBK/iqWglEHHYZItGLgs2jKxKPw=" } }, - "io.github.java-diff-utils:java-diff-utils:4.12": { - "java-diff-utils-4.12.jar": { - "url": "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar", - "hash": "sha256-mZCiA5d49rTMlHkBQcKGiGTqzuBiDGxFlFESGpAc1bU=" - }, - "java-diff-utils-4.12.pom": { - "url": "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.pom", - "hash": "sha256-wm4JftyOxoBdExmBfSPU5JbMEBXMVdxSAhEtj2qRZfw=" - } - }, - "io.github.java-diff-utils:java-diff-utils-parent:4.12": { - "java-diff-utils-parent-4.12.pom": { - "url": "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.12/java-diff-utils-parent-4.12.pom", - "hash": "sha256-2BHPnxGMwsrRMMlCetVcF01MCm8aAKwa4cm8vsXESxk=" - } - }, - "io.kotest:kotest-assertions-api:5.9.0": { - "kotest-assertions-api-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.jar", - "hash": "sha256-JmNIEcOE+VRVVMJUBfLZCMEaeupal1mZM/gsAIRsVAg=" - }, - "kotest-assertions-api-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.module", - "hash": "sha256-qFQu4m/P0+8yxm5e3mjeuvjql90heZH0HSAje7UpT4U=" - }, - "kotest-assertions-api-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api/5.9.0/kotest-assertions-api-5.9.0.pom", - "hash": "sha256-GjEMzEBJd0cpFIPrOwUMbIle7KTONzPwHdkkZ6ZV8sw=" - } - }, - "io.kotest:kotest-assertions-api-jvm:5.9.0": { - "kotest-assertions-api-jvm-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.jar", - "hash": "sha256-Sv9MqD6SBssjiDJd+HKXb1GekloGlJSr7CkuwxFMDQk=" - }, - "kotest-assertions-api-jvm-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.module", - "hash": "sha256-XITlW45flkCcy1pCoS3ElCbl1ucWSnMy3wy4wrK21L4=" - }, - "kotest-assertions-api-jvm-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-api-jvm/5.9.0/kotest-assertions-api-jvm-5.9.0.pom", - "hash": "sha256-1g6ynf1tj7NSGYTX+sJaE0AHFHa7ceksV1X70VpaZzY=" - } - }, - "io.kotest:kotest-assertions-core:5.9.0": { - "kotest-assertions-core-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.jar", - "hash": "sha256-+uWJ9I5hs7uiaHvvMbbneu2Ji6dswFU3rdFQ7pSsmkY=" - }, - "kotest-assertions-core-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.module", - "hash": "sha256-p3KZqaKYbphakO0KsWd0pzMPeu/CUnOT3E1HeNPI4sM=" - }, - "kotest-assertions-core-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core/5.9.0/kotest-assertions-core-5.9.0.pom", - "hash": "sha256-qvu+DMIo9BTt2Va2lHINRZLna47v+MiK211RRQRhu7o=" - } - }, - "io.kotest:kotest-assertions-core-jvm:5.9.0": { - "kotest-assertions-core-jvm-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.jar", - "hash": "sha256-TIngmms4JoES/eJqC1LvVLsXhDtBv9IV958s9M3QJ4w=" - }, - "kotest-assertions-core-jvm-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.module", - "hash": "sha256-OinQMJG5EyNIVgv1DKJKzEvBzIq+MGE8y/5alzt/F48=" - }, - "kotest-assertions-core-jvm-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-core-jvm/5.9.0/kotest-assertions-core-jvm-5.9.0.pom", - "hash": "sha256-pmgjeAvzFo5CAqPmg6PWZ1K5yg4aaqx4FL/mng155NU=" - } - }, - "io.kotest:kotest-assertions-shared:5.9.0": { - "kotest-assertions-shared-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.jar", - "hash": "sha256-EoSglpgVz7PTk/TOTF2tW1Dc1wvxN4h78MA0yqIVYeE=" - }, - "kotest-assertions-shared-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.module", - "hash": "sha256-KK3K96Q94fICNFI+4csorIc7ztp2VESW8cU1NF2gCJM=" - }, - "kotest-assertions-shared-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared/5.9.0/kotest-assertions-shared-5.9.0.pom", - "hash": "sha256-IGd1Qmuhf36c1WjpZMWGMMNCt2c67pNPIiFVLNDwBww=" - } - }, - "io.kotest:kotest-assertions-shared-jvm:5.9.0": { - "kotest-assertions-shared-jvm-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.jar", - "hash": "sha256-b9wtfMr8N1c/rhZ/hOMditN/2DHArXclPzDbuyedJlY=" - }, - "kotest-assertions-shared-jvm-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.module", - "hash": "sha256-VGmhRQo07HywKyDjaY3dkHYsEVH6tba/RlWXlrl4OAs=" - }, - "kotest-assertions-shared-jvm-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-assertions-shared-jvm/5.9.0/kotest-assertions-shared-jvm-5.9.0.pom", - "hash": "sha256-VQxkW4k0LR9iU/CXo+CzdyLsOTFxctB+E02E7A8IxKY=" - } - }, - "io.kotest:kotest-common:5.9.0": { - "kotest-common-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.jar", - "hash": "sha256-DGXHvQS/2EX3Lt6hmNrNtLWyBebrIbnsgzSvYMZNpfU=" - }, - "kotest-common-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.module", - "hash": "sha256-lqW8WbrWuITytzfvAR+ytKiZW+NO9eTnDSw99nKoh4M=" - }, - "kotest-common-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common/5.9.0/kotest-common-5.9.0.pom", - "hash": "sha256-LGnqBsbRBz1dH/ruD2wS3Lv6W8qOYXgbi8QNi2t+BzY=" - } - }, - "io.kotest:kotest-common-jvm:5.9.0": { - "kotest-common-jvm-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.jar", - "hash": "sha256-yLAfI5/3kmxV/2oDYRqXpWSdWS6a0GqhBPM9RJR2uIg=" - }, - "kotest-common-jvm-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.module", - "hash": "sha256-uWwklcyvr/yACGF+Sk7NRBmR/tU8QyGhECjxxIspgLE=" - }, - "kotest-common-jvm-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-common-jvm/5.9.0/kotest-common-jvm-5.9.0.pom", - "hash": "sha256-DJw4J3/CngNTIDXkXDgi3C4B4yC9lPysTGsxMUIJAhM=" - } - }, - "io.kotest:kotest-extensions:5.9.0": { - "kotest-extensions-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.module", - "hash": "sha256-mr4zuEi4bBoBg3YOreTLxF1OEvxEySCz+Dnn6A146rs=" - }, - "kotest-extensions-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions/5.9.0/kotest-extensions-5.9.0.pom", - "hash": "sha256-r36/K79pkmBmSLcdzJdHqDG43LML6A/hCfMDgOf1veU=" - } - }, - "io.kotest:kotest-extensions-jvm:5.9.0": { - "kotest-extensions-jvm-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.jar", - "hash": "sha256-Mb5rCyZdL3cS0KdeaOQv6wuOYV+r8BkInn+/5Zc04dA=" - }, - "kotest-extensions-jvm-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.module", - "hash": "sha256-BOtQGGme33ZRDZkDA3UZf1+XLUhkfrBNVr4B2EgdTkU=" - }, - "kotest-extensions-jvm-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-extensions-jvm/5.9.0/kotest-extensions-jvm-5.9.0.pom", - "hash": "sha256-6eDaRU1z0/8r4unJOC2QiGFdpHmLjeu6d71tQ0bOa9I=" - } - }, - "io.kotest:kotest-framework-api:5.9.0": { - "kotest-framework-api-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.module", - "hash": "sha256-aGM5P0GVr+lxcVUTl0jDYdWU7KIlL+zs2qZQFg2moXI=" - }, - "kotest-framework-api-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api/5.9.0/kotest-framework-api-5.9.0.pom", - "hash": "sha256-DR9H1blAce2rfDWIUeqSozNx5xpjl2AZiLf9cZEZCAs=" - } - }, - "io.kotest:kotest-framework-api-jvm:5.9.0": { - "kotest-framework-api-jvm-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.jar", - "hash": "sha256-2SRLxofIOCISZyWzynZ25FZEemBRIQ4lF1z4qyDAtCM=" - }, - "kotest-framework-api-jvm-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.module", - "hash": "sha256-losVlXIzbDC3+cKX/PvrfRyPgg6u1lx8d6TLMznY7WI=" - }, - "kotest-framework-api-jvm-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-api-jvm/5.9.0/kotest-framework-api-jvm-5.9.0.pom", - "hash": "sha256-+M0upKNYQEr5M+QjsDDRT5bGVfO+fqryE9H9cywekwg=" - } - }, - "io.kotest:kotest-framework-concurrency:5.9.0": { - "kotest-framework-concurrency-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.module", - "hash": "sha256-3X24UL0kQmjOFPnvo70y25AKgbmAW5TYJCSnWJIDxB0=" - }, - "kotest-framework-concurrency-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency/5.9.0/kotest-framework-concurrency-5.9.0.pom", - "hash": "sha256-ML0NEgw6Tr0BJp5gw3CrNhStctHDX3/qq+/lDSlVC7I=" - } - }, - "io.kotest:kotest-framework-concurrency-jvm:5.9.0": { - "kotest-framework-concurrency-jvm-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.jar", - "hash": "sha256-B5txinLAdedCmHOz+VGoVROoA2xeOnbd3ocWEPKbd7U=" - }, - "kotest-framework-concurrency-jvm-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.module", - "hash": "sha256-p8YMX+xNYGBE50UAR+JfoGITADC4xYDfDikqYBWzTbQ=" - }, - "kotest-framework-concurrency-jvm-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-concurrency-jvm/5.9.0/kotest-framework-concurrency-jvm-5.9.0.pom", - "hash": "sha256-xoO5KKNSADRo0j5ZQOnEJEjpknBpfEu8pHOavXSLDbc=" - } - }, - "io.kotest:kotest-framework-discovery:5.9.0": { - "kotest-framework-discovery-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.module", - "hash": "sha256-L+Hiv5t/+eBNzZXjEI7jtfFURkTgZAP7lLkHZIOVCUA=" - }, - "kotest-framework-discovery-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery/5.9.0/kotest-framework-discovery-5.9.0.pom", - "hash": "sha256-ts05NMKO1qZRr4RysuNqOuQMRWldI7As5JE7IULEgnE=" - } - }, - "io.kotest:kotest-framework-discovery-jvm:5.9.0": { - "kotest-framework-discovery-jvm-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.jar", - "hash": "sha256-miiiFNkV20R5bwZcHP+7s8I2uJtqazg5UFjYCrg+ggM=" - }, - "kotest-framework-discovery-jvm-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.module", - "hash": "sha256-7Xaj5/OnkkcbTUm+u+5pKPGEU0gLopHp5yBJlgAASCE=" - }, - "kotest-framework-discovery-jvm-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-discovery-jvm/5.9.0/kotest-framework-discovery-jvm-5.9.0.pom", - "hash": "sha256-sGGEOZMEvWc0UeszHyP3aqPtPf1dpMeb8dbiIb2MjFs=" - } - }, - "io.kotest:kotest-framework-engine:5.9.0": { - "kotest-framework-engine-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.module", - "hash": "sha256-gZN/CF6jy3S1hxETTtC7VsDymc/DFz27IUVCrMyVJxc=" - }, - "kotest-framework-engine-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine/5.9.0/kotest-framework-engine-5.9.0.pom", - "hash": "sha256-xBA8Jfhv52zZKiA1irX1jbAUMtcKuBphBChd2MW998U=" - } - }, - "io.kotest:kotest-framework-engine-jvm:5.9.0": { - "kotest-framework-engine-jvm-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.jar", - "hash": "sha256-h6Dxzb4o39OyLp5GgSEzCx1zPdoFwkTvhs/ZHaoWYlU=" - }, - "kotest-framework-engine-jvm-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.module", - "hash": "sha256-ESmBvZzHXpTgQAm6W7dkWm8AeVEwU79W72QiUnSoBDs=" - }, - "kotest-framework-engine-jvm-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-framework-engine-jvm/5.9.0/kotest-framework-engine-jvm-5.9.0.pom", - "hash": "sha256-v8ljQokqqX+yqFM+r+m1elKQlQdCH6sw2K71m5QpGpI=" - } - }, - "io.kotest:kotest-runner-junit5:5.9.0": { - "kotest-runner-junit5-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.jar", - "hash": "sha256-CJ4kQXv59sNO7Fcg7rssvMguooVezvkBM+sX4QedWGg=" - }, - "kotest-runner-junit5-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.module", - "hash": "sha256-AfB70s+KHo+Z+dDmSpQ7X6cxE//szocwqMQ08nZSgvc=" - }, - "kotest-runner-junit5-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5/5.9.0/kotest-runner-junit5-5.9.0.pom", - "hash": "sha256-xeE4b8vdz+kKt18wWVnzltXRxu7l2y/549Ik8QVsmpM=" - } - }, - "io.kotest:kotest-runner-junit5-jvm:5.9.0": { - "kotest-runner-junit5-jvm-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.jar", - "hash": "sha256-dpV0ADmfVaJBZFgUGfKj0H9yfEiwPcOXLiV24YdH6iI=" - }, - "kotest-runner-junit5-jvm-5.9.0.module": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.module", - "hash": "sha256-v6MTM0BhaveK/YqdH3bwAQ02Wx6GE2DWpzMqowrKy4s=" - }, - "kotest-runner-junit5-jvm-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/io/kotest/kotest-runner-junit5-jvm/5.9.0/kotest-runner-junit5-jvm-5.9.0.pom", - "hash": "sha256-wuOpHya7dfndAfMnW8E5OL6Lp3KEIBwbov4DODC2xKo=" - } - }, - "io.ktor:ktor-events:2.3.11": { - "ktor-events-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.jar", - "hash": "sha256-qfTivW7ALrt5prOcEEr++k281IA7ufrV2e1XCTRX8G0=" - }, - "ktor-events-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.module", - "hash": "sha256-YScMYk6JE8UBLw87YF0ThAlwNl+5JOw8fuO0hLxTWXY=" - }, - "ktor-events-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events/2.3.11/ktor-events-2.3.11.pom", - "hash": "sha256-hcFsb/+tI+3auG+gJU68tB7hhOh9M3Va41ITctMZ8ug=" - } - }, - "io.ktor:ktor-events-jvm:2.3.11": { - "ktor-events-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.jar", - "hash": "sha256-92Dmk7tpaq9srFhEXFI2hY0QzXwVCErCDHp1Ba50kac=" - }, - "ktor-events-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.module", - "hash": "sha256-HW+ysABOvT9w8g0YdMXRR9zcSn4pjM1ogdM/msx9tkE=" - }, - "ktor-events-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-events-jvm/2.3.11/ktor-events-jvm-2.3.11.pom", - "hash": "sha256-nssYQanQ3FgvP+/Yl7vKKpqntHd69GbL65epV0IHdAY=" - } - }, - "io.ktor:ktor-http:2.3.11": { - "ktor-http-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.jar", - "hash": "sha256-9PADOhT6whJBqLu+HFzxkzvRA+3I6eJ37j7gwcvTRkI=" - }, - "ktor-http-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.module", - "hash": "sha256-UBgBa5qlACv5oFBoGsFuBRp/uICUhPFWnvdqFpxKKiU=" - }, - "ktor-http-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/2.3.11/ktor-http-2.3.11.pom", - "hash": "sha256-tw7Nks9eqraVRQQDQ19SvqCDJe1VtNKDM1FN0diI0Dc=" - } - }, - "io.ktor:ktor-http-cio:2.3.11": { - "ktor-http-cio-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.module", - "hash": "sha256-/lHSv+0gYTxLvcY4yT1X1ZmldFlXloNtjO7Zybep+n8=" - }, - "ktor-http-cio-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio/2.3.11/ktor-http-cio-2.3.11.pom", - "hash": "sha256-p4wT0HqIQfw3MAGgGVPYKT2YDL972n81+FR3+1Ya+RA=" - } - }, - "io.ktor:ktor-http-cio-jvm:2.3.11": { - "ktor-http-cio-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.jar", - "hash": "sha256-bIKoW5GMwAsSSn2w9HTtOH8FFIpCKWgQWG7lkTRNDn8=" - }, - "ktor-http-cio-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.module", - "hash": "sha256-HzV2/lizf5nFj9TuJFmgRmiEoeWTw9Qb5/2/wQ5STtU=" - }, - "ktor-http-cio-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-cio-jvm/2.3.11/ktor-http-cio-jvm-2.3.11.pom", - "hash": "sha256-vy9Vnf0Mx1NzkCGv7nlbr8U3U8ajWIiGa2J0Fg3stdY=" - } - }, - "io.ktor:ktor-http-jvm:2.3.11": { - "ktor-http-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.jar", - "hash": "sha256-BQMz4biz/zBwvjIW4fPuePqdZQrI0hEEHQW/SCWbTfY=" - }, - "ktor-http-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.module", - "hash": "sha256-BIraZkNbJkbTFrDOjX+aXfau8yuP1KEQ6vaPiqI8zII=" - }, - "ktor-http-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/2.3.11/ktor-http-jvm-2.3.11.pom", - "hash": "sha256-CI9yJI9u5cZPW8Wa4i6MzE5ZqDVZ7U89ZGy9vtUDqIU=" - } - }, - "io.ktor:ktor-io:2.3.11": { - "ktor-io-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.jar", - "hash": "sha256-skZKEoTyY57muhpCVDIsxUsFMmWHpG+AFUy9tXAYC7I=" - }, - "ktor-io-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.module", - "hash": "sha256-RvrHp728UxfkD6bGYZpMUr7X02JaNP2kWRjDyq04r2A=" - }, - "ktor-io-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/2.3.11/ktor-io-2.3.11.pom", - "hash": "sha256-lFDUN7vjB58G5wAePQmaH2l7Fc7UWO8BorXFd1cVrPI=" - } - }, - "io.ktor:ktor-io-jvm:2.3.11": { - "ktor-io-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.jar", - "hash": "sha256-nJt0vx7xFuSybVyUUJoFd7yhQPgwqAzz9S0kVM0BEhs=" - }, - "ktor-io-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.module", - "hash": "sha256-EIlmqdlJzZRN/9MqUTc0pPKJyCRGt4nACmopTWM7ER8=" - }, - "ktor-io-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/2.3.11/ktor-io-jvm-2.3.11.pom", - "hash": "sha256-mbL5+MkKES6IVeY55AE+jXlYxCD8UVGq1iha3NdD0Ak=" - } - }, - "io.ktor:ktor-network:2.3.11": { - "ktor-network-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.module", - "hash": "sha256-SlUAXFfLaTqLMK+eWk302ojX/kU93TRlvWsJEAkmbCw=" - }, - "ktor-network-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-network/2.3.11/ktor-network-2.3.11.pom", - "hash": "sha256-eV7oO+aNHBYV/JibHkjPGNbeNvWK9vBb/7QjtOnsC18=" - } - }, - "io.ktor:ktor-network-jvm:2.3.11": { - "ktor-network-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.jar", - "hash": "sha256-9njugGQUgEV28XM5R2Lg4busruMHOaBI1Oy0g4fe5GY=" - }, - "ktor-network-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.module", - "hash": "sha256-jrPuxh+wtawI9Xvqfr83Q/Bcim9DImLUcuVu7JsuGZU=" - }, - "ktor-network-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-network-jvm/2.3.11/ktor-network-jvm-2.3.11.pom", - "hash": "sha256-MdRLyv4uXbBWgn3XwoxljAHVxY5NC2IsHJ0m63SpqwM=" - } - }, - "io.ktor:ktor-serialization:2.3.11": { - "ktor-serialization-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.jar", - "hash": "sha256-I/oFsvofdMi+5JsvpNCmzRaXdvXLw7e00I5nfmr7n14=" - }, - "ktor-serialization-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.module", - "hash": "sha256-RY1rJzbNfObY9IMGdTEbJiZbM5tYoX0nLc0RFXI8lHI=" - }, - "ktor-serialization-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization/2.3.11/ktor-serialization-2.3.11.pom", - "hash": "sha256-Cr072jnh1FQGF7zPRAO3J56g7KkUSo1q/+F/OPc8PGU=" - } - }, - "io.ktor:ktor-serialization-jvm:2.3.11": { - "ktor-serialization-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.jar", - "hash": "sha256-TC80IiaKlf63dwx10dJ+CdAJ3Wl8m0vyb9kxczLbUD4=" - }, - "ktor-serialization-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.module", - "hash": "sha256-9ys7vY/D7I5DSDSPQt3OUq8+Y/Cens9C5M2WkG2R1Tg=" - }, - "ktor-serialization-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-serialization-jvm/2.3.11/ktor-serialization-jvm-2.3.11.pom", - "hash": "sha256-nVGClI7BadSZPzuAFmETNuh/2PrjgidwH1imzh/Enp8=" - } - }, - "io.ktor:ktor-server-core:2.3.11": { - "ktor-server-core-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.jar", - "hash": "sha256-PztUA1uh8KXfyq3LoJd62JDVDEUa7iLVPvTVa1Om/O4=" - }, - "ktor-server-core-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.module", - "hash": "sha256-9KlYTH9QBmFcpCiXTk3Tz6Rr9fgq9AgjV51bPBTHYhQ=" - }, - "ktor-server-core-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core/2.3.11/ktor-server-core-2.3.11.pom", - "hash": "sha256-111k/+joPoOX6n+cgCufGnnAjtYXzbHpj1hAzqNEVZo=" - } - }, - "io.ktor:ktor-server-core-jvm:2.3.11": { - "ktor-server-core-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.jar", - "hash": "sha256-6mi102OoWntBxzISf3BLDpj+OqwSJSl2PYrnAEf788o=" - }, - "ktor-server-core-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.module", - "hash": "sha256-FMtHfiKcHfwZgmJjHqajyNXVabXFm0zExQ7fM++s0DE=" - }, - "ktor-server-core-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-core-jvm/2.3.11/ktor-server-core-jvm-2.3.11.pom", - "hash": "sha256-maADHI6bP1m7Bkt2pdkoD4tx19nGLtwl2hfC1E+CeeE=" - } - }, - "io.ktor:ktor-server-host-common:2.3.11": { - "ktor-server-host-common-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.module", - "hash": "sha256-cg0+sO8u7FRrD4iq4pL0uILk+Pze6GY7D6KyiEXHt04=" - }, - "ktor-server-host-common-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common/2.3.11/ktor-server-host-common-2.3.11.pom", - "hash": "sha256-B8Z/z3Xv1x18tmbpWfd/dSwCj1iywfoiUHLzYhGYVqw=" - } - }, - "io.ktor:ktor-server-host-common-jvm:2.3.11": { - "ktor-server-host-common-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.jar", - "hash": "sha256-HjvNeLHpjsoQjZJ7u1QdDZtyP7IYcm1h6Fucpq4cjis=" - }, - "ktor-server-host-common-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.module", - "hash": "sha256-xwLIGRtpP1d1ZpHRRkZ4u6mOhtCEXQKDdiGZS+uRlTI=" - }, - "ktor-server-host-common-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-host-common-jvm/2.3.11/ktor-server-host-common-jvm-2.3.11.pom", - "hash": "sha256-Gr877I0aFWryXIDK700+sC3wxIGN1CghIW2+SCeZXfQ=" - } - }, - "io.ktor:ktor-server-netty:2.3.11": { - "ktor-server-netty-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.jar", - "hash": "sha256-Wkb9vED9LXglmIPEzG6vO14pDdB9HEbqiO6j1I9QV3I=" - }, - "ktor-server-netty-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.module", - "hash": "sha256-LUtE8EMgnpzg9IDdZmgoSbkyOfKIIBo1UqglQd1rE30=" - }, - "ktor-server-netty-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty/2.3.11/ktor-server-netty-2.3.11.pom", - "hash": "sha256-qxGxtuLNQMM816OjnKeeSZlw/rFhIoI3ClZfEn0kXSM=" - } - }, - "io.ktor:ktor-server-netty-jvm:2.3.11": { - "ktor-server-netty-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.jar", - "hash": "sha256-+YxIUr325irKzWu54yreP13lsmM+UY7F7B2tmD1XX5E=" - }, - "ktor-server-netty-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.module", - "hash": "sha256-NYOIDN8BaY3r8qB3UPuenAvD369DZCLiRZw+f31Arig=" - }, - "ktor-server-netty-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-server-netty-jvm/2.3.11/ktor-server-netty-jvm-2.3.11.pom", - "hash": "sha256-J+fP+sEa+ugSVjyPhVozJlMEIYLAGp6UfEg/Rzme35A=" - } - }, - "io.ktor:ktor-utils:2.3.11": { - "ktor-utils-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.jar", - "hash": "sha256-SJeUj4AL85YHGPuaWv9QErcht7iWZjhZWCbGstp8TiU=" - }, - "ktor-utils-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.module", - "hash": "sha256-wFGiUpPmUdQIGWPVFfMxsnPBevWpKYBs88mYdisk9is=" - }, - "ktor-utils-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/2.3.11/ktor-utils-2.3.11.pom", - "hash": "sha256-pP/0keaxdRMn261KJ+UR/U4xNpR/NyD32ovBtl2Ny6M=" - } - }, - "io.ktor:ktor-utils-jvm:2.3.11": { - "ktor-utils-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.jar", - "hash": "sha256-1QjohTKUyKcuVhoSkBJ97q+SdC4tgQNqa5tzyCsx7WE=" - }, - "ktor-utils-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.module", - "hash": "sha256-41aI1T/NEKfizORi3PjCB81MGkOD8ZU46xU/9wogbp4=" - }, - "ktor-utils-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/2.3.11/ktor-utils-jvm-2.3.11.pom", - "hash": "sha256-H412FDKI60HeKk4U/pf7CtRtMdfUpXwHo7voHSTOTKA=" - } - }, - "io.ktor:ktor-websockets:2.3.11": { - "ktor-websockets-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.jar", - "hash": "sha256-XdKULp+AhVyqGFXiShT3DxqHWcg3tFTplRdqPMl3QVg=" - }, - "ktor-websockets-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.module", - "hash": "sha256-t4zNNnaq5vyJ3WfnvqhKG8Dy1Wj2dS+njB8umGelDY4=" - }, - "ktor-websockets-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets/2.3.11/ktor-websockets-2.3.11.pom", - "hash": "sha256-j87iI7x63u3+9R+IaRZJrsf3edm+JowIJ7tuiow0Nmw=" - } - }, - "io.ktor:ktor-websockets-jvm:2.3.11": { - "ktor-websockets-jvm-2.3.11.jar": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.jar", - "hash": "sha256-0DB7Dv/GNJYymcO1L1E/eM+1xWY67t6dxCS4VZtT66o=" - }, - "ktor-websockets-jvm-2.3.11.module": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.module", - "hash": "sha256-NHCtWpjcwUnywUXqTgiQ1wY6UMd8JsXOk/fhySJqKQY=" - }, - "ktor-websockets-jvm-2.3.11.pom": { - "url": "https://repo.maven.apache.org/maven2/io/ktor/ktor-websockets-jvm/2.3.11/ktor-websockets-jvm-2.3.11.pom", - "hash": "sha256-y26TtzMFAIabQ+RBnTzdYMa7FoD493PwfLGLAZ2S7V8=" - } - }, "io.netty:netty-bom:4.1.107.Final": { "netty-bom-4.1.107.Final.pom": { "url": "https://repo.maven.apache.org/maven2/io/netty/netty-bom/4.1.107.Final/netty-bom-4.1.107.Final.pom", "hash": "sha256-w2mXVYv7ThHyAN2m7i5BpF8t+eGu9njtoI553Yk4whA=" } }, - "io.netty:netty-buffer:4.1.106.Final": { - "netty-buffer-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.jar", - "hash": "sha256-1QZ72+R21jy0MpOCKDKnSafDijjBxRYQfHPSV8Ob7SE=" - }, - "netty-buffer-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-buffer/4.1.106.Final/netty-buffer-4.1.106.Final.pom", - "hash": "sha256-2gY34YJ9Uw2h2PQwsObNaT7Ee32qBnQrKKw02xy1RqY=" - } - }, - "io.netty:netty-codec:4.1.106.Final": { - "netty-codec-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.jar", - "hash": "sha256-k4Y9/WkPes58JuTICP3CR4CtrUZbPNy3zj/HPEIt928=" - }, - "netty-codec-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec/4.1.106.Final/netty-codec-4.1.106.Final.pom", - "hash": "sha256-NA+IHwoS9itNCY+bcQo0fASTjV/z38wvw8pw1X7a70s=" - } - }, - "io.netty:netty-codec-http:4.1.106.Final": { - "netty-codec-http-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.jar", - "hash": "sha256-uhd6A63Fh/pj6W8duunEb/JfWTl+o02WC0XgXQKWAm4=" - }, - "netty-codec-http-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http/4.1.106.Final/netty-codec-http-4.1.106.Final.pom", - "hash": "sha256-DE+4Y7F3o8Z9NhZistW8Gx43Vgubamtxfbc+lnlW2Ro=" - } - }, - "io.netty:netty-codec-http2:4.1.106.Final": { - "netty-codec-http2-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.jar", - "hash": "sha256-wrgh1XpzPNZx6iqwZCACsX4KK4kATKAmxuro9Tgc+B4=" - }, - "netty-codec-http2-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-codec-http2/4.1.106.Final/netty-codec-http2-4.1.106.Final.pom", - "hash": "sha256-JZlznLzUACvwLSkABPTYxyvdhZ2VOyGAR7HvdW55jEY=" - } - }, - "io.netty:netty-common:4.1.106.Final": { - "netty-common-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.jar", - "hash": "sha256-X/vgG9hFYXqRbeNhMBDV/aV8XraUFH040E95Hpg01cM=" - }, - "netty-common-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-common/4.1.106.Final/netty-common-4.1.106.Final.pom", - "hash": "sha256-4ayZMJpA1e76IEs6GBXHIcuS5K5t1UHsIoRQ2cnUgA0=" - } - }, - "io.netty:netty-handler:4.1.106.Final": { - "netty-handler-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.jar", - "hash": "sha256-WpGa2Ittnp8IwwaZgLxlamKSagDmui2lhZqg7k4gLkQ=" - }, - "netty-handler-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-handler/4.1.106.Final/netty-handler-4.1.106.Final.pom", - "hash": "sha256-lhoCD6DBskT1io9MYS+egEEokLlgO/WTzmiUKaRlC0Y=" - } - }, - "io.netty:netty-parent:4.1.106.Final": { - "netty-parent-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-parent/4.1.106.Final/netty-parent-4.1.106.Final.pom", - "hash": "sha256-eV8c7NBEHGSvry5vEN+yHCRtRI9sQ1cFHt6mjpw+s2U=" - } - }, - "io.netty:netty-resolver:4.1.106.Final": { - "netty-resolver-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.jar", - "hash": "sha256-QElYuPBZDuUmAT0BHNI1Tat4rbqtdD19RE2zOj+eq6w=" - }, - "netty-resolver-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.106.Final/netty-resolver-4.1.106.Final.pom", - "hash": "sha256-phbG6XmPmDwsK0BiFDvaWM8tD2mGnZ00yMJiPdZMXXc=" - } - }, - "io.netty:netty-transport:4.1.106.Final": { - "netty-transport-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.jar", - "hash": "sha256-I+qaOQCbQenQqhUVswc6+e5NpOFsLoabWqiqnxCdQlE=" - }, - "netty-transport-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.106.Final/netty-transport-4.1.106.Final.pom", - "hash": "sha256-qyxCFnnBmSuuT3UyvpdpbK5L9g5pbwskf/vPunrynM4=" - } - }, - "io.netty:netty-transport-classes-epoll:4.1.106.Final": { - "netty-transport-classes-epoll-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.jar", - "hash": "sha256-676g9nii85R+sgC+Az7X/lUwZ+Octd9Ldp0bn8aimHI=" - }, - "netty-transport-classes-epoll-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-epoll/4.1.106.Final/netty-transport-classes-epoll-4.1.106.Final.pom", - "hash": "sha256-kancuAlsq6lJCbohCze/4/M7qjAuZXAap/4nnWlRzGc=" - } - }, - "io.netty:netty-transport-classes-kqueue:4.1.106.Final": { - "netty-transport-classes-kqueue-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.jar", - "hash": "sha256-9o7UQlABZcajhz4HMeG2IIS0L4QtD0dmdHSA7x/Jdj4=" - }, - "netty-transport-classes-kqueue-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.106.Final/netty-transport-classes-kqueue-4.1.106.Final.pom", - "hash": "sha256-5VnP7dwvVFIUCbLypQY8gXefTgvpcG/+2QR0B3xBHU4=" - } - }, - "io.netty:netty-transport-native-epoll:4.1.106.Final": { - "netty-transport-native-epoll-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.jar", - "hash": "sha256-ZgOaFRY1MCriM9/Rh9kcfddzoRrM0Sc1wWU7gndOd/A=" - }, - "netty-transport-native-epoll-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-epoll/4.1.106.Final/netty-transport-native-epoll-4.1.106.Final.pom", - "hash": "sha256-U51mdWvcdwISzdMD7mJMrY2xbu9KgZiyqOKEg+ljb04=" - } - }, - "io.netty:netty-transport-native-kqueue:4.1.106.Final": { - "netty-transport-native-kqueue-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.jar", - "hash": "sha256-FC/1C6Wcdbv2c6bBQ53Prjy3RprbgQXcP7ZqpAVRpK4=" - }, - "netty-transport-native-kqueue-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-kqueue/4.1.106.Final/netty-transport-native-kqueue-4.1.106.Final.pom", - "hash": "sha256-BuxVaGByijbJpVnBVpIl5kzOGvQPqZ7T3GdZgmHMlOs=" - } - }, - "io.netty:netty-transport-native-unix-common:4.1.106.Final": { - "netty-transport-native-unix-common-4.1.106.Final.jar": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.jar", - "hash": "sha256-9S1LOMVxBmv6rpZKeGf6k38OVPtf9GfFdstlCiCoVOg=" - }, - "netty-transport-native-unix-common-4.1.106.Final.pom": { - "url": "https://repo.maven.apache.org/maven2/io/netty/netty-transport-native-unix-common/4.1.106.Final/netty-transport-native-unix-common-4.1.106.Final.pom", - "hash": "sha256-h19sn7JG3Vygm8Lc/LF4wpsBxx6lE/M3jm/Osp1KCjo=" - } - }, "it.unimi.dsi:fastutil-core:8.5.12": { "fastutil-core-8.5.12.jar": { "url": "https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil-core/8.5.12/fastutil-core-8.5.12.jar", @@ -971,32 +211,6 @@ "hash": "sha256-p3AsSHAmgCeEtXl7YjMKi41lkr8PRzeyXGel6sgmWcA=" } }, - "net.bytebuddy:byte-buddy:1.10.9": { - "byte-buddy-1.10.9.jar": { - "url": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.jar", - "hash": "sha256-B7nKbi+XDLA/SyVlHfHy/OJx1JG0TgQJgniHeG9pLU0=" - }, - "byte-buddy-1.10.9.pom": { - "url": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10.9.pom", - "hash": "sha256-QIgdSUiocRWTRicPNpRbwpAlV3xstX9qXdDHwiIGnaw=" - } - }, - "net.bytebuddy:byte-buddy-agent:1.10.9": { - "byte-buddy-agent-1.10.9.jar": { - "url": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.jar", - "hash": "sha256-+9BS0tTNFvcHVHxGhiHGt/uELH7Ihm0BLsvGF43h85Q=" - }, - "byte-buddy-agent-1.10.9.pom": { - "url": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/byte-buddy-agent-1.10.9.pom", - "hash": "sha256-GZB0lfvBwjFsjrrXbwe5bRAf6xp+PAm/4VJv0/xu7J0=" - } - }, - "net.bytebuddy:byte-buddy-parent:1.10.9": { - "byte-buddy-parent-1.10.9.pom": { - "url": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.10.9/byte-buddy-parent-1.10.9.pom", - "hash": "sha256-k9nTgHec0XaMUrS87oLL+u3vmkow3oeuBrRB4WNP04w=" - } - }, "net.java.dev.jna:jna:5.14.0": { "jna-5.14.0.jar": { "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar", @@ -1007,16 +221,6 @@ "hash": "sha256-4E4llRUB3yWtx7Hc22xTNzyUiXuE0+FJISknY+4Hrj0=" } }, - "net.java.dev.jna:jna-platform:5.9.0": { - "jna-platform-5.9.0.jar": { - "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.jar", - "hash": "sha256-GQO8bYfzq5ICOVe5H0WpyOs1FbrQMDVs6XcgHlFBtyQ=" - }, - "jna-platform-5.9.0.pom": { - "url": "https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.9.0/jna-platform-5.9.0.pom", - "hash": "sha256-C9pdmOS+kmHwnN+u5vokWYh5CDTX/K3I4v3ZPH1kGCU=" - } - }, "org.apache:apache:31": { "apache-31.pom": { "url": "https://repo.maven.apache.org/maven2/org/apache/apache/31/apache-31.pom", @@ -1147,20 +351,6 @@ "hash": "sha256-us0USYVzbUMmuuRChHM78eMTKX3NolNGTkYpsddoGPc=" } }, - "org.apiguardian:apiguardian-api:1.1.2": { - "apiguardian-api-1.1.2.jar": { - "url": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", - "hash": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=" - }, - "apiguardian-api-1.1.2.module": { - "url": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.module", - "hash": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=" - }, - "apiguardian-api-1.1.2.pom": { - "url": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.pom", - "hash": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA=" - } - }, "org.codehaus.groovy:groovy:3.0.15": { "groovy-3.0.15.jar": { "url": "https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy/3.0.15/groovy-3.0.15.jar", @@ -1251,38 +441,6 @@ "hash": "sha256-00QQSm7mGdplmEA8JdA6qqrw9U6WRv01EkWN9Xyarrg=" } }, - "org.eclipse.jetty:jetty-parent:21": { - "jetty-parent-21.pom": { - "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/jetty-parent/21/jetty-parent-21.pom", - "hash": "sha256-eXLp7G84UqjuHuXU0Q3Mnc1gd7El+TWqlrNnpsgjN/U=" - } - }, - "org.eclipse.jetty.alpn:alpn-api:1.1.3.v20160715": { - "alpn-api-1.1.3.v20160715.jar": { - "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.jar", - "hash": "sha256-B76ZdYtpnhlPcPuXhNlCAtxsmCEod4KePXKwIPJmBXY=" - }, - "alpn-api-1.1.3.v20160715.pom": { - "url": "https://repo.maven.apache.org/maven2/org/eclipse/jetty/alpn/alpn-api/1.1.3.v20160715/alpn-api-1.1.3.v20160715.pom", - "hash": "sha256-FrRveqUg7VDUR4oM9ndjje3AFDtCNMJ48WDLS9JUgq8=" - } - }, - "org.fusesource:fusesource-pom:1.12": { - "fusesource-pom-1.12.pom": { - "url": "https://repo.maven.apache.org/maven2/org/fusesource/fusesource-pom/1.12/fusesource-pom-1.12.pom", - "hash": "sha256-xA2WDarc73sBwbHGZXr7rE//teUxaPj8sLKLhOb9zKE=" - } - }, - "org.fusesource.jansi:jansi:2.4.1": { - "jansi-2.4.1.jar": { - "url": "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.jar", - "hash": "sha256-Ll53Wp3Fj/prvWqm8JnWL4ti3N60w8O7vlzyMBvC3ME=" - }, - "jansi-2.4.1.pom": { - "url": "https://repo.maven.apache.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.pom", - "hash": "sha256-P5jZeaTTVZ+HefuwBLNK51Fq+t9RDhHffMPNBz6xuzs=" - } - }, "org.gradle:gradle-tooling-api:8.7": { "gradle-tooling-api-8.7.jar": { "url": "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.jar", @@ -1348,10 +506,6 @@ } }, "org.jetbrains:markdown:0.7.0": { - "markdown-0.7.0.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.jar", - "hash": "sha256-CyFbRlFaxzcfaK2efq6i+Pkr6R83v70DsAjLVvFnUCE=" - }, "markdown-0.7.0.module": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.0/markdown-0.7.0.module", "hash": "sha256-fRDYKtUAs+iccbTS3Byl1L3Xq/BIcostrtWzsPuVxzs=" @@ -1619,16 +773,6 @@ "hash": "sha256-659KFngb/ADM7IAw++XuIo5vKydxxQwmezIY/rAGW0A=" } }, - "org.jetbrains.kotlin:kotlin-reflect:1.9.23": { - "kotlin-reflect-1.9.23.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.jar", - "hash": "sha256-dHwpJ6Yjtuu3NLRl1qJoYukg3dGCjvQ3Foh8CEmjEx8=" - }, - "kotlin-reflect-1.9.23.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.23/kotlin-reflect-1.9.23.pom", - "hash": "sha256-WXD72CdKWAyk6I/nhkeMR8i5ufo3TFsK3ekyhFYiX2o=" - } - }, "org.jetbrains.kotlin:kotlin-reflect:1.9.22": { "kotlin-reflect-1.9.22.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar", @@ -1639,16 +783,6 @@ "hash": "sha256-xxLjWN97kxi2j1RjlxsIhnODf8DKQoXRw4LIEC7da18=" } }, - "org.jetbrains.kotlin:kotlin-reflect:1.8.22": { - "kotlin-reflect-1.8.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.jar", - "hash": "sha256-ZVgl+mURIg/tDK5arU3+oqv5j9EPCud+uNr2q/zQ8Cc=" - }, - "kotlin-reflect-1.8.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.pom", - "hash": "sha256-KeHqCKPTq0gtH9/UH76TRZEt9Gbbr6+0sS0YN8cr4yg=" - } - }, "org.jetbrains.kotlin:kotlin-reflect:1.6.10": { "kotlin-reflect-1.6.10.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar", @@ -1785,26 +919,6 @@ "hash": "sha256-10k21oh1ZK63EOhCmLVCB/U+m88jpSrSv6IsIIZ3V2c=" } }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22": { - "kotlin-stdlib-jdk7-1.8.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.jar", - "hash": "sha256-BV9cskKH+hBhAJlae0erkhJrgegy6HX1+izwvVVpPQs=" - }, - "kotlin-stdlib-jdk7-1.8.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.pom", - "hash": "sha256-T5WKqZPVmE+PXr7UFGVipfOp9pW2BJyfKHOBN5ytqzM=" - } - }, - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22": { - "kotlin-stdlib-jdk8-1.8.22.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.jar", - "hash": "sha256-QZiw6vCQpPJbb35aWVgfQxS6jJ9s0dE+6dNI5l7Y9wc=" - }, - "kotlin-stdlib-jdk8-1.8.22.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.pom", - "hash": "sha256-ko8hhyF0djE8uBbUgHC8dlSqO5pa6B0/xfjCecyPjZ4=" - } - }, "org.jetbrains.kotlin:kotlin-tooling-core:1.9.22": { "kotlin-tooling-core-1.9.22.jar": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar", @@ -1841,43 +955,13 @@ "hash": "sha256-+9WDi7OolDJys/EfhJrIlDeJL9MJstA012QjjEVPoyI=" } }, - "org.jetbrains.kotlinx:atomicfu:0.23.1": { - "atomicfu-0.23.1.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.jar", - "hash": "sha256-fbhmDr5LkbtHjts2FsTjpQulnAfcpRfR4ShMA/6GrFc=" - }, - "atomicfu-0.23.1.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.module", - "hash": "sha256-Pokf5ja1UQgZIQD884saObzRwlM+I8Ri/AdkTur8sg8=" - }, - "atomicfu-0.23.1.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/atomicfu/0.23.1/atomicfu-0.23.1.pom", - "hash": "sha256-aIt5ABn0F87APmldZWexc7o7skGJVBZi8U/2ZEG1Pas=" - } - }, "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1": { "kotlinx-coroutines-bom-1.8.1.pom": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.1/kotlinx-coroutines-bom-1.8.1.pom", "hash": "sha256-Vj5Kop+o/gmm4XRtCltRMI98fe3EaNxaDKgQpIWHcDA=" } }, - "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0": { - "kotlinx-coroutines-bom-1.8.0.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.8.0/kotlinx-coroutines-bom-1.8.0.pom", - "hash": "sha256-Ejnp2+E5fNWXE0KVayURvDrOe2QYQuQ3KgiNz6i5rVU=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.1": { - "kotlinx-coroutines-bom-1.7.1.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.7.1/kotlinx-coroutines-bom-1.7.1.pom", - "hash": "sha256-uSWqmIxApceqDHeyE3P+sYw5QUkmvVHHbvRENPW66cI=" - } - }, "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1": { - "kotlinx-coroutines-core-1.8.1.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.jar", - "hash": "sha256-2vUPHJQEsiSh1t1Shvjo7n1j/oB/eOqY9xeVwYO2Al8=" - }, "kotlinx-coroutines-core-1.8.1.module": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.8.1/kotlinx-coroutines-core-1.8.1.module", "hash": "sha256-CMuvMyW1Tg+O+NqF5OtZb32Ub4Q+XRYAOFRj8yaKTvA=" @@ -1915,88 +999,6 @@ "hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs=" } }, - "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.1": { - "kotlinx-coroutines-debug-1.8.1.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.jar", - "hash": "sha256-JFUwMZoX18m8ShFSb0LpV1Dkqz/IZMlA2evo9UjqGHA=" - }, - "kotlinx-coroutines-debug-1.8.1.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.module", - "hash": "sha256-CA+LzOocTvqCk+0p/5z3xKfR0s3ekBzIZKz3Ly6AdXI=" - }, - "kotlinx-coroutines-debug-1.8.1.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-debug/1.8.1/kotlinx-coroutines-debug-1.8.1.pom", - "hash": "sha256-x9+Ci/O0+ofumYH7ATaN1NwHmV0XzLqPpmEhcTwF69Q=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.1": { - "kotlinx-coroutines-jdk8-1.8.1.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.jar", - "hash": "sha256-2M+0w2PJHHczU7EVvUprWgRgjnkW/iNdOp2H78uZbAE=" - }, - "kotlinx-coroutines-jdk8-1.8.1.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.module", - "hash": "sha256-Ifl7EL6TJkGBfTULclRP+LoyQYf/uREMbo2IESdv2TM=" - }, - "kotlinx-coroutines-jdk8-1.8.1.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.1/kotlinx-coroutines-jdk8-1.8.1.pom", - "hash": "sha256-3uCuamO2M1ETIAqW2eHHgJ32DQ1CS7/xy7tTsxQWWvk=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.8.0": { - "kotlinx-coroutines-jdk8-1.8.0.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.module", - "hash": "sha256-HKyxz+5adTBFR1rzCF+4DcnMzjA3VKnVIApB3/W+AOk=" - }, - "kotlinx-coroutines-jdk8-1.8.0.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.8.0/kotlinx-coroutines-jdk8-1.8.0.pom", - "hash": "sha256-4ZIahLHW5/k6SUgCfRhUHXWjDi6KZNem5DEAMZVR8r0=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.7.1": { - "kotlinx-coroutines-jdk8-1.7.1.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.module", - "hash": "sha256-sJV+aTzxwefUrWJGqm4weV2/S/t1jB5LMv25wkQJuXM=" - }, - "kotlinx-coroutines-jdk8-1.7.1.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-jdk8/1.7.1/kotlinx-coroutines-jdk8-1.7.1.pom", - "hash": "sha256-x3kWU2lOpaVLnN1HCAgtv7i9apeKX0IYSxFBz7SjDnU=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1": { - "kotlinx-coroutines-test-1.8.1.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.module", - "hash": "sha256-oc7i2rKWwTt47BwGDhj+QDNKRAyKB36QzKbeclJ9jN4=" - }, - "kotlinx-coroutines-test-1.8.1.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.1/kotlinx-coroutines-test-1.8.1.pom", - "hash": "sha256-TyiEIOjObP+RUgyfq9bK9o0C2GtkCp8hKPh6TkZtwlg=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0": { - "kotlinx-coroutines-test-1.8.0.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.module", - "hash": "sha256-DsPHX/2ZpqLfto8wfy8vcxQckz5Yt3sQTxyMrDr9U5Q=" - }, - "kotlinx-coroutines-test-1.8.0.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test/1.8.0/kotlinx-coroutines-test-1.8.0.pom", - "hash": "sha256-NV8/pvBjDl6ZuHxywcQ4YgKin0lpFeOHWaOK3gsGkAQ=" - } - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.1": { - "kotlinx-coroutines-test-jvm-1.8.1.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.jar", - "hash": "sha256-xO8d6zG+P4HtguzyNyIMyViGhop+xSekGFmd//FZ3ts=" - }, - "kotlinx-coroutines-test-jvm-1.8.1.module": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.module", - "hash": "sha256-+wj8JXyQBDPS35l71sKeBJzZ979UHAt3YYDgmYJB9XY=" - }, - "kotlinx-coroutines-test-jvm-1.8.1.pom": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-test-jvm/1.8.1/kotlinx-coroutines-test-jvm-1.8.1.pom", - "hash": "sha256-4qht+xaCAWeYuVoPAGy0tdAQRsVaAS6hs2vSAjLcVXQ=" - } - }, "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3": { "kotlinx-serialization-bom-1.6.3.pom": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.6.3/kotlinx-serialization-bom-1.6.3.pom", @@ -2004,10 +1006,6 @@ } }, "org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3": { - "kotlinx-serialization-core-1.6.3.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.jar", - "hash": "sha256-L6Ba/w8zpw2oc8CaD/ZrXVTM3BXjnnykuCYz5wx5LzQ=" - }, "kotlinx-serialization-core-1.6.3.module": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.6.3/kotlinx-serialization-core-1.6.3.module", "hash": "sha256-Nh6eMetylhdLdAhaxJ7dhKTzkAupQxpOQM0cI952oyg=" @@ -2032,10 +1030,6 @@ } }, "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3": { - "kotlinx-serialization-json-1.6.3.jar": { - "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.jar", - "hash": "sha256-jAAWiQp5q1mA3VIKWrGmc4AjwpqjtkN8SC4OX9wG2rE=" - }, "kotlinx-serialization-json-1.6.3.module": { "url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.module", "hash": "sha256-gNHYf6CmO/+Dleo5EL2oDQnw9YNQTd6o7QB7x6hrTNQ=" @@ -2089,86 +1083,6 @@ "hash": "sha256-TQMpzZ5y8kIOXKFXJMv+b/puX9KIg2FRYnEZD9w0Ltc=" } }, - "org.junit:junit-bom:5.8.2": { - "junit-bom-5.8.2.module": { - "url": "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.module", - "hash": "sha256-QM+tmT+nDs3yr3TQxW2hSE7iIJZL6Pkyz+YyvponM/o=" - }, - "junit-bom-5.8.2.pom": { - "url": "https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom", - "hash": "sha256-g2Bpyp6O48VuSDdiItopEmPxN70/0W2E/dR+/MPyhuI=" - } - }, - "org.junit.jupiter:junit-jupiter-api:5.8.2": { - "junit-jupiter-api-5.8.2.jar": { - "url": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar", - "hash": "sha256-GAjuh+D3GM1uJfO3WvwXlWrIo+3EjH6bq58Z+aeeOAE=" - }, - "junit-jupiter-api-5.8.2.module": { - "url": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.module", - "hash": "sha256-fpr03/9iZ6zd0VfZ4Rug1dyRszL6dLxMZZOeRReht3A=" - }, - "junit-jupiter-api-5.8.2.pom": { - "url": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.pom", - "hash": "sha256-yb3jYieVswp3NTHoXFgy+NyKp37N0xPu4jXJg8v9Anc=" - } - }, - "org.junit.platform:junit-platform-commons:1.8.2": { - "junit-platform-commons-1.8.2.jar": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar", - "hash": "sha256-0uAV/KcTDnmvL0YI3FRBXksQtZLXczPey0saJ0wYUFA=" - }, - "junit-platform-commons-1.8.2.module": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.module", - "hash": "sha256-NChH0wRv6kNVlWkttPBdXwOeDh0eIE9NV1WQJVcIJiY=" - }, - "junit-platform-commons-1.8.2.pom": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.pom", - "hash": "sha256-zoUuNMahhKpsgO6N8EcXE6dAgTQTTwjjwcPdh8a1mrc=" - } - }, - "org.junit.platform:junit-platform-engine:1.8.2": { - "junit-platform-engine-1.8.2.jar": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar", - "hash": "sha256-C30AD4w+jl99a4GWSZNue5k4MU6HyPmDgFIY6ldWflk=" - }, - "junit-platform-engine-1.8.2.module": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.module", - "hash": "sha256-66d7Nu/fdaZ/RkODM4JfnkSPVQ1SHnJJ2VA1hYDuY2s=" - }, - "junit-platform-engine-1.8.2.pom": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.pom", - "hash": "sha256-AWhkMmYGDtko71qBgjAD7PrnmpqMC7/Xb0IBxsnXccU=" - } - }, - "org.junit.platform:junit-platform-launcher:1.8.2": { - "junit-platform-launcher-1.8.2.jar": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar", - "hash": "sha256-giFWQJ/YPmguTFGZs0YAVCmbU4oFjCxtD1ybalvbdZQ=" - }, - "junit-platform-launcher-1.8.2.module": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.module", - "hash": "sha256-4XQA7HvnYIwfiI1yG0MAHpc2wVDUD5jIoLzalWPYyus=" - }, - "junit-platform-launcher-1.8.2.pom": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.pom", - "hash": "sha256-tfancaautzyJpud/Vtcp9LqOta/dDxD0TbRNaq25UJU=" - } - }, - "org.junit.platform:junit-platform-suite-api:1.8.2": { - "junit-platform-suite-api-1.8.2.jar": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.jar", - "hash": "sha256-lO80OwW4dbsuTvlKfMYuYQ4bnNeCR+Ky7EPtYYoe0Kc=" - }, - "junit-platform-suite-api-1.8.2.module": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.module", - "hash": "sha256-kwagU4n8QNetnQsSigFEMOXRyldKGErujXhns+iRC3o=" - }, - "junit-platform-suite-api-1.8.2.pom": { - "url": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-suite-api/1.8.2/junit-platform-suite-api-1.8.2.pom", - "hash": "sha256-QB/ZdNa5RmRSS+y3z4B8TUfXxXSy+vGxMeukiUn+mJg=" - } - }, "org.mockito:mockito-bom:5.7.0": { "mockito-bom-5.7.0.pom": { "url": "https://repo.maven.apache.org/maven2/org/mockito/mockito-bom/5.7.0/mockito-bom-5.7.0.pom", @@ -2181,30 +1095,6 @@ "hash": "sha256-2FMadGyYj39o7V8YjN6pRQBq6pk+xd+eUk4NJ9YUkdo=" } }, - "org.opentest4j:opentest4j:1.3.0": { - "opentest4j-1.3.0.jar": { - "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar", - "hash": "sha256-SOLfY2yrZWPO1k3N/4q7I1VifLI27wvzdZhoLd90Lxs=" - }, - "opentest4j-1.3.0.module": { - "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.module", - "hash": "sha256-SL8dbItdyU90ZSvReQD2VN63FDUCSM9ej8onuQkMjg0=" - }, - "opentest4j-1.3.0.pom": { - "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.pom", - "hash": "sha256-m/fP/EEPPoNywlIleN+cpW2dQ72TfjCUhwbCMqlDs1U=" - } - }, - "org.opentest4j:opentest4j:1.2.0": { - "opentest4j-1.2.0.jar": { - "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar", - "hash": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" - }, - "opentest4j-1.2.0.pom": { - "url": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom", - "hash": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ=" - } - }, "org.ow2:ow2:1.5.1": { "ow2-1.5.1.pom": { "url": "https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5.1/ow2-1.5.1.pom", @@ -2267,12 +1157,6 @@ "hash": "sha256-xWuAoKa+oqBGPnDQiSrjOKnlB+SGdnpSBFNAmBIFjRs=" } }, - "org.sonatype.oss:oss-parent:9": { - "oss-parent-9.pom": { - "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom", - "hash": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno=" - } - }, "org.sonatype.oss:oss-parent:7": { "oss-parent-7.pom": { "url": "https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", From 49fb4caab3cd6b398fcfec1836760e695f9bc9ce Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 7 Jun 2024 10:34:56 -0700 Subject: [PATCH 26/34] Use lenient configuration in ResolveProjectArtifacts --- plugin/common/src/main/kotlin/ResolveAllArtifacts.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt b/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt index 205496c..da1fadf 100644 --- a/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt +++ b/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt @@ -44,6 +44,7 @@ abstract class ResolveProjectDependenciesTask : DefaultTask() { protected fun Configuration.artifactFiles(): FileCollection { return incoming.artifactView { viewConfiguration -> + viewConfiguration.isLenient = true viewConfiguration.componentFilter { it is ModuleComponentIdentifier } }.files } From a4ef49940172b4928bf4b7c0fde4e0b3593562b7 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Fri, 7 Jun 2024 11:44:01 -0700 Subject: [PATCH 27/34] Provide separate buildMavenRepo builder --- default.nix | 6 +- flake.nix | 3 +- gradle.nix | 143 ++++--------------------------------- maven-repo.nix | 189 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 208 insertions(+), 133 deletions(-) create mode 100644 maven-repo.nix diff --git a/default.nix b/default.nix index 4432960..4151b21 100644 --- a/default.nix +++ b/default.nix @@ -5,7 +5,9 @@ with pkgs; let - buildGradlePackage = callPackage ./gradle.nix { }; + buildMavenRepo = callPackage ./maven-repo.nix { }; + + buildGradlePackage = callPackage ./gradle.nix { inherit buildMavenRepo; }; gradle2nix = buildGradlePackage { pname = "gradle2nix"; @@ -38,7 +40,7 @@ let ''; passthru = { - inherit buildGradlePackage; + inherit buildGradlePackage buildMavenRepo; }; meta = with lib; { diff --git a/flake.nix b/flake.nix index 564a678..06633ff 100644 --- a/flake.nix +++ b/flake.nix @@ -21,7 +21,8 @@ in { builders = rec { - buildGradlePackage = pkgs.callPackage ./gradle.nix { }; + buildMavenRepo = pkgs.callPackage ./maven-repo.nix { }; + buildGradlePackage = pkgs.callPackage ./gradle.nix { inherit buildMavenRepo; }; default = buildGradlePackage; }; diff --git a/gradle.nix b/gradle.nix index 12c92cf..b505770 100644 --- a/gradle.nix +++ b/gradle.nix @@ -22,15 +22,9 @@ { lib, stdenv, - buildEnv, - fetchs3, - fetchurl, gradle, - maven, - runCommandLocal, - symlinkJoin, + buildMavenRepo, writeText, - writeTextDir, }: let @@ -112,129 +106,18 @@ in }@args: let - inherit (builtins) - attrValues - concatStringsSep - elemAt - filter - fromJSON - getAttr - head - length - mapAttrs - removeAttrs - replaceStrings - ; - - inherit (lib) - mapAttrsToList - readFile - versionAtLeast - versionOlder - ; - - inherit (lib.strings) sanitizeDerivationName; - - toCoordinates = - id: - let - coords = builtins.split ":" id; - - parseVersion = - version: - let - parts = builtins.split ":" version; - base = elemAt parts 0; - in - if length parts >= 2 then - let - snapshot = elemAt parts 2; - in - replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base - else - base; - in - rec { - group = elemAt coords 0; - module = elemAt coords 2; - version = elemAt coords 4; - uniqueVersion = parseVersion version; - }; - - fetchers' = { - http = fetchurl; - https = fetchurl; - } // fetchers; - - fetch = - name: - { url, hash }: - let - scheme = head (builtins.match "([a-z0-9+.-]+)://.*" url); - fetch' = getAttr scheme fetchers'; - in - fetch' { inherit url hash; }; - - mkModule = - id: artifacts: - let - coords = toCoordinates id; - modulePath = "${replaceStrings [ "." ] [ "/" ] coords.group}/${coords.module}/${coords.version}"; - in - stdenv.mkDerivation { - pname = sanitizeDerivationName "${coords.group}-${coords.module}"; - version = coords.uniqueVersion; - - srcs = mapAttrsToList fetch artifacts; - - dontPatch = true; - dontConfigure = true; - dontBuild = true; - dontFixup = true; - dontInstall = true; - - preUnpack = '' - mkdir -p "$out/${modulePath}" - ''; - - unpackCmd = '' - cp "$curSrc" "$out/${modulePath}/$(stripHash "$curSrc")" - ''; - - sourceRoot = "."; - - preferLocalBuild = true; - allowSubstitutes = false; - }; - - # Intermediate dependency spec. - # - # We want to allow overriding dependencies via the 'dependencies' function, - # so we pass an intermediate set that maps each Maven coordinate to the - # derivation created with 'mkModule'. This allows users extra flexibility - # to do things like patching native libraries with patchelf or replacing - # artifacts entirely. - lockedDependencies = - final: - if lockFile == null then - { } - else - let - lockedDependencySpecs = fromJSON (readFile lockFile); - in - mapAttrs mkModule lockedDependencySpecs; - - finalDependencies = - let - composedExtension = lib.composeManyExtensions overlays; - extended = lib.extends composedExtension lockedDependencies; - fixed = lib.fix extended; - in - filter lib.isDerivation (attrValues fixed); - - offlineRepo = symlinkJoin { - name = if version != null then "${pname}-${version}-gradle-repo" else "${pname}-gradle-repo"; - paths = finalDependencies; + inherit (builtins) removeAttrs; + + inherit (lib) versionAtLeast versionOlder; + + offlineRepo = buildMavenRepo { + inherit + lockFile + pname + version + fetchers + overlays + ; }; initScript = writeText "init.gradle" '' diff --git a/maven-repo.nix b/maven-repo.nix new file mode 100644 index 0000000..2a13615 --- /dev/null +++ b/maven-repo.nix @@ -0,0 +1,189 @@ +{ + lib, + stdenv, + fetchurl, + symlinkJoin, +}: + +{ + # Path to the lockfile generated by gradle2nix (e.g. gradle.lock). + lockFile, + pname ? "project", + version ? null, + # Override functions which fetch dependency artifacts. + # Keys in this set are URL schemes such as "https" or "s3". + # Values are functions which take a dependency in the form + # `{ urls, hash }` and fetch into the Nix store. For example: + # + # { + # s3 = { name, urls, hash }: fetchs3 { + # s3url = builtins.head urls; + # # TODO This doesn't work without patching fetchs3 to accept SRI hashes + # inherit name hash; + # region = "us-west-2"; + # credentials = { + # access_key_id = "foo"; + # secret_access_key = "bar"; + # }; + # }; + # } + fetchers ? { }, + # Overlays for dependencies in the offline Maven repository. + # + # Acceps an attrset of dependencies (usually parsed from 'lockFile'), and produces an attrset + # containing dependencies to merge into the final set. + # + # The attrset is of the form: + # + # { + # "${group}:${module}:${version}" = ; + # # ... + # } + # + # A dependency derivation unpacks multiple source files into a single Maven-style directory named + # "${out}/${groupPath}/${module}/${version}/", where 'groupPath' is the dependency group ID with dot + # characters ('.') replaced by the path separator ('/'). + # + # Examples: + # + # 1. Add or replace a dependency with a single JAR file: + # + # (_: { + # "com.squareup.okio:okio:3.9.0" = fetchurl { + # url = "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar"; + # hash = "..."; + # downloadToTemmp = true; + # postFetch = "install -Dt $out/com/squareup/okio/okio/3.9.0/ $downloadedFile" + # }; + # }) + # + # 2. Remove a dependency entirely: + # + # # This works because the result is filtered for values that are derivations. + # (_: { + # "org.apache.log4j:core:2.23.1" = null; + # }) + overlays ? [ ], +}: + +let + + inherit (builtins) + attrValues + elemAt + filter + fromJSON + getAttr + head + length + mapAttrs + replaceStrings + ; + + inherit (lib) mapAttrsToList readFile; + + inherit (lib.strings) sanitizeDerivationName; + + toCoordinates = + id: + let + coords = builtins.split ":" id; + + parseVersion = + version: + let + parts = builtins.split ":" version; + base = elemAt parts 0; + in + if length parts >= 2 then + let + snapshot = elemAt parts 2; + in + replaceStrings [ "-SNAPSHOT" ] [ "-${snapshot}" ] base + else + base; + in + rec { + group = elemAt coords 0; + module = elemAt coords 2; + version = elemAt coords 4; + uniqueVersion = parseVersion version; + }; + + fetchers' = { + http = fetchurl; + https = fetchurl; + } // fetchers; + + fetch = + name: + { url, hash }: + let + scheme = head (builtins.match "([a-z0-9+.-]+)://.*" url); + fetch' = getAttr scheme fetchers'; + in + fetch' { inherit url hash; }; + + mkModule = + id: artifacts: + let + coords = toCoordinates id; + modulePath = "${replaceStrings [ "." ] [ "/" ] coords.group}/${coords.module}/${coords.version}"; + in + stdenv.mkDerivation { + pname = sanitizeDerivationName "${coords.group}-${coords.module}"; + version = coords.uniqueVersion; + + srcs = mapAttrsToList fetch artifacts; + + dontPatch = true; + dontConfigure = true; + dontBuild = true; + dontFixup = true; + dontInstall = true; + + preUnpack = '' + mkdir -p "$out/${modulePath}" + ''; + + unpackCmd = '' + cp "$curSrc" "$out/${modulePath}/$(stripHash "$curSrc")" + ''; + + sourceRoot = "."; + + preferLocalBuild = true; + allowSubstitutes = false; + }; + + # Intermediate dependency spec. + # + # We want to allow overriding dependencies via the 'dependencies' function, + # so we pass an intermediate set that maps each Maven coordinate to the + # derivation created with 'mkModule'. This allows users extra flexibility + # to do things like patching native libraries with patchelf or replacing + # artifacts entirely. + lockedDependencies = + final: + if lockFile == null then + { } + else + let + lockedDependencySpecs = fromJSON (readFile lockFile); + in + mapAttrs mkModule lockedDependencySpecs; + + finalDependencies = + let + composedExtension = lib.composeManyExtensions overlays; + extended = lib.extends composedExtension lockedDependencies; + fixed = lib.fix extended; + in + filter lib.isDerivation (attrValues fixed); + + offlineRepo = symlinkJoin { + name = if version != null then "${pname}-${version}-gradle-repo" else "${pname}-gradle-repo"; + paths = finalDependencies; + }; +in +offlineRepo From b32bf21a6ca52f69685aba16440b9567ea767b9b Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Thu, 13 Jun 2024 15:21:58 -0700 Subject: [PATCH 28/34] Move Gradle build logic to a setup hook --- README.org | 271 +++++++++++++++--- .../org/nixos/gradle2nix/GradleRunner.kt | 17 +- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 29 +- .../kotlin/org/nixos/gradle2nix/Process.kt | 10 +- .../kotlin/org/nixos/gradle2nix/Version.kt | 6 +- .../kotlin/org/nixos/gradle2nix/GoldenTest.kt | 83 +++--- .../kotlin/org/nixos/gradle2nix/TestUtil.kt | 12 +- default.nix | 17 +- flake.lock | 6 +- flake.nix | 12 +- gradle.nix | 238 --------------- nix/build-gradle-package.nix | 145 ++++++++++ maven-repo.nix => nix/build-maven-repo.nix | 108 +++---- nix/init.gradle | 42 +++ nix/setup-hook.sh | 125 ++++++++ .../main/kotlin/Gradle2NixPlugin.gradle69.kt | 11 +- .../main/kotlin/GradleCacheAccess.gradle69.kt | 8 +- .../src/main/kotlin/DependencyExtractor.kt | 15 +- .../main/kotlin/DependencySetModelBuilder.kt | 5 +- .../src/main/kotlin/ResolveAllArtifacts.kt | 19 +- .../kotlin/DependencyExtractor.gradle8.kt | 18 +- .../kotlin/ResolveAllArtifacts.gradle8.kt | 5 +- .../main/kotlin/Gradle2NixPlugin.gradle80.kt | 11 +- .../main/kotlin/GradleCacheAccess.gradle80.kt | 8 +- .../main/kotlin/Gradle2NixPlugin.gradle81.kt | 11 +- .../main/kotlin/GradleCacheAccess.gradle81.kt | 8 +- 26 files changed, 769 insertions(+), 471 deletions(-) delete mode 100644 gradle.nix create mode 100644 nix/build-gradle-package.nix rename maven-repo.nix => nix/build-maven-repo.nix (56%) create mode 100644 nix/init.gradle create mode 100644 nix/setup-hook.sh diff --git a/README.org b/README.org index e1fe787..d55c339 100644 --- a/README.org +++ b/README.org @@ -2,7 +2,8 @@ [[./assets/gradle2nix.png]] -Generate [[https://nixos.org/nix/][Nix]] expressions which build [[https://gradle.org/][Gradle]]-based projects. +Generate [[https://nixos.org/nix/][Nix]] expressions which build +[[https://gradle.org/][Gradle]]-based projects. ** Table of contents @@ -13,6 +14,10 @@ Generate [[https://nixos.org/nix/][Nix]] expressions which build [[https://gradl - [[#usage][Usage]] - [[#for-packagers][For packagers]] - [[#specifying-the-gradle-installation][Specifying the Gradle installation]] +- [[#reference][Reference]] + - [[#buildGradlePackage][=buildGradlePackage=]] + - [[#buildMavenRepo][=buildMavenRepo=]] + - [[#gradleSetupHook][=gradleSetupHook=]] - [[#contributing][Contributing]] - [[#license][License]] #+END_QUOTE @@ -25,7 +30,8 @@ is that it is purely functional; a "package" is a function which accepts inputs (source code, configuration, etc) and produces an output (binaries, a Java JAR, documentation, really anything). -One benefit of a functional build system is [[https://reproducible-builds.org/][reproducibility]]. If you +One benefit of a functional build system is +[[https://reproducible-builds.org/][reproducibility]]. If you specify your inputs precisely, and take care not to introduce impurities—such as files retrieved over a network without tracking their content—you will receive, byte-for-byte, the exact output as @@ -42,31 +48,33 @@ inputs, including: - Environment variables and command-line options - Artifacts cached on the system hosting the build -=gradle2nix= helps to solve this problem by leveraging Nix to control -the most common inputs to a Gradle build. When run on a project, it -will record all dependencies for both the build environment (including -=plugins= and =buildscript= blocks) and the project, and provide a Nix -expression to run the build given these dependencies. The build itself -is then run in a sandbox, where only content-tracked network requests -are allowed to fetch dependencies, and a local Maven repository is -created on-the-fly to host the dependency artifacts somewhere Gradle -can resolve them without a network. +=gradle2nix= helps to solve this problem by leveraging Nix to +control the most common inputs to a Gradle build. When run on a +project, it will record all dependencies for both the build +environment (including =plugins= and =buildscript= blocks) and the +project, and provide a Nix expression to run the build given these +dependencies. The build itself is then run in a sandbox, where only +content-tracked network requests are allowed to fetch dependencies, +and a local Maven repository is created on-the-fly to host the +dependency artifacts somewhere Gradle can resolve them without a +network. This tool is useful for both development and packaging. You can use =gradle2nix= to: -- Create isolated and reproducible development environments that work - anywhere Nix itself can run; +- Create isolated and reproducible development environments that + work anywhere Nix itself can run. - Reduce or eliminate flakiness and maintenance headaches from CI/CD - pipelines + pipelines. - Distribute a recipe which can reliably build a Gradle project in - repositories such as the [[https://nixos.org/nixpkgs/][Nix Package Collection]]. + repositories such as the [[https://nixos.org/nixpkgs/][Nix Package + Collection]]. ** Installation -A [[./gradle.nix][Nix expression]] (generated by =gradle2nix= itself) is provided for -convenience. The following expression will fetch and build the latest -version of this package: +A [[./gradle.nix][Nix expression]] (generated by =gradle2nix= +itself) is provided for convenience. The following expression will +fetch and build the latest version of this package: #+begin_src nix import (fetchTarball "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz") {} @@ -93,8 +101,9 @@ nix-env -if "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz" =gradle2nix= is not yet packaged in =nixpkgs= itself, but work is [[https://github.com/NixOS/nixpkgs/pull/77422][in progress]]. -The [[./gradle.nix][buildGradlePackage]] function is provided via the -=gradle2nix.passthru.buildGradlePackage= attribute. +The [[./nix/build-gradle-package.nix][buildGradlePackage]] function +is provided via the =gradle2nix.passthru.buildGradlePackage= +attribute. #+begin_src nix { pkgs ? import {} }: @@ -106,23 +115,24 @@ gradle2nix.buildGradlePackage { pname = "my-package"; version = "1.0"; lockFile = ./gradle.lock; - gradleFlags = [ "installDist" ]; + gradleInstallFlags = [ "installDist" ]; # ... } #+end_src *** Flake -A [[./flake.nix][flake.nix]] is provided for those using [[https://nixos.wiki/wiki/Flakes][Nix flakes]]. For example, the -following will build and run =gradle2nix= with the arguments provided -after =--=: +A [[./flake.nix][flake.nix]] is provided for those using +[[https://nixos.wiki/wiki/Flakes][Nix flakes]]. For example, the +following will build and run =gradle2nix= with the arguments +provided after =--=: #+begin_example nix run github:tadfisher/gradle2nix -- --help #+end_example -The [[./gradle.nix][buildGradlePackage]] function is provided via the -=builders= output. +The [[./nix/build-gradle-package.nix][buildGradlePackage]] function +is provided via the =builders= output. #+begin_src nix { @@ -134,7 +144,7 @@ The [[./gradle.nix][buildGradlePackage]] function is provided via the pname = "my-package"; version = "1.0"; lockFile = ./gradle.lock; - gradleFlags = [ "installDist" ]; + gradleInstallFlags = [ "installDist" ]; # ... }; }; @@ -169,12 +179,12 @@ Arguments: Extra arguments to pass to Gradle #+end_example -Simply running =gradle2nix= in the root directory of a project should -be enough for most projects. This will produce two files, by default -called =gradle.lock= and =gradle.nix=, which contain the -pinned dependencies for the project and a standard build expression -which can be imported or called by other Nix expressions. An example -of such an expression can be found in this project's [[./gradle2nix.nix][gradle2nix.nix]]. +Simply running =gradle2nix= in the root directory of a project +should be enough for most projects. This will produce a lock file, +by default called =gradle.lock=, which contains the pinned +dependencies for the project. An example of a build expression using +this lock file can be found in this project's +[[./default.nix][default.nix]]. *** For packagers @@ -211,16 +221,203 @@ gradle2nix --gradle-home=`nix eval nixpkgs#gradle.outPath`/lib/gradle gradle2nix --gradle-wrapper=8.7 #+end_example +** Reference + +*** =buildGradlePackage= + +This function is a convenience wrapper around =stdenv.mkDerivation= +that simplifies building Gradle projects with the lock files +produced by =gradle2nix=. It performs the following: + +1. Applies [[#gradleSetupHook][=gradleSetupHook=]], overriding the + required =gradle= package if specified. +2. Builds the offline Maven repository with + [[#buildMavenRepo][=buildMavenRepo=]]. +3. Sets the JDK used to run Gradle if specified. +4. Applies the offline repo to the Gradle build using an + initialization script. + +- Source: + [[./nix/build-gradle-package.nix][build-gradle-package.nix]] +- Location: + - Nix :: =gradle2nix.passthru.buildGradlePackage= + - Flake :: =builders.${system}.buildGradlePackage= + +**** Arguments to =buildGradlePackage= + +- =lockFile= :: Path to the lock file generated by =gradle2nix= + (e.g. =gradle.lock=). +- =gradlePackage= :: The Gradle package to use. Default is + =pkgs.gradle=. +- =buildJdk= :: Override the default JDK used to run Gradle itself. +- =fetchers= :: Override functions which fetch dependency + artifacts. + + See [[#fetchers][detailed documentation]] below. +- =overrides= :: Override artifacts in the offline Maven repository. + + See [[#override][detailed documentation]] below. + +In addition, this function accepts: +- All arguments to =stdenv.mkDerivation=. +- Arguments specific to =gradleSetupHook= (see + [[#gradleSetupHook][below]]). + +*** =buildMavenRepo= + +This function takes a lock file and produces a derivation which +downloads all dependencies into a Maven local repository. The +derivation provides a passthru =gradleInitScript= attribute, which +is a Gradle initialization script that can be applied using =gradle +--init-script== or placed in =$GRADLE_USER_HOME/init.d=. The init +script replaces all repositories referenced in the project with the +local repository. + +- Source: [[./nix/build-maven-repo.nix][build-maven-repo.nix]] +- Location: + - Nix :: =gradle2nix.passthru.buildMavenRepo= + - Flake :: =builders.${system}.buildMavenRepo= + +**** Arguments to =buildMavenRepo= +- =lockFile= :: Path to the lock file generated by gradle2nix (e.g. + =gradle.lock=). +- =fetchers= :: Override functions which fetch dependency + artifacts. + + See [[#fetchers][detailed documentation]] below. +- =overrides= :: Override artifacts in the offline Maven repository. + + See [[#override][detailed documentation]] below. + +*** =gradleSetupHook= + +A +[[https://nixos.org/manual/nixpkgs/unstable/#ssec-setup-hooks][setup +hook]] to simplify building Gradle packages. Overrides the default +configure, build, check, and install phases. + +To use, add =gradleSetupHook= to a derivation's =nativeBuildInputs=. + +- Source: [[./nix/setup-hook.sh][setup-hook.sh]] +- Location: + - Nix :: =gradle2nix.passthru.gradleSetupHook= + - Flake :: =packages.${system}.gradleSetupHook= + +**** Variables controlling =gradleSetupHook= +- =gradleInitScript= :: Path to an + [[https://docs.gradle.org/current/userguide/init_scripts.html][initialization + script]] used by =gradle= during all phases. +- =gradleFlags= :: Controls the arguments passed to =gradle= during + all phases. +- =gradleBuildFlags= :: Controls the arguments passed to =gradle= + during the build phase. The build phase is skipped if this is + unset. +- =gradleCheckFlags= :: Controls the arguments passed to =gradle= + during the check phase. The check phase is skipped if this is + unset. +- =gradleInstallFlags= :: Controls the arguments passed to =gradle= + during the install phase. This install phase is skipped if this is + unset. +- =dontUseGradleConfigure= :: When set to true, don't use the + predefined =gradleConfigurePhase=. This will also disable the use + of =gradleInitScript=. +- =dontUseGradleCheck= :: When set to true, don't use the predefined + =gradleCheckPhase=. +- =dontUseGradleInstall= :: When set to true, don't use the + predefined =gradleInstallPhase=. + +**** Honored variables + +The following variables commonly used by =stdenv.mkDerivation= are +honored by =gradleSetupHook=. + +- =enableParallelBuilding= +- =enableParallelChecking= +- =enableParallelInstalling= + +*** Common arguments +**** =fetchers= + +Names in this set are URL schemes such as "https" or "s3". Values +are functions which take an artifact in the form ={ url, hash }= +and fetches it into the Nix store. For example: + +#+begin_src nix +{ + s3 = { name, url, hash }: fetchs3 { + s3url = url; + # TODO This doesn't work without patching fetchs3 to accept SRI hashes + inherit name hash; + region = "us-west-2"; + credentials = { + access_key_id = "foo"; + secret_access_key = "bar"; + }; + }; +} +#+end_src + +**** =overrides= + +This is an attrset of the form: + +#+begin_src nix +{ + "${group}:${module}:${version}" = { + "${filename}" = ; + } +} +#+end_src + +The override function takes the original derivation from 'fetchers' +(e.g. the result of 'fetchurl') and produces a new derivation to +replace it. + +- Replace a dependency's JAR artifact: + + #+begin_src nix + { + "com.squareup.okio:okio:3.9.0"."okio-3.9.0.jar" = _: fetchurl { + url = "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar"; + hash = "..."; + downloadToTemp = true; + postFetch = "install -Dt $out/com/squareup/okio/okio/3.9.0/ $downloadedFile" + }; + } + #+end_src + +- Patch a JAR containing native binaries: + + #+begin_src nix + { + "com.android.tools.build:aapt2:8.5.0-rc02-11315950" = { + "aapt2-8.5.0-rc02-11315950-linux.jar" = src: runCommandCC src.name { + nativeBuildInputs = [ jdk autoPatchelfHook ]; + dontAutoPatchelf = true; + } '' + cp ${src} aapt2.jar + jar xf aapt2.jar aapt2 + chmod +x aapt2 + autoPatchelf aapt2 + jar uf aapt2.jar aapt2 + cp aapt2.jar $out + ''; + } + } + #+end_src + ** Contributing Bug reports and feature requests are encouraged. -[[https://github.com/tadfisher/gradle2nix/issues/new][Create an issue]] +[[https://github.com/tadfisher/gradle2nix/issues/new][Create an +issue]] Code contributions are also encouraged. Please review the test cases -in the [[./fixtures][fixtures]] directory and create a new one to reproduce any fixes -or test new features. See the [[./app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt][existing tests]] -for examples of testing with these fixtures. +in the [[./fixtures][fixtures]] directory and create a new one to +reproduce any fixes or test new features. See the +[[./app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt][existing +tests]] for examples of testing with these fixtures. ** License diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt index 59d8e99..399e604 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt @@ -16,7 +16,8 @@ fun connect( config: Config, projectDir: File = config.projectDir, ): ProjectConnection = - GradleConnector.newConnector() + GradleConnector + .newConnector() .apply { when (val source = config.gradleSource) { is GradleSource.Distribution -> useDistribution(source.uri) @@ -24,8 +25,7 @@ fun connect( GradleSource.Project -> useBuildDistribution() is GradleSource.Wrapper -> useGradleVersion(source.version) } - } - .forProjectDirectory(projectDir) + }.forProjectDirectory(projectDir) .connect() suspend fun ProjectConnection.buildModel(): GradleBuild = @@ -67,8 +67,7 @@ suspend fun ProjectConnection.build( "--refresh-dependencies", "--gradle-user-home=${config.gradleHome}", "--init-script=${config.appHome}/init.gradle", - ) - .apply { + ).apply { if (config.logger.stacktrace) { addArguments("--stacktrace") } @@ -80,12 +79,14 @@ suspend fun ProjectConnection.build( withSystemProperties( mapOf( "org.gradle.internal.operations.trace" to - config.outDir.toPath().resolve("debug").absolutePathString(), + config.outDir + .toPath() + .resolve("debug") + .absolutePathString(), ), ) } - } - .run( + }.run( object : ResultHandler { override fun onComplete(result: DependencySet) { continuation.resume(result) diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index 4f0f3e0..56a8da8 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -48,13 +48,19 @@ val JsonFormat = } sealed interface GradleSource { - data class Distribution(val uri: URI) : GradleSource + data class Distribution( + val uri: URI, + ) : GradleSource - data class Path(val path: File) : GradleSource + data class Path( + val path: File, + ) : GradleSource data object Project : GradleSource - data class Wrapper(val version: String) : GradleSource + data class Wrapper( + val version: String, + ) : GradleSource } enum class LogLevel { @@ -64,9 +70,10 @@ enum class LogLevel { ERROR, } -class Gradle2Nix : CliktCommand( - name = "gradle2nix", -) { +class Gradle2Nix : + CliktCommand( + name = "gradle2nix", + ) { private val tasks: List by option( "--task", "-t", @@ -93,8 +100,7 @@ class Gradle2Nix : CliktCommand( "-o", metavar = "DIR", help = "Path to write generated files", - ) - .file(canBeFile = false, canBeDir = true) + ).file(canBeFile = false, canBeDir = true) .defaultLazy("") { projectDir } internal val lockFile: String by option( @@ -133,8 +139,7 @@ class Gradle2Nix : CliktCommand( private val logLevel: LogLevel by option( "--log", help = "Print messages with this priority or higher", - ) - .enum(key = { it.name.lowercase() }) + ).enum(key = { it.name.lowercase() }) .default(LogLevel.INFO, "info") private val dumpEvents: Boolean by option( @@ -192,7 +197,9 @@ class Gradle2Nix : CliktCommand( addAll(root.editableBuilds) } builds.mapNotNull { build -> - build.rootProject.projectDirectory.resolve("buildSrc").takeIf { it.exists() } + build.rootProject.projectDirectory + .resolve("buildSrc") + .takeIf { it.exists() } } } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt index 3e1f62f..229eef0 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Process.kt @@ -8,8 +8,8 @@ import kotlin.io.encoding.ExperimentalEncodingApi fun processDependencies( config: Config, dependencySets: Iterable, -): Env { - return buildMap> { +): Env = + buildMap> { for (dependencySet in dependencySets) { val env = dependencySet.toEnv() @@ -40,16 +40,14 @@ fun processDependencies( artifacts.toSortedMap() }.toSortedMap(coordinatesComparator) .mapKeys { (coordinates, _) -> coordinates.id } -} -private fun DependencySet.toEnv(): Map> { - return dependencies.associate { dep -> +private fun DependencySet.toEnv(): Map> = + dependencies.associate { dep -> dep.coordinates to dep.artifacts.associate { it.name to Artifact(it.url, it.hash.toSri()) } } -} @OptIn(ExperimentalEncodingApi::class, ExperimentalStdlibApi::class) internal fun String.toSri(): String = diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Version.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Version.kt index 89df247..a898884 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Version.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Version.kt @@ -2,7 +2,11 @@ package org.nixos.gradle2nix import java.util.concurrent.ConcurrentHashMap -class Version(val source: String, val parts: List, base: Version?) : Comparable { +class Version( + val source: String, + val parts: List, + base: Version?, +) : Comparable { private val base: Version val numericParts: List diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt b/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt index e07c275..a8975ee 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt @@ -3,45 +3,46 @@ package org.nixos.gradle2nix import io.kotest.core.extensions.install import io.kotest.core.spec.style.FunSpec -class GoldenTest : FunSpec({ - install(MavenRepo) +class GoldenTest : + FunSpec({ + install(MavenRepo) - context("basic") { - golden("basic/basic-java-project") - golden("basic/basic-kotlin-project") - } - context("buildsrc") { - golden("buildsrc/plugin-in-buildsrc") - } - context("dependency") { - golden("dependency/classifier") - golden("dependency/maven-bom") - golden("dependency/snapshot") - golden("dependency/snapshot-dynamic") - golden("dependency/snapshot-redirect") - } - context("included-build") { - golden("included-build") - } - context("integration") { - golden("integration/settings-buildscript") - } - context("ivy") { - golden("ivy/basic") - } - context("plugin") { - golden("plugin/resolves-from-default-repo") - } - // FIXME Need s3mock or similar to generate golden data. - xcontext("s3") { - golden("s3/maven") - golden("s3/maven-snapshot") - } - context("settings") { - golden("settings/buildscript") - golden("settings/dependency-resolution-management") - } - context("subprojects") { - golden("subprojects/multi-module") - } -}) + context("basic") { + golden("basic/basic-java-project") + golden("basic/basic-kotlin-project") + } + context("buildsrc") { + golden("buildsrc/plugin-in-buildsrc") + } + context("dependency") { + golden("dependency/classifier") + golden("dependency/maven-bom") + golden("dependency/snapshot") + golden("dependency/snapshot-dynamic") + golden("dependency/snapshot-redirect") + } + context("included-build") { + golden("included-build") + } + context("integration") { + golden("integration/settings-buildscript") + } + context("ivy") { + golden("ivy/basic") + } + context("plugin") { + golden("plugin/resolves-from-default-repo") + } + // FIXME Need s3mock or similar to generate golden data. + xcontext("s3") { + golden("s3/maven") + golden("s3/maven-snapshot") + } + context("settings") { + golden("settings/buildscript") + golden("settings/dependency-resolution-management") + } + context("subprojects") { + golden("subprojects/multi-module") + } + }) diff --git a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt index c92b456..2f55b52 100644 --- a/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt +++ b/app/src/test/kotlin/org/nixos/gradle2nix/TestUtil.kt @@ -47,9 +47,7 @@ private val json = val testLogger = Logger(logLevel = LogLevel.DEBUG, stacktrace = true) -fun fixture(path: String): File { - return Paths.get("../fixtures", path).toFile() -} +fun fixture(path: String): File = Paths.get("../fixtures", path).toFile() @OptIn(ExperimentalKotest::class, ExperimentalSerializationApi::class, KotestInternal::class) suspend fun TestScope.fixture( @@ -60,7 +58,8 @@ suspend fun TestScope.fixture( val tmp = Paths.get("build/tmp/gradle2nix").apply { toFile().mkdirs() } val baseDir = Paths.get("../fixtures/projects", project).toFile() val children = - baseDir.listFiles(FileFilter { it.isDirectory && (it.name == "groovy" || it.name == "kotlin") }) + baseDir + .listFiles(FileFilter { it.isDirectory && (it.name == "groovy" || it.name == "kotlin") }) ?.toList() val cases = if (children.isNullOrEmpty()) { @@ -175,8 +174,8 @@ object MavenRepo : MountableExtension, return tryStart(3).also { this.server = it } } - private fun tryStart(attempts: Int): NettyApplicationEngine { - return try { + private fun tryStart(attempts: Int): NettyApplicationEngine = + try { val p = config.port ?: Random.nextInt(10000, 65000) val s = embeddedServer(Netty, port = p, host = config.host) { @@ -202,7 +201,6 @@ object MavenRepo : MountableExtension, } catch (e: Throwable) { if (config.port == null && attempts > 0) tryStart(attempts - 1) else throw e } - } override suspend fun afterSpec(spec: Spec) { server?.stop() diff --git a/default.nix b/default.nix index 4151b21..f5a1b7e 100644 --- a/default.nix +++ b/default.nix @@ -5,9 +5,16 @@ with pkgs; let - buildMavenRepo = callPackage ./maven-repo.nix { }; + buildMavenRepo = callPackage ./nix/build-maven-repo.nix { }; - buildGradlePackage = callPackage ./gradle.nix { inherit buildMavenRepo; }; + gradleSetupHook = makeSetupHook { + name = "gradle-setup-hook"; + propagatedBuildInputs = [ gradle ]; + } ./nix/setup-hook.sh; + + buildGradlePackage = callPackage ./nix/build-gradle-package.nix { + inherit buildMavenRepo gradleSetupHook; + }; gradle2nix = buildGradlePackage { pname = "gradle2nix"; @@ -30,9 +37,9 @@ let }; }; - gradleFlags = [ "installDist" ]; + gradleInstallFlags = [ ":app:installDist" ]; - installPhase = '' + postInstall = '' mkdir -p $out/{bin,/lib/gradle2nix} cp -r app/build/install/gradle2nix/* $out/lib/gradle2nix/ rm $out/lib/gradle2nix/bin/gradle2nix.bat @@ -40,7 +47,7 @@ let ''; passthru = { - inherit buildGradlePackage buildMavenRepo; + inherit buildGradlePackage buildMavenRepo gradleSetupHook; }; meta = with lib; { diff --git a/flake.lock b/flake.lock index 9336b3f..31d4b67 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1716769173, - "narHash": "sha256-7EXDb5WBw+d004Agt+JHC/Oyh/KTUglOaQ4MNjBbo5w=", + "lastModified": 1718160348, + "narHash": "sha256-9YrUjdztqi4Gz8n3mBuqvCkMo4ojrA6nASwyIKWMpus=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9ca3f649614213b2aaf5f1e16ec06952fe4c2632", + "rev": "57d6973abba7ea108bac64ae7629e7431e0199b6", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 06633ff..c3b78bf 100644 --- a/flake.nix +++ b/flake.nix @@ -20,15 +20,15 @@ inherit (nixpkgs) lib; in { - builders = rec { - buildMavenRepo = pkgs.callPackage ./maven-repo.nix { }; - buildGradlePackage = pkgs.callPackage ./gradle.nix { inherit buildMavenRepo; }; - default = buildGradlePackage; + builders = { + inherit (self.packages.${system}.gradle2nix) buildGradlePackage buildMavenRepo; + default = self.packages.${system}.buildGradlePackage; }; - packages = rec { + packages = { + inherit (self.packages.${system}.gradle2nix) gradleSetupHook; gradle2nix = pkgs.callPackage ./default.nix { }; - default = gradle2nix; + default = self.packages.${system}.gradle2nix; }; apps = rec { diff --git a/gradle.nix b/gradle.nix deleted file mode 100644 index b505770..0000000 --- a/gradle.nix +++ /dev/null @@ -1,238 +0,0 @@ -# This file is generated by gradle2nix. -# -# Example usage (e.g. in default.nix): -# -# with (import {}); -# let -# buildGradle = callPackage ./gradle.nix {}; -# in -# buildGradle { -# lockFile = ./gradle.lock; -# -# src = ./.; -# -# gradleFlags = [ "installDist" ]; -# -# installPhase = '' -# mkdir -p $out -# cp -r app/build/install/myproject $out -# ''; -# } - -{ - lib, - stdenv, - gradle, - buildMavenRepo, - writeText, -}: - -let - defaultGradle = gradle; -in - -{ - # Path to the lockfile generated by gradle2nix (e.g. gradle.lock). - lockFile ? null, - pname ? "project", - version ? null, - enableParallelBuilding ? true, - # The Gradle package to use. Default is 'pkgs.gradle'. - gradle ? defaultGradle, - # Arguments to Gradle used to build the project in buildPhase. - gradleFlags ? [ "build" ], - # Enable debugging for the Gradle build; this will cause Gradle to run - # a debug server and wait for a JVM debugging client to attach. - enableDebug ? false, - # Additional code to run in the Gradle init script (init.gradle). - extraInit ? "", - # Override the default JDK used to run Gradle itself. - buildJdk ? null, - # Override functions which fetch dependency artifacts. - # Keys in this set are URL schemes such as "https" or "s3". - # Values are functions which take a dependency in the form - # `{ urls, hash }` and fetch into the Nix store. For example: - # - # { - # s3 = { name, urls, hash }: fetchs3 { - # s3url = builtins.head urls; - # # TODO This doesn't work without patching fetchs3 to accept SRI hashes - # inherit name hash; - # region = "us-west-2"; - # credentials = { - # access_key_id = "foo"; - # secret_access_key = "bar"; - # }; - # }; - # } - fetchers ? { }, - # Overlays for dependencies in the offline Maven repository. - # - # Acceps an attrset of dependencies (usually parsed from 'lockFile'), and produces an attrset - # containing dependencies to merge into the final set. - # - # The attrset is of the form: - # - # { - # "${group}:${module}:${version}" = ; - # # ... - # } - # - # A dependency derivation unpacks multiple source files into a single Maven-style directory named - # "${out}/${groupPath}/${module}/${version}/", where 'groupPath' is the dependency group ID with dot - # characters ('.') replaced by the path separator ('/'). - # - # Examples: - # - # 1. Add or replace a dependency with a single JAR file: - # - # (_: { - # "com.squareup.okio:okio:3.9.0" = fetchurl { - # url = "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar"; - # hash = "..."; - # downloadToTemmp = true; - # postFetch = "install -Dt $out/com/squareup/okio/okio/3.9.0/ $downloadedFile" - # }; - # }) - # - # 2. Remove a dependency entirely: - # - # # This works because the result is filtered for values that are derivations. - # (_: { - # "org.apache.log4j:core:2.23.1" = null; - # }) - overlays ? [ ], - ... -}@args: - -let - inherit (builtins) removeAttrs; - - inherit (lib) versionAtLeast versionOlder; - - offlineRepo = buildMavenRepo { - inherit - lockFile - pname - version - fetchers - overlays - ; - }; - - initScript = writeText "init.gradle" '' - import org.gradle.util.GradleVersion - - static boolean versionAtLeast(String version) { - return GradleVersion.current() >= GradleVersion.version(version) - } - - static void configureRepos(RepositoryHandler repositories) { - repositories.configureEach { ArtifactRepository repo -> - if (repo instanceof MavenArtifactRepository) { - repo.setArtifactUrls(new HashSet()) - repo.url 'file:${offlineRepo}' - repo.metadataSources { - gradleMetadata() - mavenPom() - artifact() - } - } else if (repo instanceof IvyArtifactRepository) { - repo.url 'file:${offlineRepo}' - repo.layout('maven') - repo.metadataSources { - gradleMetadata() - ivyDescriptor() - artifact() - } - } else if (repo instanceof UrlArtifactRepository) { - repo.url 'file:/homeless-shelter' - } - } - } - - beforeSettings { settings -> - configureRepos(settings.pluginManagement.repositories) - configureRepos(settings.buildscript.repositories) - if (versionAtLeast("6.8")) { - configureRepos(settings.dependencyResolutionManagement.repositories) - } - } - - beforeProject { project -> - configureRepos(project.buildscript.repositories) - configureRepos(project.repositories) - } - - ${extraInit} - ''; - - buildGradlePackage = stdenv.mkDerivation ( - finalAttrs: - { - - inherit - buildJdk - enableParallelBuilding - enableDebug - gradle - gradleFlags - pname - version - ; - - dontStrip = true; - - nativeBuildInputs = [ finalAttrs.gradle ]; - - buildPhase = - let - finalGradleFlags = - [ - "--console=plain" - "--no-build-cache" - "--no-configuration-cache" - "--no-daemon" - "--no-watch-fs" - "--offline" - ] - ++ lib.optional (finalAttrs.buildJdk != null) "-Dorg.gradle.java.home=${finalAttrs.buildJdk.home}" - ++ lib.optional finalAttrs.enableDebug "-Dorg.gradle.debug=true" - ++ lib.optional finalAttrs.enableParallelBuilding "--parallel" - ++ lib.optional (versionAtLeast finalAttrs.gradle.version "8.0") "--init-script=${initScript}" - ++ finalAttrs.gradleFlags; - in - '' - runHook preBuild - - ( - set -eux - - export NIX_OFFLINE_REPO='${offlineRepo}' - export GRADLE_USER_HOME="$(mktemp -d)" - - ${lib.optionalString (versionOlder finalAttrs.gradle.version "8.0") '' - # Work around https://github.com/gradle/gradle/issues/1055 - mkdir -p "$GRADLE_USER_HOME/init.d" - ln -s ${initScript} "$GRADLE_USER_HOME/init.d/nix-init.gradle" - ''} - - gradle ${builtins.toString finalGradleFlags} - ) - - runHook postBuild - ''; - - passthru = { - inherit offlineRepo; - }; - } - // removeAttrs args [ - "lockFile" - "extraInit" - "fetchers" - "overlays" - ] - ); -in -buildGradlePackage diff --git a/nix/build-gradle-package.nix b/nix/build-gradle-package.nix new file mode 100644 index 0000000..a2e0ce0 --- /dev/null +++ b/nix/build-gradle-package.nix @@ -0,0 +1,145 @@ +# This file is generated by gradle2nix. +# +# Example usage (e.g. in default.nix): +# +# with (import {}); +# let +# buildGradle = callPackage ./gradle.nix {}; +# in +# buildGradle { +# lockFile = ./gradle.lock; +# +# src = ./.; +# +# gradleFlags = [ "installDist" ]; +# +# installPhase = '' +# mkdir -p $out +# cp -r app/build/install/myproject $out +# ''; +# } + +{ + lib, + stdenv, + gradle, + buildMavenRepo, + gradleSetupHook, + writeText, +}: + +{ + # Path to the lockfile generated by gradle2nix (e.g. gradle.lock). + lockFile ? null, + pname ? "project", + version ? null, + # The Gradle package to use. Default is 'pkgs.gradle'. + gradlePackage ? gradle, + # Override the default JDK used to run Gradle itself. + buildJdk ? null, + # Override functions which fetch dependency artifacts. + # Names in this set are URL schemes such as "https" or "s3". + # Values are functions which take a dependency in the form + # `{ urls, hash }` and fetch into the Nix store. For example: + # + # { + # s3 = { name, urls, hash }: fetchs3 { + # s3url = builtins.head urls; + # # TODO This doesn't work without patching fetchs3 to accept SRI hashes + # inherit name hash; + # region = "us-west-2"; + # credentials = { + # access_key_id = "foo"; + # secret_access_key = "bar"; + # }; + # }; + # } + fetchers ? { }, + # Override artifacts in the offline Maven repository. + # + # This is an attrset is of the form: + # + # { + # "${group}:${module}:${version}" = { + # "${filename}" = ; + # } + # } + # + # The override function takes the original derivation from 'fetchers' (e.g. the result of + # 'fetchurl') and produces a new derivation to replace it. + # + # Examples: + # + # 1. Replace a dependency's JAR artifact: + # + # { + # "com.squareup.okio:okio:3.9.0"."okio-3.9.0.jar" = _: fetchurl { + # url = "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar"; + # hash = "..."; + # downloadToTemp = true; + # postFetch = "install -Dt $out/com/squareup/okio/okio/3.9.0/ $downloadedFile" + # }; + # } + # + # 2. Patch a JAR containing native binaries: + # + # { + # "com.android.tools.build:aapt2:8.5.0-rc02-11315950" = { + # "aapt2-8.5.0-rc02-11315950-linux.jar" = src: runCommandCC src.name { + # nativeBuildInputs = [ jdk autoPatchelfHook ]; + # dontAutoPatchelf = true; + # } '' + # cp ${src} aapt2.jar + # jar xf aapt2.jar aapt2 + # chmod +x aapt2 + # autoPatchelf aapt2 + # jar uf aapt2.jar aapt2 + # cp aapt2.jar $out + # ''; + # } + # } + overrides ? { }, + ... +}@args: + +let + inherit (builtins) removeAttrs; + + gradleSetupHook' = gradleSetupHook.overrideAttrs (_: { + propagatedBuildInputs = [ gradlePackage ]; + }); + + offlineRepo = + if lockFile != null then buildMavenRepo { inherit lockFile fetchers overrides; } else null; + + buildGradlePackage = stdenv.mkDerivation ( + finalAttrs: + { + + inherit buildJdk pname version; + + inherit (offlineRepo) gradleInitScript; + + dontStrip = true; + + nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ gradleSetupHook' ]; + + gradleFlags = + [ "--console=plain" ] + ++ lib.optional (finalAttrs.buildJdk != null) "-Dorg.gradle.java.home=${finalAttrs.buildJdk.home}"; + + passthru = + lib.optionalAttrs (offlineRepo != null) { inherit offlineRepo; } // (args.passthru or { }); + } + // removeAttrs args [ + "gradle" + "gradleInitScript" + "lockFile" + "fetchers" + "nativeBuildInputs" + "overlays" + "passthru" + ] + ); +in +buildGradlePackage diff --git a/maven-repo.nix b/nix/build-maven-repo.nix similarity index 56% rename from maven-repo.nix rename to nix/build-maven-repo.nix index 2a13615..cdf184b 100644 --- a/maven-repo.nix +++ b/nix/build-maven-repo.nix @@ -2,16 +2,15 @@ lib, stdenv, fetchurl, + substitute, symlinkJoin, }: { # Path to the lockfile generated by gradle2nix (e.g. gradle.lock). lockFile, - pname ? "project", - version ? null, # Override functions which fetch dependency artifacts. - # Keys in this set are URL schemes such as "https" or "s3". + # Names in this set are URL schemes such as "https" or "s3". # Values are functions which take a dependency in the form # `{ urls, hash }` and fetch into the Nix store. For example: # @@ -28,42 +27,50 @@ # }; # } fetchers ? { }, - # Overlays for dependencies in the offline Maven repository. + # Override artifacts in the offline Maven repository. # - # Acceps an attrset of dependencies (usually parsed from 'lockFile'), and produces an attrset - # containing dependencies to merge into the final set. - # - # The attrset is of the form: + # This is an attrset is of the form: # # { - # "${group}:${module}:${version}" = ; - # # ... + # "${group}:${module}:${version}" = { + # "${filename}" = ; + # } # } # - # A dependency derivation unpacks multiple source files into a single Maven-style directory named - # "${out}/${groupPath}/${module}/${version}/", where 'groupPath' is the dependency group ID with dot - # characters ('.') replaced by the path separator ('/'). + # The override function takes the original derivation from 'fetchers' (e.g. the result of + # 'fetchurl') and produces a new derivation to replace it. # # Examples: # - # 1. Add or replace a dependency with a single JAR file: + # 1. Replace a dependency's JAR artifact: # - # (_: { - # "com.squareup.okio:okio:3.9.0" = fetchurl { + # { + # "com.squareup.okio:okio:3.9.0"."okio-3.9.0.jar" = _: fetchurl { # url = "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar"; # hash = "..."; - # downloadToTemmp = true; + # downloadToTemp = true; # postFetch = "install -Dt $out/com/squareup/okio/okio/3.9.0/ $downloadedFile" # }; - # }) + # } # - # 2. Remove a dependency entirely: + # 2. Patch a JAR containing native binaries: # - # # This works because the result is filtered for values that are derivations. - # (_: { - # "org.apache.log4j:core:2.23.1" = null; - # }) - overlays ? [ ], + # { + # "com.android.tools.build:aapt2:8.5.0-rc02-11315950" = { + # "aapt2-8.5.0-rc02-11315950-linux.jar" = src: runCommandCC src.name { + # nativeBuildInputs = [ jdk autoPatchelfHook ]; + # dontAutoPatchelf = true; + # } '' + # cp ${src} aapt2.jar + # jar xf aapt2.jar aapt2 + # chmod +x aapt2 + # autoPatchelf aapt2 + # jar uf aapt2.jar aapt2 + # cp aapt2.jar $out + # ''; + # } + # } + overrides ? { }, }: let @@ -116,25 +123,28 @@ let } // fetchers; fetch = - name: + coords: overrides: name: { url, hash }: let scheme = head (builtins.match "([a-z0-9+.-]+)://.*" url); fetch' = getAttr scheme fetchers'; + artifact = fetch' { inherit url hash; }; + override = overrides.name or lib.id; in - fetch' { inherit url hash; }; + override artifact; mkModule = id: artifacts: let coords = toCoordinates id; modulePath = "${replaceStrings [ "." ] [ "/" ] coords.group}/${coords.module}/${coords.version}"; + moduleOverrides = overrides.${id} or { }; in stdenv.mkDerivation { pname = sanitizeDerivationName "${coords.group}-${coords.module}"; version = coords.uniqueVersion; - srcs = mapAttrsToList fetch artifacts; + srcs = mapAttrsToList (fetch coords moduleOverrides) artifacts; dontPatch = true; dontConfigure = true; @@ -156,34 +166,24 @@ let allowSubstitutes = false; }; - # Intermediate dependency spec. - # - # We want to allow overriding dependencies via the 'dependencies' function, - # so we pass an intermediate set that maps each Maven coordinate to the - # derivation created with 'mkModule'. This allows users extra flexibility - # to do things like patching native libraries with patchelf or replacing - # artifacts entirely. - lockedDependencies = - final: - if lockFile == null then - { } - else - let - lockedDependencySpecs = fromJSON (readFile lockFile); - in - mapAttrs mkModule lockedDependencySpecs; - - finalDependencies = + modulePaths = let - composedExtension = lib.composeManyExtensions overlays; - extended = lib.extends composedExtension lockedDependencies; - fixed = lib.fix extended; + dependencies = fromJSON (readFile lockFile); + modules = mapAttrs mkModule dependencies; in - filter lib.isDerivation (attrValues fixed); - - offlineRepo = symlinkJoin { - name = if version != null then "${pname}-${version}-gradle-repo" else "${pname}-gradle-repo"; - paths = finalDependencies; + filter lib.isDerivation (attrValues modules); + + mavenRepo = symlinkJoin { + name = "gradle-maven-repo"; + paths = modulePaths; + passthru.gradleInitScript = substitute { + src = ./init.gradle; + substitutions = [ + "--replace" + "@mavenRepo@" + "${mavenRepo}" + ]; + }; }; in -offlineRepo +mavenRepo diff --git a/nix/init.gradle b/nix/init.gradle new file mode 100644 index 0000000..737a7a7 --- /dev/null +++ b/nix/init.gradle @@ -0,0 +1,42 @@ +import org.gradle.util.GradleVersion + +static boolean versionAtLeast(String version) { + return GradleVersion.current() >= GradleVersion.version(version) +} + +static void configureRepos(RepositoryHandler repositories) { + repositories.configureEach { ArtifactRepository repo -> + if (repo instanceof MavenArtifactRepository) { + repo.setArtifactUrls(new HashSet()) + repo.url 'file:@mavenRepo@' + repo.metadataSources { + gradleMetadata() + mavenPom() + artifact() + } + } else if (repo instanceof IvyArtifactRepository) { + repo.url 'file:@mavenRepo@' + repo.layout('maven') + repo.metadataSources { + gradleMetadata() + ivyDescriptor() + artifact() + } + } else if (repo instanceof UrlArtifactRepository) { + repo.url 'file:/homeless-shelter' + } + } +} + +beforeSettings { settings -> + configureRepos(settings.pluginManagement.repositories) + configureRepos(settings.buildscript.repositories) + if (versionAtLeast("6.8")) { + configureRepos(settings.dependencyResolutionManagement.repositories) + } +} + +beforeProject { project -> + configureRepos(project.buildscript.repositories) + configureRepos(project.repositories) +} diff --git a/nix/setup-hook.sh b/nix/setup-hook.sh new file mode 100644 index 0000000..c16d28e --- /dev/null +++ b/nix/setup-hook.sh @@ -0,0 +1,125 @@ +# shellcheck shell=bash disable=SC2206,SC2155 + +gradleConfigurePhase() { + runHook preConfigure + + if ! [[ -v enableParallelBuilding ]]; then + enableParallelBuilding=1 + echo "gradle: enabled parallel building" + fi + + if ! [[ -v enableParallelChecking ]]; then + enableParallelChecking=1 + echo "gradle: enabled parallel checking" + fi + + if ! [[ -v enableParallelInstalling ]]; then + enableParallelInstalling=1 + echo "gradle: enabled parallel installing" + fi + + export GRADLE_USER_HOME="$(mktemp -d)" + + if [ -n "$gradleInitScript" ]; then + if [ ! -f "$gradleInitScript" ]; then + echo "gradleInitScript is not a file path: $gradleInitScript" + exit 1 + fi + mkdir -p "$GRADLE_USER_HOME/init.d" + ln -s "$gradleInitScript" "$GRADLE_USER_HOME/init.d" + fi + + runHook postConfigure +} + +gradleBuildPhase() { + runHook preBuild + + if [ -z "${gradleBuildFlags:-}" ] && [ -z "${gradleBuildFlagsArray[*]}" ]; then + echo "gradleBuildFlags is not set, doing nothing" + else + local flagsArray=( + $gradleFlags "${gradleFlagsArray[@]}" + $gradleBuildFlags "${gradleBuildFlagsArray[@]}" + ) + + if [ -n "$enableParallelBuilding" ]; then + flagsArray+=(--parallel --max-workers ${NIX_BUILD_CORES}) + else + flagsArray+=(--no-parallel) + fi + + echoCmd 'gradleBuildPhase flags' "${flagsArray[@]}" + + gradle "${flagsArray[@]}" + fi + + runHook postBuild +} + +gradleCheckPhase() { + runHook preCheck + + if [ -z "${gradleCheckFlags:-}" ] && [ -z "${gradleCheckFlagsArray[*]}" ]; then + echo "gradleCheckFlags is not set, doing nothing" + else + local flagsArray=( + $gradleFlags "${gradleFlagsArray[@]}" + $gradleCheckFlags "${gradleCheckFlagsArray[@]}" + ${gradleCheckTasks:-check} + ) + + if [ -n "$enableParallelChecking" ]; then + flagsArray+=(--parallel --max-workers ${NIX_BUILD_CORES}) + else + flagsArray+=(--no-parallel) + fi + + echoCmd 'gradleCheckPhase flags' "${flagsArray[@]}" + + gradle "${flagsArray[@]}" + fi + + runHook postCheck +} + +gradleInstallPhase() { + runHook preInstall + + if [ -z "${gradleInstallFlags:-}" ] && [ -z "${gradleInstallFlagsArray[*]}" ]; then + echo "gradleInstallFlags is not set, doing nothing" + else + local flagsArray=( + $gradleFlags "${gradleFlagsArray[@]}" + $gradleInstallFlags "${gradleInstallFlagsArray[@]}" + ) + + if [ -n "$enableParallelInstalling" ]; then + flagsArray+=(--parallel --max-workers ${NIX_BUILD_CORES}) + else + flagsArray+=(--no-parallel) + fi + + echoCmd 'gradleInstallPhase flags' "${flagsArray[@]}" + + gradle "${flagsArray[@]}" + fi + + runHook postInstall +} + +if [ -z "${dontUseGradleConfigure-}" ] && [ -z "${configurePhase-}" ]; then + configurePhase=gradleConfigurePhase +fi + +if [ -z "${dontUseGradleBuild-}" ] && [ -z "${buildPhase-}" ]; then + buildPhase=gradleBuildPhase +fi + +if [ -z "${dontUseGradleCheck-}" ] && [ -z "${checkPhase-}" ]; then + checkPhase=gradleCheckPhase +fi + +if [ -z "${dontUseGradleInstall-}" ] && [ -z "${installPhase-}" ]; then + installPhase=gradleInstallPhase +fi diff --git a/plugin/base/src/main/kotlin/Gradle2NixPlugin.gradle69.kt b/plugin/base/src/main/kotlin/Gradle2NixPlugin.gradle69.kt index 628ff01..2b21d80 100644 --- a/plugin/base/src/main/kotlin/Gradle2NixPlugin.gradle69.kt +++ b/plugin/base/src/main/kotlin/Gradle2NixPlugin.gradle69.kt @@ -1,7 +1,8 @@ package org.nixos.gradle2nix -abstract class Gradle2NixPlugin : AbstractGradle2NixPlugin( - GradleCacheAccessFactoryBase, - DependencyExtractorApplierBase, - ResolveAllArtifactsApplierBase, -) +abstract class Gradle2NixPlugin : + AbstractGradle2NixPlugin( + GradleCacheAccessFactoryBase, + DependencyExtractorApplierBase, + ResolveAllArtifactsApplierBase, + ) diff --git a/plugin/base/src/main/kotlin/GradleCacheAccess.gradle69.kt b/plugin/base/src/main/kotlin/GradleCacheAccess.gradle69.kt index 3d48c52..ce97ff0 100644 --- a/plugin/base/src/main/kotlin/GradleCacheAccess.gradle69.kt +++ b/plugin/base/src/main/kotlin/GradleCacheAccess.gradle69.kt @@ -4,12 +4,12 @@ import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider import org.gradle.api.invocation.Gradle object GradleCacheAccessFactoryBase : GradleCacheAccessFactory { - override fun create(gradle: Gradle): GradleCacheAccess { - return GradleCacheAccessBase(gradle) - } + override fun create(gradle: Gradle): GradleCacheAccess = GradleCacheAccessBase(gradle) } -class GradleCacheAccessBase(gradle: Gradle) : GradleCacheAccess { +class GradleCacheAccessBase( + gradle: Gradle, +) : GradleCacheAccess { private val artifactCachesProvider = gradle.service() override fun useCache(block: () -> Unit) { diff --git a/plugin/common/src/main/kotlin/DependencyExtractor.kt b/plugin/common/src/main/kotlin/DependencyExtractor.kt index 3a86df6..cfdf248 100644 --- a/plugin/common/src/main/kotlin/DependencyExtractor.kt +++ b/plugin/common/src/main/kotlin/DependencyExtractor.kt @@ -116,22 +116,27 @@ private fun cachedComponentId(file: File): DependencyCoordinates? { val parts = file.invariantSeparatorsPath.split('/') if (parts.size < 6) return null if (parts[parts.size - 6] != "files-2.1") return null - return parts.dropLast(2).takeLast(3).joinToString(":").let(DefaultDependencyCoordinates::parse) + return parts + .dropLast(2) + .takeLast(3) + .joinToString(":") + .let(DefaultDependencyCoordinates::parse) } @OptIn(ExperimentalSerializationApi::class) private fun parseFileMappings(file: File): Map? = try { - Json.decodeFromStream(file.inputStream()) - .jsonObject["variants"]?.jsonArray + Json + .decodeFromStream(file.inputStream()) + .jsonObject["variants"] + ?.jsonArray ?.flatMap { it.jsonObject["files"]?.jsonArray ?: emptyList() } ?.map { it.jsonObject } ?.mapNotNull { val name = it["name"]?.jsonPrimitive?.content ?: return@mapNotNull null val url = it["url"]?.jsonPrimitive?.content ?: return@mapNotNull null if (name != url) name to url else null - } - ?.toMap() + }?.toMap() ?.takeUnless { it.isEmpty() } } catch (e: Throwable) { null diff --git a/plugin/common/src/main/kotlin/DependencySetModelBuilder.kt b/plugin/common/src/main/kotlin/DependencySetModelBuilder.kt index e5cd465..4db256d 100644 --- a/plugin/common/src/main/kotlin/DependencySetModelBuilder.kt +++ b/plugin/common/src/main/kotlin/DependencySetModelBuilder.kt @@ -17,11 +17,10 @@ class DependencySetModelBuilder( override fun buildAll( modelName: String, project: Project, - ): DependencySet { - return dependencyExtractor.buildDependencySet( + ): DependencySet = + dependencyExtractor.buildDependencySet( cacheAccess, checksumService, fileStoreAndIndexProvider, ) - } } diff --git a/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt b/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt index da1fadf..04d15a1 100644 --- a/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt +++ b/plugin/common/src/main/kotlin/ResolveAllArtifacts.kt @@ -38,14 +38,15 @@ abstract class AbstractResolveAllArtifactsApplier : ResolveAllArtifactsApplier { abstract class ResolveProjectDependenciesTask : DefaultTask() { @Internal - protected fun getReportableConfigurations(): List { - return project.configurations.filter { (it as? DeprecatableConfiguration)?.canSafelyBeResolved() ?: true } - } + protected fun getReportableConfigurations(): List = + project.configurations.filter { + (it as? DeprecatableConfiguration)?.canSafelyBeResolved() ?: true + } - protected fun Configuration.artifactFiles(): FileCollection { - return incoming.artifactView { viewConfiguration -> - viewConfiguration.isLenient = true - viewConfiguration.componentFilter { it is ModuleComponentIdentifier } - }.files - } + protected fun Configuration.artifactFiles(): FileCollection = + incoming + .artifactView { viewConfiguration -> + viewConfiguration.isLenient = true + viewConfiguration.componentFilter { it is ModuleComponentIdentifier } + }.files } diff --git a/plugin/gradle8/src/main/kotlin/DependencyExtractor.gradle8.kt b/plugin/gradle8/src/main/kotlin/DependencyExtractor.gradle8.kt index 6d360e0..6513ad1 100644 --- a/plugin/gradle8/src/main/kotlin/DependencyExtractor.gradle8.kt +++ b/plugin/gradle8/src/main/kotlin/DependencyExtractor.gradle8.kt @@ -18,12 +18,14 @@ object DependencyExtractorApplierG8 : DependencyExtractorApplier { extractor: DependencyExtractor, ) { val serviceProvider = - gradle.sharedServices.registerIfAbsent( - "nixDependencyExtractor", - DependencyExtractorService::class.java, - ) {}.map { service -> - service.apply { this.extractor = extractor } - } + gradle.sharedServices + .registerIfAbsent( + "nixDependencyExtractor", + DependencyExtractorService::class.java, + ) {} + .map { service -> + service.apply { this.extractor = extractor } + } gradle.service().onOperationCompletion(serviceProvider) } @@ -31,7 +33,9 @@ object DependencyExtractorApplierG8 : DependencyExtractorApplier { @Suppress("UnstableApiUsage") internal abstract class DependencyExtractorService : - BuildService, BuildOperationListener, AutoCloseable { + BuildService, + BuildOperationListener, + AutoCloseable { var extractor: DependencyExtractor? = null override fun started( diff --git a/plugin/gradle8/src/main/kotlin/ResolveAllArtifacts.gradle8.kt b/plugin/gradle8/src/main/kotlin/ResolveAllArtifacts.gradle8.kt index 404170b..f2f0d2e 100644 --- a/plugin/gradle8/src/main/kotlin/ResolveAllArtifacts.gradle8.kt +++ b/plugin/gradle8/src/main/kotlin/ResolveAllArtifacts.gradle8.kt @@ -23,13 +23,12 @@ abstract class ResolveProjectDependenciesTaskG8 ) : ResolveProjectDependenciesTask() { private val artifactFiles = Cached.of { artifactFiles() } - private fun artifactFiles(): FileCollection { - return objects.fileCollection().from( + private fun artifactFiles(): FileCollection = + objects.fileCollection().from( getReportableConfigurations().map { configuration -> configuration.artifactFiles() }, ) - } @TaskAction fun action() { diff --git a/plugin/gradle80/src/main/kotlin/Gradle2NixPlugin.gradle80.kt b/plugin/gradle80/src/main/kotlin/Gradle2NixPlugin.gradle80.kt index e39189f..b925142 100644 --- a/plugin/gradle80/src/main/kotlin/Gradle2NixPlugin.gradle80.kt +++ b/plugin/gradle80/src/main/kotlin/Gradle2NixPlugin.gradle80.kt @@ -1,7 +1,8 @@ package org.nixos.gradle2nix -abstract class Gradle2NixPlugin : AbstractGradle2NixPlugin( - GradleCacheAccessFactoryG80, - DependencyExtractorApplierG8, - ResolveAllArtifactsApplierG8, -) +abstract class Gradle2NixPlugin : + AbstractGradle2NixPlugin( + GradleCacheAccessFactoryG80, + DependencyExtractorApplierG8, + ResolveAllArtifactsApplierG8, + ) diff --git a/plugin/gradle80/src/main/kotlin/GradleCacheAccess.gradle80.kt b/plugin/gradle80/src/main/kotlin/GradleCacheAccess.gradle80.kt index 67cb510..db65a4e 100644 --- a/plugin/gradle80/src/main/kotlin/GradleCacheAccess.gradle80.kt +++ b/plugin/gradle80/src/main/kotlin/GradleCacheAccess.gradle80.kt @@ -4,12 +4,12 @@ import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider import org.gradle.api.invocation.Gradle object GradleCacheAccessFactoryG80 : GradleCacheAccessFactory { - override fun create(gradle: Gradle): GradleCacheAccess { - return GradleCacheAccessG80(gradle) - } + override fun create(gradle: Gradle): GradleCacheAccess = GradleCacheAccessG80(gradle) } -class GradleCacheAccessG80(gradle: Gradle) : GradleCacheAccess { +class GradleCacheAccessG80( + gradle: Gradle, +) : GradleCacheAccess { private val artifactCachesProvider = gradle.service() override fun useCache(block: () -> Unit) { diff --git a/plugin/gradle81/src/main/kotlin/Gradle2NixPlugin.gradle81.kt b/plugin/gradle81/src/main/kotlin/Gradle2NixPlugin.gradle81.kt index c4c79dd..b498ebf 100644 --- a/plugin/gradle81/src/main/kotlin/Gradle2NixPlugin.gradle81.kt +++ b/plugin/gradle81/src/main/kotlin/Gradle2NixPlugin.gradle81.kt @@ -1,7 +1,8 @@ package org.nixos.gradle2nix -abstract class Gradle2NixPlugin : AbstractGradle2NixPlugin( - GradleCacheAccessFactoryG81, - DependencyExtractorApplierG8, - ResolveAllArtifactsApplierG8, -) +abstract class Gradle2NixPlugin : + AbstractGradle2NixPlugin( + GradleCacheAccessFactoryG81, + DependencyExtractorApplierG8, + ResolveAllArtifactsApplierG8, + ) diff --git a/plugin/gradle81/src/main/kotlin/GradleCacheAccess.gradle81.kt b/plugin/gradle81/src/main/kotlin/GradleCacheAccess.gradle81.kt index d247f1a..8c1488d 100644 --- a/plugin/gradle81/src/main/kotlin/GradleCacheAccess.gradle81.kt +++ b/plugin/gradle81/src/main/kotlin/GradleCacheAccess.gradle81.kt @@ -4,12 +4,12 @@ import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider import org.gradle.api.invocation.Gradle object GradleCacheAccessFactoryG81 : GradleCacheAccessFactory { - override fun create(gradle: Gradle): GradleCacheAccess { - return GradleCacheAccessG81(gradle) - } + override fun create(gradle: Gradle): GradleCacheAccess = GradleCacheAccessG81(gradle) } -class GradleCacheAccessG81(gradle: Gradle) : GradleCacheAccess { +class GradleCacheAccessG81( + gradle: Gradle, +) : GradleCacheAccess { private val artifactCachesProvider = gradle.service() override fun useCache(block: () -> Unit) { From 9c9ef07341f5ce842dce3cab97a77852f06552fd Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Thu, 13 Jun 2024 15:42:12 -0700 Subject: [PATCH 29/34] README.org: Fix formatting --- README.org | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.org b/README.org index d55c339..cd88dee 100644 --- a/README.org +++ b/README.org @@ -15,9 +15,9 @@ Generate [[https://nixos.org/nix/][Nix]] expressions which build - [[#for-packagers][For packagers]] - [[#specifying-the-gradle-installation][Specifying the Gradle installation]] - [[#reference][Reference]] - - [[#buildGradlePackage][=buildGradlePackage=]] - - [[#buildMavenRepo][=buildMavenRepo=]] - - [[#gradleSetupHook][=gradleSetupHook=]] + - [[#buildgradlepackage][buildGradlePackage]] + - [[#buildmavenrepo][buildMavenRepo]] + - [[#gradlesetuphook][gradleSetupHook]] - [[#contributing][Contributing]] - [[#license][License]] #+END_QUOTE @@ -229,10 +229,10 @@ This function is a convenience wrapper around =stdenv.mkDerivation= that simplifies building Gradle projects with the lock files produced by =gradle2nix=. It performs the following: -1. Applies [[#gradleSetupHook][=gradleSetupHook=]], overriding the +1. Applies [[#gradlesetuphook][gradleSetupHook]], overriding the required =gradle= package if specified. 2. Builds the offline Maven repository with - [[#buildMavenRepo][=buildMavenRepo=]]. + [[#buildmavenrepo][buildMavenRepo]]. 3. Sets the JDK used to run Gradle if specified. 4. Applies the offline repo to the Gradle build using an initialization script. @@ -261,7 +261,7 @@ produced by =gradle2nix=. It performs the following: In addition, this function accepts: - All arguments to =stdenv.mkDerivation=. - Arguments specific to =gradleSetupHook= (see - [[#gradleSetupHook][below]]). + [[#gradlesetuphook][below]]). *** =buildMavenRepo= From 00e9cd4cc8c6b03038b2778fbca2104b78f9de00 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Thu, 13 Jun 2024 15:44:37 -0700 Subject: [PATCH 30/34] README.org: Fix example syntax --- README.org | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.org b/README.org index cd88dee..c9c90fd 100644 --- a/README.org +++ b/README.org @@ -402,7 +402,7 @@ replace it. jar uf aapt2.jar aapt2 cp aapt2.jar $out ''; - } + }; } #+end_src From 03c1b713ad139eb6dfc8d463b5bd348368125cf1 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Thu, 13 Jun 2024 17:44:27 -0700 Subject: [PATCH 31/34] buildMavenRepo: Fix override fn --- nix/build-maven-repo.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/build-maven-repo.nix b/nix/build-maven-repo.nix index cdf184b..c85b409 100644 --- a/nix/build-maven-repo.nix +++ b/nix/build-maven-repo.nix @@ -129,7 +129,7 @@ let scheme = head (builtins.match "([a-z0-9+.-]+)://.*" url); fetch' = getAttr scheme fetchers'; artifact = fetch' { inherit url hash; }; - override = overrides.name or lib.id; + override = overrides.${name} or lib.id; in override artifact; From b53cfa6d8e4c15bd09963f76d831818ab8c38bb5 Mon Sep 17 00:00:00 2001 From: milahu Date: Tue, 9 Jul 2024 21:49:51 +0200 Subject: [PATCH 32/34] fix links to overrides section --- README.org | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.org b/README.org index c9c90fd..b3c0ca0 100644 --- a/README.org +++ b/README.org @@ -256,7 +256,7 @@ produced by =gradle2nix=. It performs the following: See [[#fetchers][detailed documentation]] below. - =overrides= :: Override artifacts in the offline Maven repository. - See [[#override][detailed documentation]] below. + See [[#overrides][detailed documentation]] below. In addition, this function accepts: - All arguments to =stdenv.mkDerivation=. @@ -287,7 +287,7 @@ local repository. See [[#fetchers][detailed documentation]] below. - =overrides= :: Override artifacts in the offline Maven repository. - See [[#override][detailed documentation]] below. + See [[#overrides][detailed documentation]] below. *** =gradleSetupHook= From 0160c945b87ddbaed3cb0018e3c968a78c80cb4a Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Sun, 16 Jun 2024 12:22:38 -0700 Subject: [PATCH 33/34] Use lib.makeScope for consistent package resolution --- README.org | 2 +- default.nix | 63 ++++-------------------------------- flake.nix | 13 ++++---- nix/build-gradle-package.nix | 43 ++++++------------------ nix/default.nix | 15 +++++++++ nix/gradle-setup-hook.nix | 7 ++++ nix/gradle2nix.nix | 51 +++++++++++++++++++++++++++++ 7 files changed, 96 insertions(+), 98 deletions(-) create mode 100644 nix/default.nix create mode 100644 nix/gradle-setup-hook.nix create mode 100644 nix/gradle2nix.nix diff --git a/README.org b/README.org index b3c0ca0..8d06e4c 100644 --- a/README.org +++ b/README.org @@ -247,7 +247,7 @@ produced by =gradle2nix=. It performs the following: - =lockFile= :: Path to the lock file generated by =gradle2nix= (e.g. =gradle.lock=). -- =gradlePackage= :: The Gradle package to use. Default is +- =gradle= :: The Gradle package to use. Default is =pkgs.gradle=. - =buildJdk= :: Override the default JDK used to run Gradle itself. - =fetchers= :: Override functions which fetch dependency diff --git a/default.nix b/default.nix index f5a1b7e..0aa801d 100644 --- a/default.nix +++ b/default.nix @@ -2,62 +2,11 @@ pkgs ? import { }, }: -with pkgs; - let - buildMavenRepo = callPackage ./nix/build-maven-repo.nix { }; - - gradleSetupHook = makeSetupHook { - name = "gradle-setup-hook"; - propagatedBuildInputs = [ gradle ]; - } ./nix/setup-hook.sh; - - buildGradlePackage = callPackage ./nix/build-gradle-package.nix { - inherit buildMavenRepo gradleSetupHook; - }; - - gradle2nix = buildGradlePackage { - pname = "gradle2nix"; - version = "2.0.0"; - lockFile = ./gradle.lock; - - src = lib.cleanSourceWith { - filter = lib.cleanSourceFilter; - src = lib.cleanSourceWith { - filter = - path: type: - let - baseName = baseNameOf path; - in - !( - (type == "directory" && (baseName == "build" || baseName == ".idea" || baseName == ".gradle")) - || (lib.hasSuffix ".iml" baseName) - ); - src = ./.; - }; - }; - - gradleInstallFlags = [ ":app:installDist" ]; - - postInstall = '' - mkdir -p $out/{bin,/lib/gradle2nix} - cp -r app/build/install/gradle2nix/* $out/lib/gradle2nix/ - rm $out/lib/gradle2nix/bin/gradle2nix.bat - ln -sf $out/lib/gradle2nix/bin/gradle2nix $out/bin - ''; - - passthru = { - inherit buildGradlePackage buildMavenRepo gradleSetupHook; - }; - - meta = with lib; { - inherit (gradle.meta) platforms; - description = "Wrap Gradle builds with Nix"; - homepage = "https://github.com/tadfisher/gradle2nix"; - license = licenses.asl20; - maintainers = with maintainers; [ tadfisher ]; - mainProgram = "gradle2nix"; - }; - }; + scope = pkgs.callPackage ./nix { }; in -gradle2nix +scope.gradle2nix.overrideAttrs (attrs: { + passthru = (attrs.passthru or { }) // { + inherit (scope) buildGradlePackage buildMavenRepo gradleSetupHook; + }; +}) diff --git a/flake.nix b/flake.nix index c3b78bf..52e7bf5 100644 --- a/flake.nix +++ b/flake.nix @@ -17,27 +17,26 @@ system: let pkgs = nixpkgs.legacyPackages.${system}; + scope = pkgs.callPackage ./nix { }; inherit (nixpkgs) lib; in { builders = { - inherit (self.packages.${system}.gradle2nix) buildGradlePackage buildMavenRepo; + inherit (scope) buildGradlePackage buildMavenRepo; default = self.packages.${system}.buildGradlePackage; }; packages = { - inherit (self.packages.${system}.gradle2nix) gradleSetupHook; - gradle2nix = pkgs.callPackage ./default.nix { }; + inherit (scope) gradle2nix gradleSetupHook; default = self.packages.${system}.gradle2nix; }; - apps = rec { + apps = { gradle2nix = { type = "app"; - program = lib.getExe self.packages.${system}.default; + program = lib.getExe self.packages.${system}.gradle2nix; }; - - default = gradle2nix; + default = self.apps.${system}.gradle2nix; }; formatter = pkgs.writeShellScriptBin "gradle2nix-fmt" '' diff --git a/nix/build-gradle-package.nix b/nix/build-gradle-package.nix index a2e0ce0..b963c45 100644 --- a/nix/build-gradle-package.nix +++ b/nix/build-gradle-package.nix @@ -1,28 +1,6 @@ -# This file is generated by gradle2nix. -# -# Example usage (e.g. in default.nix): -# -# with (import {}); -# let -# buildGradle = callPackage ./gradle.nix {}; -# in -# buildGradle { -# lockFile = ./gradle.lock; -# -# src = ./.; -# -# gradleFlags = [ "installDist" ]; -# -# installPhase = '' -# mkdir -p $out -# cp -r app/build/install/myproject $out -# ''; -# } - { lib, stdenv, - gradle, buildMavenRepo, gradleSetupHook, writeText, @@ -31,10 +9,8 @@ { # Path to the lockfile generated by gradle2nix (e.g. gradle.lock). lockFile ? null, - pname ? "project", - version ? null, # The Gradle package to use. Default is 'pkgs.gradle'. - gradlePackage ? gradle, + gradle ? null, # Override the default JDK used to run Gradle itself. buildJdk ? null, # Override functions which fetch dependency artifacts. @@ -105,24 +81,25 @@ let inherit (builtins) removeAttrs; - gradleSetupHook' = gradleSetupHook.overrideAttrs (_: { - propagatedBuildInputs = [ gradlePackage ]; - }); - offlineRepo = if lockFile != null then buildMavenRepo { inherit lockFile fetchers overrides; } else null; buildGradlePackage = stdenv.mkDerivation ( finalAttrs: { - - inherit buildJdk pname version; + inherit buildJdk gradle; inherit (offlineRepo) gradleInitScript; dontStrip = true; - nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ gradleSetupHook' ]; + gradleSetupHook = + if (finalAttrs.gradle != null) then + gradleSetupHook.override { inherit (finalAttrs) gradle; } + else + gradleSetupHook; + + nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ finalAttrs.gradleSetupHook ]; gradleFlags = [ "--console=plain" ] @@ -137,7 +114,7 @@ let "lockFile" "fetchers" "nativeBuildInputs" - "overlays" + "overrides" "passthru" ] ); diff --git a/nix/default.nix b/nix/default.nix new file mode 100644 index 0000000..a49ce70 --- /dev/null +++ b/nix/default.nix @@ -0,0 +1,15 @@ +{ + lib, + gradle, + newScope, +}: + +lib.makeScope newScope ( + self: with self; { + inherit gradle; + buildGradlePackage = callPackage ./build-gradle-package.nix { }; + buildMavenRepo = callPackage ./build-maven-repo.nix { }; + gradleSetupHook = callPackage ./gradle-setup-hook.nix { }; + gradle2nix = callPackage ./gradle2nix.nix { }; + } +) diff --git a/nix/gradle-setup-hook.nix b/nix/gradle-setup-hook.nix new file mode 100644 index 0000000..948d72b --- /dev/null +++ b/nix/gradle-setup-hook.nix @@ -0,0 +1,7 @@ +{ makeSetupHook, gradle }: + +makeSetupHook { + name = "gradle-setup-hook"; + propagatedBuildInputs = [ gradle ]; + passthru.gradle = gradle; +} ./setup-hook.sh diff --git a/nix/gradle2nix.nix b/nix/gradle2nix.nix new file mode 100644 index 0000000..360ad9b --- /dev/null +++ b/nix/gradle2nix.nix @@ -0,0 +1,51 @@ +{ + lib, + buildGradlePackage, + buildMavenRepo, + gradle, + gradleSetupHook, +}: + +buildGradlePackage { + pname = "gradle2nix"; + version = "2.0.0"; + lockFile = ../gradle.lock; + + src = lib.cleanSourceWith { + filter = lib.cleanSourceFilter; + src = lib.cleanSourceWith { + filter = + path: type: + let + baseName = baseNameOf path; + in + !( + (type == "directory" && (baseName == "build" || baseName == ".idea" || baseName == ".gradle")) + || (lib.hasSuffix ".iml" baseName) + ); + src = ../.; + }; + }; + + gradleInstallFlags = [ ":app:installDist" ]; + + postInstall = '' + mkdir -p $out/{bin,/lib/gradle2nix} + cp -r app/build/install/gradle2nix/* $out/lib/gradle2nix/ + rm $out/lib/gradle2nix/bin/gradle2nix.bat + ln -sf $out/lib/gradle2nix/bin/gradle2nix $out/bin + ''; + + passthru = { + inherit buildGradlePackage buildMavenRepo gradleSetupHook; + }; + + meta = with lib; { + inherit (gradle.meta) platforms; + description = "Wrap Gradle builds with Nix"; + homepage = "https://github.com/tadfisher/gradle2nix"; + license = licenses.asl20; + maintainers = with maintainers; [ tadfisher ]; + mainProgram = "gradle2nix"; + }; +} From b33693bc6b6ebd1c3633435d9d0833f665fb12d1 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Tue, 16 Jul 2024 10:43:00 -0700 Subject: [PATCH 34/34] Bump Gradle to 8.8 --- flake.lock | 6 +-- gradle.lock | 48 ++++++++++++------------ gradle/libs.versions.toml | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index 31d4b67..416cbde 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718160348, - "narHash": "sha256-9YrUjdztqi4Gz8n3mBuqvCkMo4ojrA6nASwyIKWMpus=", + "lastModified": 1720957393, + "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "57d6973abba7ea108bac64ae7629e7431e0199b6", + "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", "type": "github" }, "original": { diff --git a/gradle.lock b/gradle.lock index 442b031..10fa2f8 100644 --- a/gradle.lock +++ b/gradle.lock @@ -441,38 +441,38 @@ "hash": "sha256-00QQSm7mGdplmEA8JdA6qqrw9U6WRv01EkWN9Xyarrg=" } }, - "org.gradle:gradle-tooling-api:8.7": { - "gradle-tooling-api-8.7.jar": { - "url": "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.jar", - "hash": "sha256-UjAREw062qfdwR14e/363TmgBDIAzGd7cJtPrATLhrM=" + "org.gradle:gradle-tooling-api:8.8": { + "gradle-tooling-api-8.8.jar": { + "url": "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.8/gradle-tooling-api-8.8.jar", + "hash": "sha256-h0ENaDk2pqUFQ24x1kDWaokZwNhTzhtQGJCidL101kU=" }, - "gradle-tooling-api-8.7.module": { - "url": "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.module", - "hash": "sha256-c08g/Bo2leG74FuBK7m7un/wNzQ8lCp5THbpiBdpNCg=" + "gradle-tooling-api-8.8.module": { + "url": "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.8/gradle-tooling-api-8.8.module", + "hash": "sha256-24tAcT2JWjPrNdZfPoM4nExfAQ2oUoz3Bx2xw9sAjWg=" }, - "gradle-tooling-api-8.7.pom": { - "url": "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.pom", - "hash": "sha256-Js9ia+mlUYCUZg1Vkot+NEGrQxuSkHTHc7+fL3V28/s=" + "gradle-tooling-api-8.8.pom": { + "url": "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/8.8/gradle-tooling-api-8.8.pom", + "hash": "sha256-5yDLd4bGXyamMrSmvcM0t0K4F5v8aZf78npJF0IPSaQ=" } }, - "org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.3.0": { - "gradle-kotlin-dsl-plugins-4.3.0.jar": { - "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.jar", - "hash": "sha256-+IsyeBRxXRfiD4to/wCbmrGo+8GjyRLDO4TfucEVn78=" + "org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.3.1": { + "gradle-kotlin-dsl-plugins-4.3.1.jar": { + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.1/gradle-kotlin-dsl-plugins-4.3.1.jar", + "hash": "sha256-j8X5xgrEWoeaQXdoEbWf0s5cWtXkJW8S18i+rFCkHcg=" }, - "gradle-kotlin-dsl-plugins-4.3.0.module": { - "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.module", - "hash": "sha256-wDF/LfYjmTSfi1NHpsZme9yjHMt1meBsKG/IOPxM7c0=" + "gradle-kotlin-dsl-plugins-4.3.1.module": { + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.1/gradle-kotlin-dsl-plugins-4.3.1.module", + "hash": "sha256-k+eJyXjl4QG8QXfLsnmFQSvMtpNtsA7MQeYoG4QD/F4=" }, - "gradle-kotlin-dsl-plugins-4.3.0.pom": { - "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.pom", - "hash": "sha256-d1G9LyTDRdGbRhGy5+1NZfT1YIA2iuNqpyT5X63VbDw=" + "gradle-kotlin-dsl-plugins-4.3.1.pom": { + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.1/gradle-kotlin-dsl-plugins-4.3.1.pom", + "hash": "sha256-Fr3gZfWofPRP3FD5xbYNMS9xOgwbyq4AixJItHhojAo=" } }, - "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.3.0": { - "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom": { - "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.3.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom", - "hash": "sha256-hgR9KoSpaXsVkXDj1rLL9Cpv5UCQTYdZzJ8JUsmUnXw=" + "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.3.1": { + "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.1.pom": { + "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.3.1/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.1.pom", + "hash": "sha256-Oispc8Afy2j0kx8ZbNeLAzctoWrBYmqOPWMYVkNqlOc=" } }, "org.jdom:jdom2:2.0.6.1": { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8a92b32..9686318 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -gradle = "8.7" +gradle = "8.8" junit = "5.8.2" # Intentionally using the version embedded in Gradle to reduce dependency count # See https://docs.gradle.org/current/userguide/compatibility.html#kotlin diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e7646de..6f7a6eb 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a4..b740cf1 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/.