Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
a4d85f6
basic MS graph authz implementation
richard-dennehy May 6, 2025
cfd2906
[CI] Auto commit changes from spotless
May 19, 2025
9182858
move client_secret to keystore
richard-dennehy May 20, 2025
34b6276
use JSONObjectUtils for parsing json
richard-dennehy May 20, 2025
11cd43a
(not working) attempt to use official graph SDK
richard-dennehy May 21, 2025
aae596e
WIP at least it runs; if only it didn't mysteriously hang
richard-dennehy May 22, 2025
5c337b2
WIP unit tests (for debugging the plugin)
richard-dennehy May 22, 2025
108f462
WIP at least it works against real azure
richard-dennehy May 23, 2025
c39c3f6
document assorted hacks required to get this thing working
richard-dennehy May 23, 2025
5984ada
passing IT tests
richard-dennehy May 23, 2025
219aa17
slight clean up
richard-dennehy May 23, 2025
c230ed6
[CI] Auto commit changes from spotless
May 23, 2025
6d907e5
update comment about mystery includes to be more accurate
richard-dennehy May 23, 2025
0b9a449
[CI] Auto commit changes from spotless
May 23, 2025
451a553
clean up some TODOs
richard-dennehy May 27, 2025
85d123a
[CI] Auto commit changes from spotless
May 27, 2025
a0bba42
implement unit tests
richard-dennehy May 27, 2025
bec682e
test retry handling
richard-dennehy May 28, 2025
3798b98
[CI] Auto commit changes from spotless
May 28, 2025
4552b3e
fetch transitive group membership
richard-dennehy May 28, 2025
d1c22bf
[CI] Auto commit changes from spotless
May 28, 2025
ab0c69d
support multiple test users in graph http fixture
richard-dennehy May 29, 2025
227e0d9
[CI] Auto commit changes from spotless
May 29, 2025
668c441
move manifest patching into Utils.patchJar
richard-dennehy May 29, 2025
be296be
add test for concurrent login
richard-dennehy May 29, 2025
681d095
[CI] Auto commit changes from spotless
May 29, 2025
128f954
remove hard-coded version from azure-core patcher
richard-dennehy May 29, 2025
e2cb3ca
add missing NOTICE file
richard-dennehy May 29, 2025
de8a31e
remove unused licenses
richard-dennehy May 29, 2025
48e180c
fix license mapping
richard-dennehy May 29, 2025
e856b86
rewrite azure-core jar unsigner
richard-dennehy May 30, 2025
a81018e
[CI] Auto commit changes from spotless
May 30, 2025
09ca5ca
restore missing license
richard-dennehy May 30, 2025
b44eddb
restore missing notice
richard-dennehy May 30, 2025
a7d4102
fix license mapping
richard-dennehy May 30, 2025
6e2869f
fix license mapping
richard-dennehy May 30, 2025
bdd9aa1
execute blocking graph calls on generic thread pool
richard-dennehy May 30, 2025
0ed032c
[CI] Auto commit changes from spotless
May 30, 2025
3100eeb
fetch only security group membership
richard-dennehy May 30, 2025
af348fd
Update docs/changelog/128396.yaml
richard-dennehy May 30, 2025
55fb5df
[CI] Auto commit changes from spotless
May 30, 2025
71782a9
Merge branch 'main' into microsoft-graph-implementation-sdk
richard-dennehy May 30, 2025
f5ac899
fix security thirdPartyAudit task
richard-dennehy Jun 2, 2025
9b17cb6
fix license mapping
richard-dennehy Jun 2, 2025
1f6b713
ignore IT in FIPS mode
richard-dennehy Jun 2, 2025
2c7cc90
fix build file
richard-dennehy Jun 2, 2025
fc93217
fix thirdPartyAudit
richard-dennehy Jun 2, 2025
2fc5fcd
address review comments
richard-dennehy Jun 2, 2025
64a7eb5
[CI] Auto commit changes from spotless
Jun 2, 2025
f3865b2
address review comments
richard-dennehy Jun 3, 2025
2ec60f6
[CI] Auto commit changes from spotless
Jun 3, 2025
65a751c
set default request timeout of 10 seconds
richard-dennehy Jun 5, 2025
5d9c358
[CI] Auto commit changes from spotless
Jun 5, 2025
b8581e2
cancel graph authorization tasks that are pending too long
richard-dennehy Jun 5, 2025
26d2594
[CI] Auto commit changes from spotless
Jun 5, 2025
9decc75
fix string interpolator
richard-dennehy Jun 5, 2025
612ad1f
fixup! Register missing settings
jfreden Jun 9, 2025
9af95a3
Merge remote-tracking branch 'upstream/main' into microsoft-graph-imp…
jfreden Jun 9, 2025
35e9ce4
fixup! Test issue
jfreden Jun 9, 2025
02feaa0
Merge branch 'main' into microsoft-graph-implementation-sdk
jfreden Jun 9, 2025
4c2e54d
fixup! Test
jfreden Jun 10, 2025
bfd2e09
Merge remote-tracking branch 'upstream/main' into microsoft-graph-imp…
jfreden Jun 10, 2025
e5e12ca
Move plugin to new x-pack home
jfreden Jun 11, 2025
d753954
Merge remote-tracking branch 'upstream/main' into microsoft-graph-imp…
jfreden Jun 11, 2025
35d2d62
fixup! Code review comment
jfreden Jun 11, 2025
78388f2
fixup! Add build.gradle
jfreden Jun 11, 2025
b134b33
fixup! File extension
jfreden Jun 11, 2025
b3a9ff9
fixup! File extension
jfreden Jun 11, 2025
6a41e78
fixup! File extension
jfreden Jun 11, 2025
bdf0784
fixup! License headers
jfreden Jun 11, 2025
2a9ba66
Merge remote-tracking branch 'upstream/main' into microsoft-graph-imp…
jfreden Jun 11, 2025
8a76115
fixup! Race condition in test
jfreden Jun 12, 2025
6d1821a
Merge branch 'main' into microsoft-graph-implementation-sdk
jfreden Jun 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the "Elastic License
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
* Public License v 1"; you may not use this file except in compliance with, at
* your election, the "Elastic License 2.0", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/

package org.elasticsearch.gradle.internal.dependencies.patches.azurecore;

import org.elasticsearch.gradle.internal.dependencies.patches.PatcherInfo;
import org.elasticsearch.gradle.internal.dependencies.patches.Utils;
import org.gradle.api.artifacts.transform.InputArtifact;
import org.gradle.api.artifacts.transform.TransformAction;
import org.gradle.api.artifacts.transform.TransformOutputs;
import org.gradle.api.artifacts.transform.TransformParameters;
import org.gradle.api.file.FileSystemLocation;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.Classpath;
import org.jetbrains.annotations.NotNull;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;

import static org.elasticsearch.gradle.internal.dependencies.patches.PatcherInfo.classPatcher;

public abstract class AzureCoreClassPatcher implements TransformAction<TransformParameters.None> {

private static final String JAR_FILE_TO_PATCH = "azure-core-1.55.3.jar";

private static final List<PatcherInfo> CLASS_PATCHERS = List.of(
classPatcher(
"com/azure/core/implementation/ImplUtils.class",
"7beda5bdff5ea460cfc08721a188cf07d16e0c987dae45401fca7abf4e6e6c0e",
ImplUtilsPatcher::new
)
);

@Classpath
@InputArtifact
public abstract Provider<FileSystemLocation> getInputArtifact();

@Override
public void transform(@NotNull TransformOutputs outputs) {
File inputFile = getInputArtifact().get().getAsFile();

// TODO could use a regex here so it matches regardless of JAR version
if (inputFile.getName().equals(JAR_FILE_TO_PATCH)) {
System.out.println("Patching " + inputFile.getName());
// This would be cleaner if gradle artifact transformers supported temp files https://github.com/gradle/gradle/issues/30440.
// We need to patch (or delete) the Manifest file as it contains signatures for the class files - which obviously get
// invalidated when we patch the bytecode - but the existing patch tools only work on class files, so we unfortunately need to
// duplicate the loop here. We _also_ need to create a "temporary" jar to write (or not) the patched manifest and the rest of
// the jar contents.
// TODO we could possibly update `Utils.patchJar` to enable patching manifests etc and most of this would be significantly
// simplified
File firstOutputFile = outputs.file(inputFile.getName().replace(".jar", "-half-patched"));

try (
JarFile jarFile = new JarFile(inputFile);
JarOutputStream jos = new JarOutputStream(new FileOutputStream(firstOutputFile))
) {
Enumeration<JarEntry> entries = jarFile.entries();
while (entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
String entryName = entry.getName();

if (entryName.endsWith("MANIFEST.MF") == false) {
jos.putNextEntry(new JarEntry(entryName));
try (InputStream is = jarFile.getInputStream(entry)) {
is.transferTo(jos);
}
jos.closeEntry();
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}

File secondOutputFile = outputs.file(inputFile.getName().replace(".jar", "-patched.jar"));
Utils.patchJar(firstOutputFile, secondOutputFile, CLASS_PATCHERS);
} else {
System.out.println("Skipping " + inputFile.getName());
outputs.file(getInputArtifact());
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the "Elastic License
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
* Public License v 1"; you may not use this file except in compliance with, at
* your election, the "Elastic License 2.0", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/

package org.elasticsearch.gradle.internal.dependencies.patches.azurecore;

import org.elasticsearch.gradle.internal.dependencies.patches.hdfs.MethodReplacement;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;

class ImplUtilsPatcher extends ClassVisitor {
ImplUtilsPatcher(ClassVisitor classVisitor) {
super(Opcodes.ASM9, classVisitor);
}

public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) {
MethodVisitor mv = super.visitMethod(access, name, descriptor, signature, exceptions);
// `addShutdownHook` invokes `java.lang.Runtime.addShutdownHook`, which is forbidden (i.e. it will throw an Entitlements error).
// We replace the method body here with `return null`.
if (name.equals("addShutdownHookSafely")) {
return new MethodReplacement(mv, () -> {
mv.visitInsn(Opcodes.ACONST_NULL);
mv.visitInsn(Opcodes.ARETURN);
});
}
return mv;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class MethodReplacement extends MethodVisitor {
private final MethodVisitor delegate;
private final Runnable bodyWriter;

MethodReplacement(MethodVisitor delegate, Runnable bodyWriter) {
public MethodReplacement(MethodVisitor delegate, Runnable bodyWriter) {
super(Opcodes.ASM9);
this.delegate = delegate;
this.bodyWriter = bodyWriter;
Expand Down
110 changes: 110 additions & 0 deletions gradle/verification-metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -96,21 +96,41 @@
<sha256 value="9f39244d3cc201a6fd69eb5800d9951624bcac548aee3b51efd642e4acbf457c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.azure" name="azure-core" version="1.55.3">
<artifact name="azure-core-1.55.3.jar">
<sha256 value="53f64121176aca98b8634bd79fddabeea26c0ebcc092e342631a2b0d2dcec9e5" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.azure" name="azure-core-http-netty" version="1.15.3">
<artifact name="azure-core-http-netty-1.15.3.jar">
<sha256 value="18e9932c0aa3f42cee80fccee1907849fa9db5be40b8cffa21d1a7fc1d7457e5" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.azure" name="azure-core-http-okhttp" version="1.12.10">
<artifact name="azure-core-http-okhttp-1.12.10.jar">
<sha256 value="e4c1b1ca50aa4f4aad83a110f2d3edca637d2cd378265e17d7101b12dcfafa01" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.azure" name="azure-identity" version="1.13.2">
<artifact name="azure-identity-1.13.2.jar">
<sha256 value="f00ebc38b1dcf75a35129b8b0ad434514c84fd310c7afaf12824bd04e590f243" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.azure" name="azure-identity" version="1.15.4">
<artifact name="azure-identity-1.15.4.jar">
<sha256 value="3e7c4ca616570ad2a5886528c909d6888feb0fd8db637f19dadbc3f987cae2c0" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.azure" name="azure-json" version="1.2.0">
<artifact name="azure-json-1.2.0.jar">
<sha256 value="c7419ae04f668eb4dc3864cd64a6b77207abd93b9ee784f042dea7cb452840de" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.azure" name="azure-json" version="1.5.0">
<artifact name="azure-json-1.5.0.jar">
<sha256 value="65b1ec85f5d734221f1028d60c95bf5b453515797d6ab68ea8c36a6f2d5bc56b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.azure" name="azure-storage-blob" version="12.27.1">
<artifact name="azure-storage-blob-12.27.1.jar">
<sha256 value="31915426834400cac854f48441c168d55aa6fc054527f28f1d242a7067affd14" origin="Generated by Gradle"/>
Expand All @@ -136,6 +156,11 @@
<sha256 value="1006208324a08dadd5463ad2edfa3057a1ec3adee9d79c3ca00b14ef2f66cbce" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.azure" name="azure-xml" version="1.2.0">
<artifact name="azure-xml-1.2.0.jar">
<sha256 value="69d9559c561d3125bfd2bf9b5248601e442902bc755d935dde3edba97dc0d931" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.bettercloud" name="vault-java-driver" version="4.1.0">
<artifact name="vault-java-driver-4.1.0.jar">
<sha256 value="8878c47594fcfaa3e5b6fd75bb0e8f82cd8d4e7d947dd2a8e986f6d1f4b6c23e" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -973,11 +998,61 @@
<sha256 value="23478ea37253045c58b8b80367a89b48cbf2bd3e3ef43c2ddd3e7d96b853ef43" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.azure" name="msal4j" version="1.19.1">
<artifact name="msal4j-1.19.1.jar">
<sha256 value="5c8bbf40c72d259230c7717348fc026dcaf2a6cb7f029eb78abc2d0235e66e0f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.azure" name="msal4j-persistence-extension" version="1.3.0">
<artifact name="msal4j-persistence-extension-1.3.0.jar">
<sha256 value="dfc41c817fbfa76057af6ffe4379dbca6a5e16b8e87df8bdda23f371756c2d09" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.graph" name="microsoft-graph" version="6.36.0">
<artifact name="microsoft-graph-6.36.0.jar">
<sha256 value="c5f2e55fb61e009e33ad082738b9b3fb5c6e4feb5afb8d8ea204d8c8f3159b19" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.graph" name="microsoft-graph-core" version="3.6.1">
<artifact name="microsoft-graph-core-3.6.1.jar">
<sha256 value="9a25de0892a84e14f1fd55540fad10ec4a391d9d0e60921d696842bfb55ffcf6" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.kiota" name="microsoft-kiota-abstractions" version="1.8.4">
<artifact name="microsoft-kiota-abstractions-1.8.4.jar">
<sha256 value="356b8f931a10c374cfc542ac9b01b300a8459fce19e409535897876c8a70f639" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.kiota" name="microsoft-kiota-authentication-azure" version="1.8.4">
<artifact name="microsoft-kiota-authentication-azure-1.8.4.jar">
<sha256 value="99ace59180a36bb3a2345a16d859e708804fb6720b2814ac14c31c191abfd32b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.kiota" name="microsoft-kiota-http-okHttp" version="1.8.4">
<artifact name="microsoft-kiota-http-okHttp-1.8.4.jar">
<sha256 value="0d8fa07c3f0a9f1d1e72446aab2d4675914039ea972f9792a0d551487323e81e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.kiota" name="microsoft-kiota-serialization-form" version="1.8.4">
<artifact name="microsoft-kiota-serialization-form-1.8.4.jar">
<sha256 value="3e6eb722a145770cec9417f4254e6b9887f95bdecb61733adfce540b6e7c64a0" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.kiota" name="microsoft-kiota-serialization-json" version="1.8.4">
<artifact name="microsoft-kiota-serialization-json-1.8.4.jar">
<sha256 value="38700fbd1864a5fc983b4971174bff3d2aec96f793ebf244d045f14bcd41c5d5" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.kiota" name="microsoft-kiota-serialization-multipart" version="1.8.4">
<artifact name="microsoft-kiota-serialization-multipart-1.8.4.jar">
<sha256 value="9a50b202f4b3b5f5a904c50eb71a0f5b0d473d7fd8143389ca014f9636a47ec8" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.kiota" name="microsoft-kiota-serialization-text" version="1.8.4">
<artifact name="microsoft-kiota-serialization-text-1.8.4.jar">
<sha256 value="406c6b596f3fd1c0fd34f844ba0823d1035fdea984adc04245c0cf1daed02346" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.microsoft.sqlserver" name="mssql-jdbc" version="6.2.1.jre7">
<artifact name="mssql-jdbc-6.2.1.jre7.jar">
<sha256 value="9cfa259450ae3471d2e6e2c3d8aefcce236e3daef8b3734d21dc93c3a5bbe806" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -1068,6 +1143,11 @@
<sha256 value="88ac9fd1bb51f82bcc664cc1eb9c225c90dc4389d660231b4cc737bebfe7d0aa" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.okhttp3" name="okhttp" version="4.11.0">
<artifact name="okhttp-4.11.0.jar">
<sha256 value="ee8f6bd6cd1257013d748330f4ca147638a9fbcb52fb388d5ac93cf53408745d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.okhttp3" name="okhttp" version="4.12.0">
<artifact name="okhttp-4.12.0.jar">
<sha256 value="b1050081b14bb7a3a7e55a4d3ef01b5dcfabc453b4573a4fc019767191d5f4e0" origin="Generated by Gradle"/>
Expand All @@ -1083,6 +1163,11 @@
<sha256 value="114bdc1f47338a68bcbc95abf2f5cdc72beeec91812f2fcd7b521c1937876266" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.okio" name="okio-jvm" version="3.2.0">
<artifact name="okio-jvm-3.2.0.jar">
<sha256 value="b642baef4c570055de4cb3d1667b2b16dced901ff8066345a063691aa06025a4" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.okio" name="okio-jvm" version="3.6.0">
<artifact name="okio-jvm-3.6.0.jar">
<sha256 value="67543f0736fc422ae927ed0e504b98bc5e269fda0d3500579337cb713da28412" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -1428,6 +1513,11 @@
<sha256 value="626cce8b732f65e3fad4111bea84376c423c7fddffd1c85f8ad8f214a18acde6" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.github.std-uritemplate" name="std-uritemplate" version="2.0.0">
<artifact name="std-uritemplate-2.0.0.jar">
<sha256 value="626bbacb7e2ca4c2e8427133c39788d38e7f85d0ace0c697255afc1a8f46be6e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.grpc" name="grpc-api" version="1.70.0">
<artifact name="grpc-api-1.70.0.jar">
<sha256 value="45faf2ac1bf2791e8fdabce53684a86b62c99b84cba26fb13a5ba3f4abf80d6c" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -1563,6 +1653,11 @@
<sha256 value="6566f1f1133d611ff4e8b8fdb8eb18577b970425620315363ee9be43843b14bf" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.opentelemetry" name="opentelemetry-api" version="1.50.0">
<artifact name="opentelemetry-api-1.50.0.jar">
<sha256 value="2eaaac5f268b135f0e11dd30637d71df5751a0bb7ed6268659be57104d63122b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.opentelemetry" name="opentelemetry-context" version="1.31.0">
<artifact name="opentelemetry-context-1.31.0.jar">
<sha256 value="664896a5c34bcda20c95c8f45198a95e8f97a1cd5e5c2923978f42dddada787d" origin="Generated by Gradle"/>
Expand All @@ -1573,6 +1668,11 @@
<sha256 value="15b4fc4234e6dca6d54800d572694ecbd07ba52c15fc5b221b4da5517ce8d90d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.opentelemetry" name="opentelemetry-context" version="1.50.0">
<artifact name="opentelemetry-context-1.50.0.jar">
<sha256 value="76f9dfe1a6f74d5081e07bde1f7cb9a06879d317ec0ae0f61dd8fb2be9afad4f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.opentelemetry" name="opentelemetry-sdk" version="1.47.0">
<artifact name="opentelemetry-sdk-1.47.0.jar">
<sha256 value="4a09eb2ee484769973e14218a34e6da54f35955aa02b26dc5238b0c2ed6a801d" origin="Generated by Gradle"/>
Expand All @@ -1593,6 +1693,11 @@
<sha256 value="a9255f60d92e8fc58c3c87320cc439936e08227db65bd88eb97e844af853e608" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.projectreactor" name="reactor-core" version="3.7.5">
<artifact name="reactor-core-3.7.5.jar">
<sha256 value="0d69b6e28f045ae454f903d2d97cde44d7b57f6c7b8c8c5ef369649bcce7b3ce" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.projectreactor.netty" name="reactor-netty-core" version="1.0.45">
<artifact name="reactor-netty-core-1.0.45.jar">
<sha256 value="b38fdbc0618bc193359bb32807bc17b691fed42259dd27aa02b18ddbcf2b0844" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -3986,6 +4091,11 @@
<sha256 value="edc8e3ec9796a5f41c1ae44b2d318507ee6ac1212f121d93d33699b3d0aff638" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="1.6.20">
<artifact name="kotlin-stdlib-1.6.20.jar">
<sha256 value="eeb51c2b67b26233fd81d0bc4f8044ec849718890905763ceffd84a31e2cb799" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="1.9.10">
<artifact name="kotlin-stdlib-1.9.10.jar">
<sha256 value="55e989c512b80907799f854309f3bc7782c5b3d13932442d0379d5c472711504" origin="Generated by Gradle"/>
Expand Down
Loading