diff --git a/CHANGELOG.md b/CHANGELOG.md index 680caab35..bd78c4222 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,23 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 2.28.0 + +### Added +- `addBoolArray` function to `ContractFunctionParameters` + +### Fixed +- `java.lang.VerifyError` exception in examples + +### Changed +- updated addressbooks +- improved timeout handling + +## 2.27.0 + +### Fixed +- Timeout for TransactionResponse.getReceipt not working well + ## 2.26.0 ### Added diff --git a/README.md b/README.md index 2412120cd..5b1946c93 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Select _one_ of the following depending on your target platform. ```groovy -implementation 'com.hedera.hashgraph:sdk:2.26.0' +implementation 'com.hedera.hashgraph:sdk:2.28.0' ``` Select _one_ of the following to provide the gRPC implementation. @@ -56,7 +56,7 @@ Select _one_ of the following depending on your target platform. com.hedera.hashgraph sdk - 2.26.0 + 2.28.0 ``` diff --git a/build.gradle b/build.gradle index 5adb35ce7..c58870b4a 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ plugins { id "com.github.ben-manes.versions" version "0.47.0" id "jacoco" - id "org.sonarqube" version "4.2.1.3168" + id "org.sonarqube" version "4.3.0.3225" id "io.github.gradle-nexus.publish-plugin" version "1.3.0" } diff --git a/example-android/app/build.gradle b/example-android/app/build.gradle index 898049a5e..6c6952653 100644 --- a/example-android/app/build.gradle +++ b/example-android/app/build.gradle @@ -50,7 +50,7 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' - implementation 'com.hedera.hashgraph:sdk:2.26.0' + implementation 'com.hedera.hashgraph:sdk:2.28.0' implementation 'org.slf4j:slf4j-simple:2.0.7' implementation 'io.grpc:grpc-okhttp:1.49.2' diff --git a/example-android/build.gradle b/example-android/build.gradle index bd0dbac58..cd20c03ac 100644 --- a/example-android/build.gradle +++ b/example-android/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.8.22' + ext.kotlin_version = '1.9.0' repositories { google() @@ -10,7 +10,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:8.0.2' + classpath 'com.android.tools.build:gradle:8.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.quittle:android-emulator-plugin:0.4.5' diff --git a/examples/build.gradle b/examples/build.gradle index 6ae745ebe..678474347 100644 --- a/examples/build.gradle +++ b/examples/build.gradle @@ -1,10 +1,11 @@ dependencies { + implementation project(":sdk") + implementation "com.google.code.gson:gson:2.10.1" implementation "org.slf4j:slf4j-simple:2.0.7" implementation "io.grpc:grpc-netty-shaded:1.56.1" implementation "io.github.cdimascio:java-dotenv:5.3.1" implementation "com.google.errorprone:error_prone_core:2.19.1" - implementation project(path: ':sdk') } tasks.addRule("Pattern: run: Runs an example.") { String taskName -> diff --git a/examples/src/main/java/AccountAliasExample.java b/examples/src/main/java/AccountAliasExample.java index 2478bfaec..bc6c6a58c 100644 --- a/examples/src/main/java/AccountAliasExample.java +++ b/examples/src/main/java/AccountAliasExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/AccountAllowanceExample.java b/examples/src/main/java/AccountAllowanceExample.java index ddb84c5f8..779b20ff7 100644 --- a/examples/src/main/java/AccountAllowanceExample.java +++ b/examples/src/main/java/AccountAllowanceExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/AccountCreateWithHtsExample.java b/examples/src/main/java/AccountCreateWithHtsExample.java index 4b04acbde..e3adb676e 100644 --- a/examples/src/main/java/AccountCreateWithHtsExample.java +++ b/examples/src/main/java/AccountCreateWithHtsExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ConsensusPubSubChunkedExample.java b/examples/src/main/java/ConsensusPubSubChunkedExample.java index 8671ac1d4..507f38ee7 100644 --- a/examples/src/main/java/ConsensusPubSubChunkedExample.java +++ b/examples/src/main/java/ConsensusPubSubChunkedExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ConsensusPubSubExample.java b/examples/src/main/java/ConsensusPubSubExample.java index bc5c3ccb7..2e47365b0 100644 --- a/examples/src/main/java/ConsensusPubSubExample.java +++ b/examples/src/main/java/ConsensusPubSubExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ConsensusPubSubWithSubmitKeyExample.java b/examples/src/main/java/ConsensusPubSubWithSubmitKeyExample.java index af8fee0bc..56b235a18 100644 --- a/examples/src/main/java/ConsensusPubSubWithSubmitKeyExample.java +++ b/examples/src/main/java/ConsensusPubSubWithSubmitKeyExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ConstructClientExample.java b/examples/src/main/java/ConstructClientExample.java index 8148a1e76..622fcd5a3 100644 --- a/examples/src/main/java/ConstructClientExample.java +++ b/examples/src/main/java/ConstructClientExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ContractNoncesExample.java b/examples/src/main/java/ContractNoncesExample.java index 5bd223df2..e91caa67f 100644 --- a/examples/src/main/java/ContractNoncesExample.java +++ b/examples/src/main/java/ContractNoncesExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/CreateAccountExample.java b/examples/src/main/java/CreateAccountExample.java index 4c13e19d1..c80b4019b 100644 --- a/examples/src/main/java/CreateAccountExample.java +++ b/examples/src/main/java/CreateAccountExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/CreateAccountThresholdKeyExample.java b/examples/src/main/java/CreateAccountThresholdKeyExample.java index 33396c216..a8884ed28 100644 --- a/examples/src/main/java/CreateAccountThresholdKeyExample.java +++ b/examples/src/main/java/CreateAccountThresholdKeyExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/CreateFileExample.java b/examples/src/main/java/CreateFileExample.java index f4fbda83e..1f9bd3c90 100644 --- a/examples/src/main/java/CreateFileExample.java +++ b/examples/src/main/java/CreateFileExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/CreateSimpleContractExample.java b/examples/src/main/java/CreateSimpleContractExample.java index 19beb92bc..ab978cfa6 100644 --- a/examples/src/main/java/CreateSimpleContractExample.java +++ b/examples/src/main/java/CreateSimpleContractExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/CreateStatefulContractExample.java b/examples/src/main/java/CreateStatefulContractExample.java index f7914651f..58e575240 100644 --- a/examples/src/main/java/CreateStatefulContractExample.java +++ b/examples/src/main/java/CreateStatefulContractExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/CreateTopicExample.java b/examples/src/main/java/CreateTopicExample.java index 80e8d306c..876617c71 100644 --- a/examples/src/main/java/CreateTopicExample.java +++ b/examples/src/main/java/CreateTopicExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/CustomFeesExample.java b/examples/src/main/java/CustomFeesExample.java index e1ac01b9a..077f4939c 100644 --- a/examples/src/main/java/CustomFeesExample.java +++ b/examples/src/main/java/CustomFeesExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/DeleteAccountExample.java b/examples/src/main/java/DeleteAccountExample.java index a13bc132c..f2d5c630c 100644 --- a/examples/src/main/java/DeleteAccountExample.java +++ b/examples/src/main/java/DeleteAccountExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/DeleteFileExample.java b/examples/src/main/java/DeleteFileExample.java index a85db6dac..440ee900a 100644 --- a/examples/src/main/java/DeleteFileExample.java +++ b/examples/src/main/java/DeleteFileExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ExemptCustomFeesExample.java b/examples/src/main/java/ExemptCustomFeesExample.java index 8ffc746f0..d8e3bed62 100644 --- a/examples/src/main/java/ExemptCustomFeesExample.java +++ b/examples/src/main/java/ExemptCustomFeesExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/FileAppendChunkedExample.java b/examples/src/main/java/FileAppendChunkedExample.java index f67acb2ad..aab6c7e6b 100644 --- a/examples/src/main/java/FileAppendChunkedExample.java +++ b/examples/src/main/java/FileAppendChunkedExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/GenerateKeyExample.java b/examples/src/main/java/GenerateKeyExample.java index 242eb2a63..5f383dcbf 100644 --- a/examples/src/main/java/GenerateKeyExample.java +++ b/examples/src/main/java/GenerateKeyExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/GenerateKeyWithMnemonicExample.java b/examples/src/main/java/GenerateKeyWithMnemonicExample.java index 9d99caa76..f99aa8a11 100644 --- a/examples/src/main/java/GenerateKeyWithMnemonicExample.java +++ b/examples/src/main/java/GenerateKeyWithMnemonicExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/GetAccountBalanceExample.java b/examples/src/main/java/GetAccountBalanceExample.java index b452e9d45..7f53ea75e 100644 --- a/examples/src/main/java/GetAccountBalanceExample.java +++ b/examples/src/main/java/GetAccountBalanceExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/GetAccountInfoExample.java b/examples/src/main/java/GetAccountInfoExample.java index acb6e83b0..bc6b3add0 100644 --- a/examples/src/main/java/GetAccountInfoExample.java +++ b/examples/src/main/java/GetAccountInfoExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/GetAddressBookExample.java b/examples/src/main/java/GetAddressBookExample.java index 34a0069a8..7fc36c364 100644 --- a/examples/src/main/java/GetAddressBookExample.java +++ b/examples/src/main/java/GetAddressBookExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/GetExchangeRatesExample.java b/examples/src/main/java/GetExchangeRatesExample.java index 27acf76fa..f5604fc0b 100644 --- a/examples/src/main/java/GetExchangeRatesExample.java +++ b/examples/src/main/java/GetExchangeRatesExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/GetFileContentsExample.java b/examples/src/main/java/GetFileContentsExample.java index ead5a64be..eb0a6d3bd 100644 --- a/examples/src/main/java/GetFileContentsExample.java +++ b/examples/src/main/java/GetFileContentsExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/MultiAppTransferExample.java b/examples/src/main/java/MultiAppTransferExample.java index 3bd32ede4..16052ca13 100644 --- a/examples/src/main/java/MultiAppTransferExample.java +++ b/examples/src/main/java/MultiAppTransferExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/MultiSigOfflineExample.java b/examples/src/main/java/MultiSigOfflineExample.java index 184b63507..e5ff0a063 100644 --- a/examples/src/main/java/MultiSigOfflineExample.java +++ b/examples/src/main/java/MultiSigOfflineExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/NftAddRemoveAllowancesExample.java b/examples/src/main/java/NftAddRemoveAllowancesExample.java index 383b805d9..73a6c369e 100644 --- a/examples/src/main/java/NftAddRemoveAllowancesExample.java +++ b/examples/src/main/java/NftAddRemoveAllowancesExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/PrngExample.java b/examples/src/main/java/PrngExample.java index a974b8722..1b9777a95 100644 --- a/examples/src/main/java/PrngExample.java +++ b/examples/src/main/java/PrngExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ScheduleExample.java b/examples/src/main/java/ScheduleExample.java index b9b1c917b..962f18920 100644 --- a/examples/src/main/java/ScheduleExample.java +++ b/examples/src/main/java/ScheduleExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ScheduleIdenticalTransactionExample.java b/examples/src/main/java/ScheduleIdenticalTransactionExample.java index 614a8e6e0..90c3f160c 100644 --- a/examples/src/main/java/ScheduleIdenticalTransactionExample.java +++ b/examples/src/main/java/ScheduleIdenticalTransactionExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ScheduleMultiSigTransactionExample.java b/examples/src/main/java/ScheduleMultiSigTransactionExample.java index 91115c392..4331c8a45 100644 --- a/examples/src/main/java/ScheduleMultiSigTransactionExample.java +++ b/examples/src/main/java/ScheduleMultiSigTransactionExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ScheduledTransactionMultiSigThresholdExample.java b/examples/src/main/java/ScheduledTransactionMultiSigThresholdExample.java index 921945d9b..06b9ad1ba 100644 --- a/examples/src/main/java/ScheduledTransactionMultiSigThresholdExample.java +++ b/examples/src/main/java/ScheduledTransactionMultiSigThresholdExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ScheduledTransferExample.java b/examples/src/main/java/ScheduledTransferExample.java index e159af46b..2e8a5397b 100644 --- a/examples/src/main/java/ScheduledTransferExample.java +++ b/examples/src/main/java/ScheduledTransferExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/SignTransactionExample.java b/examples/src/main/java/SignTransactionExample.java index 51c5454f7..31971ca77 100644 --- a/examples/src/main/java/SignTransactionExample.java +++ b/examples/src/main/java/SignTransactionExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/StakingExample.java b/examples/src/main/java/StakingExample.java index 3be248d32..91ae1f5b9 100644 --- a/examples/src/main/java/StakingExample.java +++ b/examples/src/main/java/StakingExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/StakingWithUpdateExample.java b/examples/src/main/java/StakingWithUpdateExample.java index ce14b4eea..7058e6343 100644 --- a/examples/src/main/java/StakingWithUpdateExample.java +++ b/examples/src/main/java/StakingWithUpdateExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/TopicWithAdminKeyExample.java b/examples/src/main/java/TopicWithAdminKeyExample.java index 7e0e08577..1283a92af 100644 --- a/examples/src/main/java/TopicWithAdminKeyExample.java +++ b/examples/src/main/java/TopicWithAdminKeyExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/TransferCryptoExample.java b/examples/src/main/java/TransferCryptoExample.java index f4713fea4..b1088f80d 100644 --- a/examples/src/main/java/TransferCryptoExample.java +++ b/examples/src/main/java/TransferCryptoExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/TransferTokensExample.java b/examples/src/main/java/TransferTokensExample.java index 9f773a90b..19ce20e3b 100644 --- a/examples/src/main/java/TransferTokensExample.java +++ b/examples/src/main/java/TransferTokensExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/UpdateAccountPublicKeyExample.java b/examples/src/main/java/UpdateAccountPublicKeyExample.java index 01439f41a..307a4d2e2 100644 --- a/examples/src/main/java/UpdateAccountPublicKeyExample.java +++ b/examples/src/main/java/UpdateAccountPublicKeyExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ValidateChecksumExample.java b/examples/src/main/java/ValidateChecksumExample.java index c1927c389..f23ccf1cc 100644 --- a/examples/src/main/java/ValidateChecksumExample.java +++ b/examples/src/main/java/ValidateChecksumExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/examples/src/main/java/ZeroTokenOperationsExample.java b/examples/src/main/java/ZeroTokenOperationsExample.java index 80bc91eaf..c720b7f96 100644 --- a/examples/src/main/java/ZeroTokenOperationsExample.java +++ b/examples/src/main/java/ZeroTokenOperationsExample.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/scripts/premade/FeeDataType-0.txt b/scripts/premade/FeeDataType-0.txt index 0680caf88..1da2856c5 100644 --- a/scripts/premade/FeeDataType-0.txt +++ b/scripts/premade/FeeDataType-0.txt @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/scripts/premade/FreezeType-0.txt b/scripts/premade/FreezeType-0.txt index b1ce71cd1..68f32b363 100644 --- a/scripts/premade/FreezeType-0.txt +++ b/scripts/premade/FreezeType-0.txt @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/scripts/premade/RequestType-0.txt b/scripts/premade/RequestType-0.txt index 2c5ebcde6..5987a586c 100644 --- a/scripts/premade/RequestType-0.txt +++ b/scripts/premade/RequestType-0.txt @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/scripts/premade/Status-0.txt b/scripts/premade/Status-0.txt index 1335c69de..a27728cb1 100644 --- a/scripts/premade/Status-0.txt +++ b/scripts/premade/Status-0.txt @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/build.gradle b/sdk/build.gradle index 361bb8403..39f59b0ff 100644 --- a/sdk/build.gradle +++ b/sdk/build.gradle @@ -3,7 +3,7 @@ plugins { id "idea" id "signing" id "maven-publish" - id "com.google.protobuf" version "0.9.3" + id "com.google.protobuf" version "0.9.4" id "com.github.spotbugs" version "5.0.14" } @@ -40,17 +40,17 @@ dependencies { // https://mvnrepository.com/artifact/org.slf4j/slf4j-api implementation 'org.slf4j:slf4j-api:2.0.7' - implementation "io.grpc:grpc-core:1.56.1" + implementation "io.grpc:grpc-core:1.57.0" implementation "io.grpc:grpc-stub:1.56.1" implementation "com.google.code.gson:gson:2.10.1" implementation 'javax.annotation:javax.annotation-api:1.3.2' - implementation "com.esaulpaugh:headlong:9.3.0" + implementation 'com.esaulpaugh:headlong:9.3.0' testImplementation "org.assertj:assertj-core:3.24.2" testImplementation "io.github.json-snapshot:json-snapshot:1.0.17" - testImplementation "org.junit.jupiter:junit-jupiter-engine:5.9.3" - testImplementation "org.junit.jupiter:junit-jupiter-params:5.9.3" + testImplementation "org.junit.jupiter:junit-jupiter-engine:5.10.0" + testImplementation "org.junit.jupiter:junit-jupiter-params:5.10.0" testRuntimeOnly "org.slf4j:slf4j-simple:2.0.7" testRuntimeOnly "io.grpc:grpc-netty-shaded:1.56.1" @@ -63,11 +63,11 @@ dependencies { // https://github.com/google/protobuf-gradle-plugin protobuf { protoc { - artifact = "com.google.protobuf:protoc:3.23.2" + artifact = "com.google.protobuf:protoc:3.23.4" } plugins { grpc { - artifact = "io.grpc:protoc-gen-grpc-java:1.56.1" + artifact = "io.grpc:protoc-gen-grpc-java:1.57.0" } } } diff --git a/sdk/src/integrationTest/java/AccountIdPopulationIntegrationTest.java b/sdk/src/integrationTest/java/AccountIdPopulationIntegrationTest.java new file mode 100644 index 000000000..4d1d5eb87 --- /dev/null +++ b/sdk/src/integrationTest/java/AccountIdPopulationIntegrationTest.java @@ -0,0 +1,63 @@ +import static org.assertj.core.api.Assertions.assertThat; + +import com.hedera.hashgraph.sdk.AccountId; +import com.hedera.hashgraph.sdk.Hbar; +import com.hedera.hashgraph.sdk.PrivateKey; +import com.hedera.hashgraph.sdk.TransactionReceiptQuery; +import com.hedera.hashgraph.sdk.TransferTransaction; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class AccountIdPopulationIntegrationTest { + @Test + @DisplayName("Can populate AccountId num from mirror node (using sync method)") + void canPopulateAccountIdNumSync() throws Exception { + var testEnv = new IntegrationTestEnv(1); + + var privateKey = PrivateKey.generateECDSA(); + var publicKey = privateKey.getPublicKey(); + + var evmAddress = publicKey.toEvmAddress(); + var evmAddressAccount = AccountId.fromEvmAddress(evmAddress); + + var tx = new TransferTransaction().addHbarTransfer(evmAddressAccount, new Hbar(1)) + .addHbarTransfer(testEnv.operatorId, new Hbar(-1)).execute(testEnv.client); + + var receipt = new TransactionReceiptQuery().setTransactionId(tx.transactionId).setIncludeChildren(true) + .execute(testEnv.client); + + var newAccountId = receipt.children.get(0).accountId; + + var idMirror = AccountId.fromEvmAddress(evmAddress); + Thread.sleep(5000); + var accountId = idMirror.populateAccountNum(testEnv.client); + + assertThat(newAccountId.num).isEqualTo(accountId.num); + } + + @Test + @DisplayName("Can populate AccountId num from mirror node (using async method)") + void canPopulateAccountIdNumAsync() throws Exception { + var testEnv = new IntegrationTestEnv(1); + + var privateKey = PrivateKey.generateECDSA(); + var publicKey = privateKey.getPublicKey(); + + var evmAddress = publicKey.toEvmAddress(); + var evmAddressAccount = AccountId.fromEvmAddress(evmAddress); + + var tx = new TransferTransaction().addHbarTransfer(evmAddressAccount, new Hbar(1)) + .addHbarTransfer(testEnv.operatorId, new Hbar(-1)).execute(testEnv.client); + + var receipt = new TransactionReceiptQuery().setTransactionId(tx.transactionId).setIncludeChildren(true) + .execute(testEnv.client); + + var newAccountId = receipt.children.get(0).accountId; + + var idMirror = AccountId.fromEvmAddress(evmAddress); + Thread.sleep(5000); + var accountId = idMirror.populateAccountNumAsync(testEnv.client).get(); + + assertThat(newAccountId.num).isEqualTo(accountId.num); + } +} diff --git a/sdk/src/integrationTest/java/ContractExecuteIntegrationTest.java b/sdk/src/integrationTest/java/ContractExecuteIntegrationTest.java index 6258f2b88..228cc1ca8 100644 --- a/sdk/src/integrationTest/java/ContractExecuteIntegrationTest.java +++ b/sdk/src/integrationTest/java/ContractExecuteIntegrationTest.java @@ -1,3 +1,6 @@ +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; + import com.google.errorprone.annotations.Var; import com.hedera.hashgraph.sdk.ContractCreateTransaction; import com.hedera.hashgraph.sdk.ContractDeleteTransaction; @@ -5,16 +8,13 @@ import com.hedera.hashgraph.sdk.ContractFunctionParameters; import com.hedera.hashgraph.sdk.FileCreateTransaction; import com.hedera.hashgraph.sdk.FileDeleteTransaction; +import com.hedera.hashgraph.sdk.PrecheckStatusException; import com.hedera.hashgraph.sdk.ReceiptStatusException; import com.hedera.hashgraph.sdk.Status; +import java.util.Objects; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import java.util.Objects; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatExceptionOfType; - public class ContractExecuteIntegrationTest { private static final String SMART_CONTRACT_BYTECODE = "608060405234801561001057600080fd5b506040516104d73803806104d78339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b506040525050600080546001600160a01b0319163317905550805161010890600190602084019061010f565b50506101aa565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015057805160ff191683800117855561017d565b8280016001018555821561017d579182015b8281111561017d578251825591602001919060010190610162565b5061018992915061018d565b5090565b6101a791905b808211156101895760008155600101610193565b90565b61031e806101b96000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063368b87721461004657806341c0e1b5146100ee578063ce6d41de146100f6575b600080fd5b6100ec6004803603602081101561005c57600080fd5b81019060208101813564010000000081111561007757600080fd5b82018360208201111561008957600080fd5b803590602001918460018302840111640100000000831117156100ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610173945050505050565b005b6100ec6101a2565b6100fe6101ba565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610138578181015183820152602001610120565b50505050905090810190601f1680156101655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000546001600160a01b0316331461018a5761019f565b805161019d906001906020840190610250565b505b50565b6000546001600160a01b03163314156101b85733ff5b565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156102455780601f1061021a57610100808354040283529160200191610245565b820191906000526020600020905b81548152906001019060200180831161022857829003601f168201915b505050505090505b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061029157805160ff19168380011785556102be565b828001600101855582156102be579182015b828111156102be5782518255916020019190600101906102a3565b506102ca9291506102ce565b5090565b61024d91905b808211156102ca57600081556001016102d456fea264697066735822122084964d4c3f6bc912a9d20e14e449721012d625aa3c8a12de41ae5519752fc89064736f6c63430006000033"; @@ -149,7 +149,7 @@ void cannotExecuteContractWhenGasIsNotSet() throws Exception { .contractId ); - assertThatExceptionOfType(ReceiptStatusException.class).isThrownBy(() -> { + assertThatExceptionOfType(PrecheckStatusException.class).isThrownBy(() -> { new ContractExecuteTransaction() .setContractId(contractId) .setFunction("setMessage", new ContractFunctionParameters().addString("new message")) diff --git a/sdk/src/integrationTest/java/ContractFunctionParametersIntegrationTest.java b/sdk/src/integrationTest/java/ContractFunctionParametersIntegrationTest.java new file mode 100644 index 000000000..88feeb82c --- /dev/null +++ b/sdk/src/integrationTest/java/ContractFunctionParametersIntegrationTest.java @@ -0,0 +1,2801 @@ +import static org.assertj.core.api.Assertions.assertThat; + +import com.esaulpaugh.headlong.abi.Address; +import com.google.errorprone.annotations.Var; +import com.hedera.hashgraph.sdk.ContractCallQuery; +import com.hedera.hashgraph.sdk.ContractCreateTransaction; +import com.hedera.hashgraph.sdk.ContractDeleteTransaction; +import com.hedera.hashgraph.sdk.ContractFunctionParameters; +import com.hedera.hashgraph.sdk.ContractId; +import com.hedera.hashgraph.sdk.FileAppendTransaction; +import com.hedera.hashgraph.sdk.FileCreateTransaction; +import com.hedera.hashgraph.sdk.FileDeleteTransaction; +import com.hedera.hashgraph.sdk.FileId; +import com.hedera.hashgraph.sdk.Hbar; +import java.math.BigInteger; +import java.util.Arrays; +import java.util.Objects; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +public class ContractFunctionParametersIntegrationTest { + private static final String SMART_CONTRACT_BYTECODE = "60806040523480156200001157600080fd5b5060408051608081018252600491810191825263082d8caf60e31b6060820152818152600160208201529060009081906200004d908262000106565b5060208201518160010155905050620001d2565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200008c57607f821691505b602082108103620000ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200010157600081815260208120601f850160051c81016020861015620000dc5750805b601f850160051c820191505b81811015620000fd57828155600101620000e8565b5050505b505050565b81516001600160401b0381111562000122576200012262000061565b6200013a8162000133845462000077565b84620000b3565b602080601f831160018114620001725760008415620001595750858301515b600019600386901b1c1916600185901b178555620000fd565b600085815260208120601f198616915b82811015620001a35788860151825594840194600190910190840162000182565b5085821015620001c25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b615dfe80620001e26000396000f3fe608060405234801561001057600080fd5b50600436106108355760003560e01c80637f8082f711610437578063c5882dbb11610236578063e2a345291161013b578063f6e877f4116100c3578063fafc3b9911610092578063fafc3b9914611857578063fba1bc4c14611872578063febe099714611887578063ff5f54dd146118a2578063ffb80501146118bd57600080fd5b8063f6e877f4146117d9578063f8293f6e146117ff578063f914c4d214611821578063f962326a1461183c57600080fd5b8063eceda56a1161010a578063eceda56a1461174c578063ef65066114611767578063f0ebb92214611782578063f4e490f51461179d578063f680c24a146117be57600080fd5b8063e2a34529146116d8578063e4b90944146116f3578063e713cda81461170e578063ea945d301461173157600080fd5b8063d79d4d40116101be578063e05e91e01161018d578063e05e91e014611630578063e066de5014611656578063e0cddc551461167c578063e0f53e2414611697578063e1dbb318146116bd57600080fd5b8063d79d4d4014611592578063dade0c0b146115b8578063dbb04ed9146115da578063de9fb4841461160357600080fd5b8063cbd2e6a511610205578063cbd2e6a514611511578063cdb9e4e814611536578063cf7c3dfc1461155c578063d1b10ad714610ada578063d33c57501461157757600080fd5b8063c5882dbb1461148b578063c6c18a1c146114a6578063c7d8b87e146114d0578063cb47cdae146114f657600080fd5b8063a1bda1221161033c578063b5abe7df116102c4578063ba945bdb11610293578063ba945bdb146113dc578063bb6b524314611402578063bd90536a14611428578063be63d0b814611450578063c503772d1461146b57600080fd5b8063b5abe7df14611359578063b834bfe914611374578063b8da8d1614611395578063b989c7ee146113bb57600080fd5b8063aa016e681161030b578063aa016e68146112dc578063aa80ca2e14610c6b578063b2325c35146112f7578063b2db404a14611312578063b4e3e7b11461133357600080fd5b8063a1bda12214611259578063a401d60d1461127a578063a57ebf10146112a0578063a75761f1146112bb57600080fd5b80638f2805e0116103bf57806394cd7c801161038e57806394cd7c80146111b557806398508ba3146111d65780639b1794ae146111f7578063a08b9f671461121d578063a19962341461123e57600080fd5b80638f2805e0146111435780638ff4cfee1461115e578063909c5b2414611179578063923f5edf1461119457600080fd5b806386aba5a71161040657806386aba5a7146110ab578063881c8fb7146110c657806388b1dd37146110ec57806388b7e6f5146111075780638d7f60151461112857600080fd5b80637f8082f714610c6b578063817b24541461107557806381dbe13e14611090578063827147ce1461099a57600080fd5b806338fa6658116106435780635a8fd3b51161054857806370a5cb81116104d05780637ba844771161049f5780637ba8447714610fe25780637d0dc26214610ffd5780637d906c551461101e5780637e281630146110395780637ec32d841461105457600080fd5b806370a5cb8114610f5a57806372a06b4d14610f80578063737b801614610fa1578063796a27ea14610fbc57600080fd5b806369cbe0561161051757806369cbe05614610ecd5780636a54715c14610ee85780636a75c12f14610f095780636a9929db14610f245780636ee8f39c14610f3f57600080fd5b80635a8fd3b514610e4f578063628bc3ef14610e6a57806364e008c114610e8b57806368ef446614610eac57600080fd5b80634bbc9a67116105cb578063545e21131161059a578063545e211314610dd157806355f232a414610dfe57806357890ba914610e1957806357d9c08b14610e3457806359adb2df14610ada57600080fd5b80634bbc9a6714610d655780634e96247314610d80578063501297c214610d9b57806350370d8514610db657600080fd5b80633f396e67116106125780633f396e6714610ce3578063407b899b14610d0b578063435a33a814610d2c57806344e7b03714610af657806348d848d014610d4757600080fd5b806338fa665814610c6b5780633a73007714610c865780633b45e6e014610ca15780633e1a277114610cc257600080fd5b80631e9aa70f116107495780632ef16e8e116106d15780633135d681116106a05780633135d68114610beb57806333520ec314610c0657806333edb89614610c275780633729a2da14610c42578063382d087314610c5057600080fd5b80632ef16e8e14610b6d5780632f47a40d14610b8e5780632f6c1bb414610baf578063309f9ac914610bd057600080fd5b806322937ea91161071857806322937ea914610ada5780632421101f14610af657806324c3c3d214610b1c57806328a30eb714610b375780632a3082ce14610b5257600080fd5b80631e9aa70f14610a6e578063203ae83a14610a8957806321d1730b14610aa45780632234ea0214610abf57600080fd5b8063118b8415116107cc57806312b932a71161079b57806312b932a7146109db57806312cd95a1146109f657806315832ae414610a17578063189cea8e14610a325780631d11456214610a5357600080fd5b8063118b84151461095857806311ec6c9014610979578063126bc8151461099a578063129ed5da146109b557600080fd5b806306ac6fe11161080857806306ac6fe1146108ca57806308123e09146108f05780630a958dc81461091657806310d545531461093757600080fd5b8063017fa10b1461083a578063021d88ab14610868578063037454301461088e5780630577a846146108af575b600080fd5b61084b610848366004611a34565b90565b6040516001600160801b0390911681526020015b60405180910390f35b610876610848366004611a6d565b6040516001600160601b03909116815260200161085f565b61089c610848366004611a9a565b604051600c9190910b815260200161085f565b6108bd610848366004611b35565b60405161085f9190611bd1565b6108d8610848366004611c35565b6040516001600160781b03909116815260200161085f565b6108fe610848366004611c67565b60405166ffffffffffffff909116815260200161085f565b610924610848366004611c94565b60405160049190910b815260200161085f565b610945610848366004611cc1565b60405160119190910b815260200161085f565b610966610848366004611cee565b604051601e9190910b815260200161085f565b610987610848366004611d1b565b60405160139190910b815260200161085f565b6109a8610848366004611da5565b60405161085f9190611e27565b6109c3610848366004611e51565b6040516001600160981b03909116815260200161085f565b6109e9610848366004611e7e565b60405161085f9190611f0a565b610a04610848366004611f57565b60405160129190910b815260200161085f565b610a25610848366004611f83565b60405161085f919061200f565b610a4061084836600461205c565b60405160169190910b815260200161085f565b610a6161084836600461208f565b60405161085f919061211d565b610a7c610848366004612170565b60405161085f91906121fc565b610a97610848366004612237565b60405161085f91906122c3565b610ab261084836600461231b565b60405161085f91906123a7565b610acd6108483660046123fa565b60405161085f9190612486565b610ae86108483660046124c1565b60405190815260200161085f565b610b046108483660046124da565b6040516001600160a01b03909116815260200161085f565b610b2a61084836600461250e565b60405161085f919061259a565b610b456108483660046125db565b60405161085f9190612667565b610b606108483660046126b4565b60405161085f9190612740565b610b7b61084836600461278d565b604051601d9190910b815260200161085f565b610b9c6108483660046127a8565b604051600a9190910b815260200161085f565b610bbd6108483660046127d5565b60405160199190910b815260200161085f565b610bde610848366004612807565b60405161085f9190612893565b610bf96108483660046128eb565b60405161085f9190612977565b610c146108483660046129ca565b604051601a9190910b815260200161085f565b610c356108483660046129f7565b60405161085f9190612a83565b610a61610848366004612abe565b610c5e610848366004612b5e565b60405161085f9190612bea565b610c79610848366004612c25565b60405161085f9190612caa565b610c94610848366004612cfd565b60405161085f9190612d89565b610caf610848366004612de0565b60405160109190910b815260200161085f565b610cd0610848366004612e0d565b604051601c9190910b815260200161085f565b610cf1610848366004612e41565b60405168ffffffffffffffffff909116815260200161085f565b610d19610848366004612e6e565b60405160079190910b815260200161085f565b610d3a610848366004612e89565b60405161085f9190612f15565b610d55610848366004612f60565b604051901515815260200161085f565b610d73610848366004612f7b565b60405161085f9190613007565b610d8e610848366004613058565b60405161085f91906130e4565b610da9610848366004613137565b60405161085f91906131c3565b610dc4610848366004613215565b60405161085f91906132a1565b610de4610ddf3660046132f4565b6118e1565b60408051600093840b81529190920b60208201520161085f565b610e0c61084836600461330f565b60405161085f919061339b565b610e276108483660046133d6565b60405161085f9190613462565b610e426108483660046134b3565b60405161085f919061353f565b610e5d610848366004613593565b60405161085f919061361f565b610e7861084836600461366f565b60405160099190910b815260200161085f565b610e9961084836600461369c565b60405160179190910b815260200161085f565b610eba6108483660046136b7565b60405160149190910b815260200161085f565b610edb6108483660046136e4565b60405161085f9190613770565b610ef66108483660046137ab565b60405160069190910b815260200161085f565b610f176108483660046137d8565b60405161085f9190613864565b610f3261084836600461389f565b60405161085f919061392b565b610f4d610848366004613980565b60405161085f9190613a0c565b610f68610848366004613a67565b6040516001600160681b03909116815260200161085f565b610f8e6108483660046132f4565b60405160009190910b815260200161085f565b610faf610848366004613a99565b60405161085f9190613b25565b610fca610848366004613b66565b6040516001600160d81b03909116815260200161085f565b610ff0610848366004613b96565b60405161085f9190613c22565b61100b610848366004613c73565b604051601b9190910b815260200161085f565b61102c610848366004613ca1565b60405161085f9190613d2d565b611047610848366004613d7c565b60405161085f9190613e08565b611062610848366004613e56565b60405160029190910b815260200161085f565b611083610848366004613e88565b60405161085f9190613f14565b61109e610848366004613f55565b60405161085f9190614005565b6110b9610848366004614067565b60405161085f91906140f3565b6110d461084836600461414b565b6040516001600160b01b03909116815260200161085f565b6110fa610848366004614166565b60405161085f91906141f2565b61111561084836600461422d565b604051600f9190910b815260200161085f565b611136610848366004614248565b60405161085f91906142d4565b611151610848366004614326565b60405161085f91906143b2565b61116c6108483660046143f3565b60405161085f919061447f565b6111876108483660046144ba565b60405161085f919061455d565b6111a26108483660046145b2565b60405160159190910b815260200161085f565b6111c36108483660046145df565b60405160189190910b815260200161085f565b6111e46108483660046145fa565b604051600d9190910b815260200161085f565b61120561084836600461462c565b6040516001600160b81b03909116815260200161085f565b61122b610848366004614647565b604051600b9190910b815260200161085f565b61124c610848366004614662565b60405161085f91906146ee565b61126761084836600461472f565b60405160019190910b815260200161085f565b61128861084836600461474a565b6040516001600160f01b03909116815260200161085f565b6112ae610848366004614765565b60405161085f91906147f1565b6112c961084836600461482c565b60405161ffff909116815260200161085f565b6112ea610848366004614847565b60405161085f91906148d3565b611305610848366004614928565b60405161085f91906149b4565b611320610848366004614a01565b60405160059190910b815260200161085f565b611341610848366004614a1c565b6040516001600160701b03909116815260200161085f565b611367610848366004614a37565b60405161085f9190614ac3565b611382610848366004614b04565b604051600e9190910b815260200161085f565b6113a3610848366004614b1f565b6040516001600160a81b03909116815260200161085f565b6113c9610848366004614b3a565b60405160039190910b815260200161085f565b6113ea610848366004614b55565b6040516001600160881b03909116815260200161085f565b611410610848366004614b70565b6040516001600160c81b03909116815260200161085f565b61143b6114363660046124c1565b6118f9565b6040805192835260208301919091520161085f565b61145e610848366004614b8b565b60405161085f9190614c17565b611479610848366004614c52565b60405160ff909116815260200161085f565b611499610848366004614c6d565b60405161085f9190614cf9565b6114b4610848366004614d34565b6040516affffffffffffffffffffff909116815260200161085f565b6114de610848366004614d4f565b6040516001600160f81b03909116815260200161085f565b611504610848366004614d6a565b60405161085f9190614df6565b61151f610848366004614e31565b60405165ffffffffffff909116815260200161085f565b611544610848366004614e63565b6040516001600160e01b03909116815260200161085f565b61156a610848366004614e7e565b60405161085f9190614f0a565b611585610848366004614f45565b60405161085f9190614fd1565b6115a0610848366004615029565b6040516001600160d01b03909116815260200161085f565b6115cb6115c6366004615044565b611908565b60405161085f9392919061505f565b6115e8610848366004615096565b60405169ffffffffffffffffffff909116815260200161085f565b611616611611366004611c94565b611946565b60408051600493840b81529190920b60208201520161085f565b61163e6108483660046150b1565b6040516001600160401b03909116815260200161085f565b6116646108483660046150e3565b6040516001600160e81b03909116815260200161085f565b61168a6108483660046150fe565b60405161085f919061518a565b6116a56108483660046151c5565b6040516001600160c01b03909116815260200161085f565b6116cb6108483660046151f2565b60405161085f919061527e565b6116e66108483660046152b9565b60405161085f9190615345565b61170161084836600461538d565b60405161085f9190615419565b61171c610848366004615044565b60405163ffffffff909116815260200161085f565b61173f610848366004615454565b60405161085f91906154e0565b61175a61084836600461551b565b60405161085f91906155a7565b6117756108483660046155e2565b60405161085f919061566e565b6117906108483660046156af565b60405161085f919061573b565b6117ab610848366004615776565b60405160089190910b815260200161085f565b6117cc610848366004615791565b60405161085f919061581d565b6117e7610848366004615858565b6040516001600160901b03909116815260200161085f565b61180d610848366004615873565b60405162ffffff909116815260200161085f565b61182f61084836600461588e565b60405161085f919061591a565b61184a61084836600461595b565b60405161085f91906159e7565b611865610848366004615a28565b60405161085f9190615ab4565b61187a611955565b60405161085f9190615af5565b611895610848366004615b27565b60405161085f9190615bb3565b6118b0610848366004615bf4565b60405161085f9190615c80565b6118cb610848366004615cc1565b60405164ffffffffff909116815260200161085f565b600080826118f0816014615cf2565b91509150915091565b600080826118f0816001615d19565b600080606083611919600182615d41565b6040805180820190915260028152614f4b60f01b602082015291945063ffffffff16925090509193909250565b600080826118f0816001615d65565b604080518082019091526060815260006020820152600060405180604001604052908160008201805461198790615d8e565b80601f01602080910402602001604051908101604052809291908181526020018280546119b390615d8e565b8015611a005780601f106119d557610100808354040283529160200191611a00565b820191906000526020600020905b8154815290600101906020018083116119e357829003601f168201915b50505050508152602001600182015481525050905090565b80356001600160801b0381168114611a2f57600080fd5b919050565b600060208284031215611a4657600080fd5b611a4f82611a18565b9392505050565b80356001600160601b0381168114611a2f57600080fd5b600060208284031215611a7f57600080fd5b611a4f82611a56565b8035600c81900b8114611a2f57600080fd5b600060208284031215611aac57600080fd5b611a4f82611a88565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611af357611af3611ab5565b604052919050565b60006001600160401b03821115611b1457611b14611ab5565b5060051b60200190565b80356001600160f01b0381168114611a2f57600080fd5b60006020808385031215611b4857600080fd5b82356001600160401b03811115611b5e57600080fd5b8301601f81018513611b6f57600080fd5b8035611b82611b7d82611afb565b611acb565b81815260059190911b82018301908381019087831115611ba157600080fd5b928401925b82841015611bc657611bb784611b1e565b82529284019290840190611ba6565b979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160f01b031683529284019291840191600101611bed565b50909695505050505050565b80356001600160781b0381168114611a2f57600080fd5b600060208284031215611c4757600080fd5b611a4f82611c1e565b803566ffffffffffffff81168114611a2f57600080fd5b600060208284031215611c7957600080fd5b611a4f82611c50565b8035600481900b8114611a2f57600080fd5b600060208284031215611ca657600080fd5b611a4f82611c82565b8035601181900b8114611a2f57600080fd5b600060208284031215611cd357600080fd5b611a4f82611caf565b8035601e81900b8114611a2f57600080fd5b600060208284031215611d0057600080fd5b611a4f82611cdc565b8035601381900b8114611a2f57600080fd5b600060208284031215611d2d57600080fd5b611a4f82611d09565b600082601f830112611d4757600080fd5b81356001600160401b03811115611d6057611d60611ab5565b611d73601f8201601f1916602001611acb565b818152846020838601011115611d8857600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611db757600080fd5b81356001600160401b03811115611dcd57600080fd5b611dd984828501611d36565b949350505050565b6000815180845260005b81811015611e0757602081850181015186830182015201611deb565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611a4f6020830184611de1565b80356001600160981b0381168114611a2f57600080fd5b600060208284031215611e6357600080fd5b611a4f82611e3a565b8035600381900b8114611a2f57600080fd5b60006020808385031215611e9157600080fd5b82356001600160401b03811115611ea757600080fd5b8301601f81018513611eb857600080fd5b8035611ec6611b7d82611afb565b81815260059190911b82018301908381019087831115611ee557600080fd5b928401925b82841015611bc657611efb84611e6c565b82529284019290840190611eea565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160030b83529284019291840191600101611f26565b8035601281900b8114611a2f57600080fd5b600060208284031215611f6957600080fd5b611a4f82611f45565b803560ff81168114611a2f57600080fd5b60006020808385031215611f9657600080fd5b82356001600160401b03811115611fac57600080fd5b8301601f81018513611fbd57600080fd5b8035611fcb611b7d82611afb565b81815260059190911b82018301908381019087831115611fea57600080fd5b928401925b82841015611bc65761200084611f72565b82529284019290840190611fef565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160ff168352928401929184019160010161202b565b8035601681900b8114611a2f57600080fd5b60006020828403121561206e57600080fd5b611a4f8261204a565b6001600160a01b038116811461208c57600080fd5b50565b600060208083850312156120a257600080fd5b82356001600160401b038111156120b857600080fd5b8301601f810185136120c957600080fd5b80356120d7611b7d82611afb565b81815260059190911b820183019083810190878311156120f657600080fd5b928401925b82841015611bc657833561210e81612077565b825292840192908401906120fb565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160a01b031683529284019291840191600101612139565b8035601481900b8114611a2f57600080fd5b6000602080838503121561218357600080fd5b82356001600160401b0381111561219957600080fd5b8301601f810185136121aa57600080fd5b80356121b8611b7d82611afb565b81815260059190911b820183019083810190878311156121d757600080fd5b928401925b82841015611bc6576121ed8461215e565b825292840192908401906121dc565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160140b83529284019291840191600101612218565b6000602080838503121561224a57600080fd5b82356001600160401b0381111561226057600080fd5b8301601f8101851361227157600080fd5b803561227f611b7d82611afb565b81815260059190911b8201830190838101908783111561229e57600080fd5b928401925b82841015611bc6576122b484611c50565b825292840192908401906122a3565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835166ffffffffffffff16835292840192918401916001016122df565b80356001600160f81b0381168114611a2f57600080fd5b6000602080838503121561232e57600080fd5b82356001600160401b0381111561234457600080fd5b8301601f8101851361235557600080fd5b8035612363611b7d82611afb565b81815260059190911b8201830190838101908783111561238257600080fd5b928401925b82841015611bc65761239884612304565b82529284019290840190612387565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160f81b0316835292840192918401916001016123c3565b8035600a81900b8114611a2f57600080fd5b6000602080838503121561240d57600080fd5b82356001600160401b0381111561242357600080fd5b8301601f8101851361243457600080fd5b8035612442611b7d82611afb565b81815260059190911b8201830190838101908783111561246157600080fd5b928401925b82841015611bc657612477846123e8565b82529284019290840190612466565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600a0b835292840192918401916001016124a2565b6000602082840312156124d357600080fd5b5035919050565b6000602082840312156124ec57600080fd5b8135611a4f81612077565b80356001600160c81b0381168114611a2f57600080fd5b6000602080838503121561252157600080fd5b82356001600160401b0381111561253757600080fd5b8301601f8101851361254857600080fd5b8035612556611b7d82611afb565b81815260059190911b8201830190838101908783111561257557600080fd5b928401925b82841015611bc65761258b846124f7565b8252928401929084019061257a565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160c81b0316835292840192918401916001016125b6565b600060208083850312156125ee57600080fd5b82356001600160401b0381111561260457600080fd5b8301601f8101851361261557600080fd5b8035612623611b7d82611afb565b81815260059190911b8201830190838101908783111561264257600080fd5b928401925b82841015611bc65761265884611d09565b82529284019290840190612647565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160130b83529284019291840191600101612683565b8035600b81900b8114611a2f57600080fd5b600060208083850312156126c757600080fd5b82356001600160401b038111156126dd57600080fd5b8301601f810185136126ee57600080fd5b80356126fc611b7d82611afb565b81815260059190911b8201830190838101908783111561271b57600080fd5b928401925b82841015611bc657612731846126a2565b82529284019290840190612720565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600b0b8352928401929184019160010161275c565b8035601d81900b8114611a2f57600080fd5b60006020828403121561279f57600080fd5b611a4f8261277b565b6000602082840312156127ba57600080fd5b611a4f826123e8565b8035601981900b8114611a2f57600080fd5b6000602082840312156127e757600080fd5b611a4f826127c3565b80356001600160c01b0381168114611a2f57600080fd5b6000602080838503121561281a57600080fd5b82356001600160401b0381111561283057600080fd5b8301601f8101851361284157600080fd5b803561284f611b7d82611afb565b81815260059190911b8201830190838101908783111561286e57600080fd5b928401925b82841015611bc657612884846127f0565b82529284019290840190612873565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160c01b0316835292840192918401916001016128af565b80356001600160401b0381168114611a2f57600080fd5b600060208083850312156128fe57600080fd5b82356001600160401b0381111561291457600080fd5b8301601f8101851361292557600080fd5b8035612933611b7d82611afb565b81815260059190911b8201830190838101908783111561295257600080fd5b928401925b82841015611bc657612968846128d4565b82529284019290840190612957565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160401b031683529284019291840191600101612993565b8035601a81900b8114611a2f57600080fd5b6000602082840312156129dc57600080fd5b611a4f826129b8565b8035600d81900b8114611a2f57600080fd5b60006020808385031215612a0a57600080fd5b82356001600160401b03811115612a2057600080fd5b8301601f81018513612a3157600080fd5b8035612a3f611b7d82611afb565b81815260059190911b82018301908381019087831115612a5e57600080fd5b928401925b82841015611bc657612a74846129e5565b82529284019290840190612a63565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600d0b83529284019291840191600101612a9f565b60006020808385031215612ad157600080fd5b82356001600160401b03811115612ae757600080fd5b8301601f81018513612af857600080fd5b8035612b06611b7d82611afb565b81815260059190911b82018301908381019087831115612b2557600080fd5b928401925b82841015611bc6578335612b3d81612077565b82529284019290840190612b2a565b8035600181900b8114611a2f57600080fd5b60006020808385031215612b7157600080fd5b82356001600160401b03811115612b8757600080fd5b8301601f81018513612b9857600080fd5b8035612ba6611b7d82611afb565b81815260059190911b82018301908381019087831115612bc557600080fd5b928401925b82841015611bc657612bdb84612b4c565b82529284019290840190612bca565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600190810b8452938501939285019201612c06565b60006020808385031215612c3857600080fd5b82356001600160401b03811115612c4e57600080fd5b8301601f81018513612c5f57600080fd5b8035612c6d611b7d82611afb565b81815260059190911b82018301908381019087831115612c8c57600080fd5b928401925b82841015611bc657833582529284019290840190612c91565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835183529284019291840191600101612cc6565b80356affffffffffffffffffffff81168114611a2f57600080fd5b60006020808385031215612d1057600080fd5b82356001600160401b03811115612d2657600080fd5b8301601f81018513612d3757600080fd5b8035612d45611b7d82611afb565b81815260059190911b82018301908381019087831115612d6457600080fd5b928401925b82841015611bc657612d7a84612ce2565b82529284019290840190612d69565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516affffffffffffffffffffff1683529284019291840191600101612da5565b8035601081900b8114611a2f57600080fd5b600060208284031215612df257600080fd5b611a4f82612dce565b8035601c81900b8114611a2f57600080fd5b600060208284031215612e1f57600080fd5b611a4f82612dfb565b803568ffffffffffffffffff81168114611a2f57600080fd5b600060208284031215612e5357600080fd5b611a4f82612e28565b8035600781900b8114611a2f57600080fd5b600060208284031215612e8057600080fd5b611a4f82612e5c565b60006020808385031215612e9c57600080fd5b82356001600160401b03811115612eb257600080fd5b8301601f81018513612ec357600080fd5b8035612ed1611b7d82611afb565b81815260059190911b82018301908381019087831115612ef057600080fd5b928401925b82841015611bc657612f06846129b8565b82529284019290840190612ef5565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351601a0b83529284019291840191600101612f31565b80358015158114611a2f57600080fd5b600060208284031215612f7257600080fd5b611a4f82612f50565b60006020808385031215612f8e57600080fd5b82356001600160401b03811115612fa457600080fd5b8301601f81018513612fb557600080fd5b8035612fc3611b7d82611afb565b81815260059190911b82018301908381019087831115612fe257600080fd5b928401925b82841015611bc657612ff884612f50565b82529284019290840190612fe7565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351151583529284019291840191600101613023565b80356001600160d81b0381168114611a2f57600080fd5b6000602080838503121561306b57600080fd5b82356001600160401b0381111561308157600080fd5b8301601f8101851361309257600080fd5b80356130a0611b7d82611afb565b81815260059190911b820183019083810190878311156130bf57600080fd5b928401925b82841015611bc6576130d584613041565b825292840192908401906130c4565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160d81b031683529284019291840191600101613100565b8035601581900b8114611a2f57600080fd5b6000602080838503121561314a57600080fd5b82356001600160401b0381111561316057600080fd5b8301601f8101851361317157600080fd5b803561317f611b7d82611afb565b81815260059190911b8201830190838101908783111561319e57600080fd5b928401925b82841015611bc6576131b484613125565b825292840192908401906131a3565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160150b835292840192918401916001016131df565b80356001600160a81b0381168114611a2f57600080fd5b6000602080838503121561322857600080fd5b82356001600160401b0381111561323e57600080fd5b8301601f8101851361324f57600080fd5b803561325d611b7d82611afb565b81815260059190911b8201830190838101908783111561327c57600080fd5b928401925b82841015611bc657613292846131fe565b82529284019290840190613281565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160a81b0316835292840192918401916001016132bd565b8035600081900b8114611a2f57600080fd5b60006020828403121561330657600080fd5b611a4f826132e2565b6000602080838503121561332257600080fd5b82356001600160401b0381111561333857600080fd5b8301601f8101851361334957600080fd5b8035613357611b7d82611afb565b81815260059190911b8201830190838101908783111561337657600080fd5b928401925b82841015611bc65761338c84611caf565b8252928401929084019061337b565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160110b835292840192918401916001016133b7565b600060208083850312156133e957600080fd5b82356001600160401b038111156133ff57600080fd5b8301601f8101851361341057600080fd5b803561341e611b7d82611afb565b81815260059190911b8201830190838101908783111561343d57600080fd5b928401925b82841015611bc6576134538461204a565b82529284019290840190613442565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160160b8352928401929184019160010161347e565b803565ffffffffffff81168114611a2f57600080fd5b600060208083850312156134c657600080fd5b82356001600160401b038111156134dc57600080fd5b8301601f810185136134ed57600080fd5b80356134fb611b7d82611afb565b81815260059190911b8201830190838101908783111561351a57600080fd5b928401925b82841015611bc6576135308461349d565b8252928401929084019061351f565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835165ffffffffffff168352928401929184019160010161355b565b803563ffffffff81168114611a2f57600080fd5b600060208083850312156135a657600080fd5b82356001600160401b038111156135bc57600080fd5b8301601f810185136135cd57600080fd5b80356135db611b7d82611afb565b81815260059190911b820183019083810190878311156135fa57600080fd5b928401925b82841015611bc6576136108461357f565b825292840192908401906135ff565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835163ffffffff168352928401929184019160010161363b565b8035600981900b8114611a2f57600080fd5b60006020828403121561368157600080fd5b611a4f8261365d565b8035601781900b8114611a2f57600080fd5b6000602082840312156136ae57600080fd5b611a4f8261368a565b6000602082840312156136c957600080fd5b611a4f8261215e565b8035600681900b8114611a2f57600080fd5b600060208083850312156136f757600080fd5b82356001600160401b0381111561370d57600080fd5b8301601f8101851361371e57600080fd5b803561372c611b7d82611afb565b81815260059190911b8201830190838101908783111561374b57600080fd5b928401925b82841015611bc657613761846136d2565b82529284019290840190613750565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160060b8352928401929184019160010161378c565b6000602082840312156137bd57600080fd5b611a4f826136d2565b8035600f81900b8114611a2f57600080fd5b600060208083850312156137eb57600080fd5b82356001600160401b0381111561380157600080fd5b8301601f8101851361381257600080fd5b8035613820611b7d82611afb565b81815260059190911b8201830190838101908783111561383f57600080fd5b928401925b82841015611bc657613855846137c6565b82529284019290840190613844565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600f0b83529284019291840191600101613880565b600060208083850312156138b257600080fd5b82356001600160401b038111156138c857600080fd5b8301601f810185136138d957600080fd5b80356138e7611b7d82611afb565b81815260059190911b8201830190838101908783111561390657600080fd5b928401925b82841015611bc65761391c84611cdc565b8252928401929084019061390b565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351601e0b83529284019291840191600101613947565b803569ffffffffffffffffffff81168114611a2f57600080fd5b6000602080838503121561399357600080fd5b82356001600160401b038111156139a957600080fd5b8301601f810185136139ba57600080fd5b80356139c8611b7d82611afb565b81815260059190911b820183019083810190878311156139e757600080fd5b928401925b82841015611bc6576139fd84613966565b825292840192908401906139ec565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835169ffffffffffffffffffff1683529284019291840191600101613a28565b80356001600160681b0381168114611a2f57600080fd5b600060208284031215613a7957600080fd5b611a4f82613a50565b80356001600160701b0381168114611a2f57600080fd5b60006020808385031215613aac57600080fd5b82356001600160401b03811115613ac257600080fd5b8301601f81018513613ad357600080fd5b8035613ae1611b7d82611afb565b81815260059190911b82018301908381019087831115613b0057600080fd5b928401925b82841015611bc657613b1684613a82565b82529284019290840190613b05565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160701b031683529284019291840191600101613b41565b600060208284031215613b7857600080fd5b611a4f82613041565b803564ffffffffff81168114611a2f57600080fd5b60006020808385031215613ba957600080fd5b82356001600160401b03811115613bbf57600080fd5b8301601f81018513613bd057600080fd5b8035613bde611b7d82611afb565b81815260059190911b82018301908381019087831115613bfd57600080fd5b928401925b82841015611bc657613c1384613b81565b82529284019290840190613c02565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835164ffffffffff1683529284019291840191600101613c3e565b8035601b81900b8114611a2f57600080fd5b600060208284031215613c8557600080fd5b611a4f82613c61565b803562ffffff81168114611a2f57600080fd5b60006020808385031215613cb457600080fd5b82356001600160401b03811115613cca57600080fd5b8301601f81018513613cdb57600080fd5b8035613ce9611b7d82611afb565b81815260059190911b82018301908381019087831115613d0857600080fd5b928401925b82841015611bc657613d1e84613c8e565b82529284019290840190613d0d565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835162ffffff1683529284019291840191600101613d49565b803561ffff81168114611a2f57600080fd5b60006020808385031215613d8f57600080fd5b82356001600160401b03811115613da557600080fd5b8301601f81018513613db657600080fd5b8035613dc4611b7d82611afb565b81815260059190911b82018301908381019087831115613de357600080fd5b928401925b82841015611bc657613df984613d6a565b82529284019290840190613de8565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835161ffff1683529284019291840191600101613e24565b8035600281900b8114611a2f57600080fd5b600060208284031215613e6857600080fd5b611a4f82613e44565b80356001600160901b0381168114611a2f57600080fd5b60006020808385031215613e9b57600080fd5b82356001600160401b03811115613eb157600080fd5b8301601f81018513613ec257600080fd5b8035613ed0611b7d82611afb565b81815260059190911b82018301908381019087831115613eef57600080fd5b928401925b82841015611bc657613f0584613e71565b82529284019290840190613ef4565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160901b031683529284019291840191600101613f30565b60006020808385031215613f6857600080fd5b82356001600160401b0380821115613f7f57600080fd5b818501915085601f830112613f9357600080fd5b8135613fa1611b7d82611afb565b81815260059190911b83018401908481019088831115613fc057600080fd5b8585015b83811015613ff857803585811115613fdc5760008081fd5b613fea8b89838a0101611d36565b845250918601918601613fc4565b5098975050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561405a57603f19888603018452614048858351611de1565b9450928501929085019060010161402c565b5092979650505050505050565b6000602080838503121561407a57600080fd5b82356001600160401b0381111561409057600080fd5b8301601f810185136140a157600080fd5b80356140af611b7d82611afb565b81815260059190911b820183019083810190878311156140ce57600080fd5b928401925b82841015611bc6576140e484611e3a565b825292840192908401906140d3565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160981b03168352928401929184019160010161410f565b80356001600160b01b0381168114611a2f57600080fd5b60006020828403121561415d57600080fd5b611a4f82614134565b6000602080838503121561417957600080fd5b82356001600160401b0381111561418f57600080fd5b8301601f810185136141a057600080fd5b80356141ae611b7d82611afb565b81815260059190911b820183019083810190878311156141cd57600080fd5b928401925b82841015611bc6576141e384612dce565b825292840192908401906141d2565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160100b8352928401929184019160010161420e565b60006020828403121561423f57600080fd5b611a4f826137c6565b6000602080838503121561425b57600080fd5b82356001600160401b0381111561427157600080fd5b8301601f8101851361428257600080fd5b8035614290611b7d82611afb565b81815260059190911b820183019083810190878311156142af57600080fd5b928401925b82841015611bc6576142c5846127c3565b825292840192908401906142b4565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160190b835292840192918401916001016142f0565b80356001600160881b0381168114611a2f57600080fd5b6000602080838503121561433957600080fd5b82356001600160401b0381111561434f57600080fd5b8301601f8101851361436057600080fd5b803561436e611b7d82611afb565b81815260059190911b8201830190838101908783111561438d57600080fd5b928401925b82841015611bc6576143a38461430f565b82529284019290840190614392565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160881b0316835292840192918401916001016143ce565b6000602080838503121561440657600080fd5b82356001600160401b0381111561441c57600080fd5b8301601f8101851361442d57600080fd5b803561443b611b7d82611afb565b81815260059190911b8201830190838101908783111561445a57600080fd5b928401925b82841015611bc65761447084613c61565b8252928401929084019061445f565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351601b0b8352928401929184019160010161449b565b600060208083850312156144cd57600080fd5b82356001600160401b03808211156144e457600080fd5b818501915085601f8301126144f857600080fd5b8135614506611b7d82611afb565b81815260059190911b8301840190848101908883111561452557600080fd5b8585015b83811015613ff8578035858111156145415760008081fd5b61454f8b89838a0101611d36565b845250918601918601614529565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561405a57603f198886030184526145a0858351611de1565b94509285019290850190600101614584565b6000602082840312156145c457600080fd5b611a4f82613125565b8035601881900b8114611a2f57600080fd5b6000602082840312156145f157600080fd5b611a4f826145cd565b60006020828403121561460c57600080fd5b611a4f826129e5565b80356001600160b81b0381168114611a2f57600080fd5b60006020828403121561463e57600080fd5b611a4f82614615565b60006020828403121561465957600080fd5b611a4f826126a2565b6000602080838503121561467557600080fd5b82356001600160401b0381111561468b57600080fd5b8301601f8101851361469c57600080fd5b80356146aa611b7d82611afb565b81815260059190911b820183019083810190878311156146c957600080fd5b928401925b82841015611bc6576146df84614134565b825292840192908401906146ce565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160b01b03168352928401929184019160010161470a565b60006020828403121561474157600080fd5b611a4f82612b4c565b60006020828403121561475c57600080fd5b611a4f82611b1e565b6000602080838503121561477857600080fd5b82356001600160401b0381111561478e57600080fd5b8301601f8101851361479f57600080fd5b80356147ad611b7d82611afb565b81815260059190911b820183019083810190878311156147cc57600080fd5b928401925b82841015611bc6576147e284611a88565b825292840192908401906147d1565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600c0b8352928401929184019160010161480d565b60006020828403121561483e57600080fd5b611a4f82613d6a565b6000602080838503121561485a57600080fd5b82356001600160401b0381111561487057600080fd5b8301601f8101851361488157600080fd5b803561488f611b7d82611afb565b81815260059190911b820183019083810190878311156148ae57600080fd5b928401925b82841015611bc6576148c484612e28565b825292840192908401906148b3565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835168ffffffffffffffffff16835292840192918401916001016148ef565b8035600e81900b8114611a2f57600080fd5b6000602080838503121561493b57600080fd5b82356001600160401b0381111561495157600080fd5b8301601f8101851361496257600080fd5b8035614970611b7d82611afb565b81815260059190911b8201830190838101908783111561498f57600080fd5b928401925b82841015611bc6576149a584614916565b82529284019290840190614994565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600e0b835292840192918401916001016149d0565b8035600581900b8114611a2f57600080fd5b600060208284031215614a1357600080fd5b611a4f826149ef565b600060208284031215614a2e57600080fd5b611a4f82613a82565b60006020808385031215614a4a57600080fd5b82356001600160401b03811115614a6057600080fd5b8301601f81018513614a7157600080fd5b8035614a7f611b7d82611afb565b81815260059190911b82018301908381019087831115614a9e57600080fd5b928401925b82841015611bc657614ab484613a50565b82529284019290840190614aa3565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160681b031683529284019291840191600101614adf565b600060208284031215614b1657600080fd5b611a4f82614916565b600060208284031215614b3157600080fd5b611a4f826131fe565b600060208284031215614b4c57600080fd5b611a4f82611e6c565b600060208284031215614b6757600080fd5b611a4f8261430f565b600060208284031215614b8257600080fd5b611a4f826124f7565b60006020808385031215614b9e57600080fd5b82356001600160401b03811115614bb457600080fd5b8301601f81018513614bc557600080fd5b8035614bd3611b7d82611afb565b81815260059190911b82018301908381019087831115614bf257600080fd5b928401925b82841015611bc657614c08846149ef565b82529284019290840190614bf7565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160050b83529284019291840191600101614c33565b600060208284031215614c6457600080fd5b611a4f82611f72565b60006020808385031215614c8057600080fd5b82356001600160401b03811115614c9657600080fd5b8301601f81018513614ca757600080fd5b8035614cb5611b7d82611afb565b81815260059190911b82018301908381019087831115614cd457600080fd5b928401925b82841015611bc657614cea84611f45565b82529284019290840190614cd9565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160120b83529284019291840191600101614d15565b600060208284031215614d4657600080fd5b611a4f82612ce2565b600060208284031215614d6157600080fd5b611a4f82612304565b60006020808385031215614d7d57600080fd5b82356001600160401b03811115614d9357600080fd5b8301601f81018513614da457600080fd5b8035614db2611b7d82611afb565b81815260059190911b82018301908381019087831115614dd157600080fd5b928401925b82841015611bc657614de7846145cd565b82529284019290840190614dd6565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160180b83529284019291840191600101614e12565b600060208284031215614e4357600080fd5b611a4f8261349d565b80356001600160e01b0381168114611a2f57600080fd5b600060208284031215614e7557600080fd5b611a4f82614e4c565b60006020808385031215614e9157600080fd5b82356001600160401b03811115614ea757600080fd5b8301601f81018513614eb857600080fd5b8035614ec6611b7d82611afb565b81815260059190911b82018301908381019087831115614ee557600080fd5b928401925b82841015611bc657614efb8461365d565b82529284019290840190614eea565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160090b83529284019291840191600101614f26565b60006020808385031215614f5857600080fd5b82356001600160401b03811115614f6e57600080fd5b8301601f81018513614f7f57600080fd5b8035614f8d611b7d82611afb565b81815260059190911b82018301908381019087831115614fac57600080fd5b928401925b82841015611bc657614fc284614e4c565b82529284019290840190614fb1565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160e01b031683529284019291840191600101614fed565b80356001600160d01b0381168114611a2f57600080fd5b60006020828403121561503b57600080fd5b611a4f82615012565b60006020828403121561505657600080fd5b611a4f8261357f565b63ffffffff841681526001600160401b038316602082015260606040820152600061508d6060830184611de1565b95945050505050565b6000602082840312156150a857600080fd5b611a4f82613966565b6000602082840312156150c357600080fd5b611a4f826128d4565b80356001600160e81b0381168114611a2f57600080fd5b6000602082840312156150f557600080fd5b611a4f826150cc565b6000602080838503121561511157600080fd5b82356001600160401b0381111561512757600080fd5b8301601f8101851361513857600080fd5b8035615146611b7d82611afb565b81815260059190911b8201830190838101908783111561516557600080fd5b928401925b82841015611bc65761517b84612dfb565b8252928401929084019061516a565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351601c0b835292840192918401916001016151a6565b6000602082840312156151d757600080fd5b611a4f826127f0565b8035600881900b8114611a2f57600080fd5b6000602080838503121561520557600080fd5b82356001600160401b0381111561521b57600080fd5b8301601f8101851361522c57600080fd5b803561523a611b7d82611afb565b81815260059190911b8201830190838101908783111561525957600080fd5b928401925b82841015611bc65761526f846151e0565b8252928401929084019061525e565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160080b8352928401929184019160010161529a565b600060208083850312156152cc57600080fd5b82356001600160401b038111156152e257600080fd5b8301601f810185136152f357600080fd5b8035615301611b7d82611afb565b81815260059190911b8201830190838101908783111561532057600080fd5b928401925b82841015611bc657615336846132e2565b82529284019290840190615325565b602080825282518282018190526000919084820190604085019084805b82811015615380578451820b84529385019392850192600101615362565b5091979650505050505050565b600060208083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b8301601f810185136153c757600080fd5b80356153d5611b7d82611afb565b81815260059190911b820183019083810190878311156153f457600080fd5b928401925b82841015611bc65761540a8461277b565b825292840192908401906153f9565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351601d0b83529284019291840191600101615435565b6000602080838503121561546757600080fd5b82356001600160401b0381111561547d57600080fd5b8301601f8101851361548e57600080fd5b803561549c611b7d82611afb565b81815260059190911b820183019083810190878311156154bb57600080fd5b928401925b82841015611bc6576154d184611c82565b825292840192908401906154c0565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160040b835292840192918401916001016154fc565b6000602080838503121561552e57600080fd5b82356001600160401b0381111561554457600080fd5b8301601f8101851361555557600080fd5b8035615563611b7d82611afb565b81815260059190911b8201830190838101908783111561558257600080fd5b928401925b82841015611bc65761559884613e44565b82529284019290840190615587565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160020b835292840192918401916001016155c3565b600060208083850312156155f557600080fd5b82356001600160401b0381111561560b57600080fd5b8301601f8101851361561c57600080fd5b803561562a611b7d82611afb565b81815260059190911b8201830190838101908783111561564957600080fd5b928401925b82841015611bc65761565f846150cc565b8252928401929084019061564e565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160e81b03168352928401929184019160010161568a565b600060208083850312156156c257600080fd5b82356001600160401b038111156156d857600080fd5b8301601f810185136156e957600080fd5b80356156f7611b7d82611afb565b81815260059190911b8201830190838101908783111561571657600080fd5b928401925b82841015611bc65761572c8461368a565b8252928401929084019061571b565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160170b83529284019291840191600101615757565b60006020828403121561578857600080fd5b611a4f826151e0565b600060208083850312156157a457600080fd5b82356001600160401b038111156157ba57600080fd5b8301601f810185136157cb57600080fd5b80356157d9611b7d82611afb565b81815260059190911b820183019083810190878311156157f857600080fd5b928401925b82841015611bc65761580e84612e5c565b825292840192908401906157fd565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160070b83529284019291840191600101615839565b60006020828403121561586a57600080fd5b611a4f82613e71565b60006020828403121561588557600080fd5b611a4f82613c8e565b600060208083850312156158a157600080fd5b82356001600160401b038111156158b757600080fd5b8301601f810185136158c857600080fd5b80356158d6611b7d82611afb565b81815260059190911b820183019083810190878311156158f557600080fd5b928401925b82841015611bc65761590b84611a18565b825292840192908401906158fa565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160801b031683529284019291840191600101615936565b6000602080838503121561596e57600080fd5b82356001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80356159a3611b7d82611afb565b81815260059190911b820183019083810190878311156159c257600080fd5b928401925b82841015611bc6576159d884615012565b825292840192908401906159c7565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160d01b031683529284019291840191600101615a03565b60006020808385031215615a3b57600080fd5b82356001600160401b03811115615a5157600080fd5b8301601f81018513615a6257600080fd5b8035615a70611b7d82611afb565b81815260059190911b82018301908381019087831115615a8f57600080fd5b928401925b82841015611bc657615aa584614615565b82529284019290840190615a94565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160b81b031683529284019291840191600101615ad0565b602081526000825160406020840152615b116060840182611de1565b9050602084015160408401528091505092915050565b60006020808385031215615b3a57600080fd5b82356001600160401b03811115615b5057600080fd5b8301601f81018513615b6157600080fd5b8035615b6f611b7d82611afb565b81815260059190911b82018301908381019087831115615b8e57600080fd5b928401925b82841015611bc657615ba484611c1e565b82529284019290840190615b93565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160781b031683529284019291840191600101615bcf565b60006020808385031215615c0757600080fd5b82356001600160401b03811115615c1d57600080fd5b8301601f81018513615c2e57600080fd5b8035615c3c611b7d82611afb565b81815260059190911b82018301908381019087831115615c5b57600080fd5b928401925b82841015611bc657615c7184611a56565b82529284019290840190615c60565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160601b031683529284019291840191600101615c9c565b600060208284031215615cd357600080fd5b611a4f82613b81565b634e487b7160e01b600052601160045260246000fd5b600081810b9083900b01607f8113607f1982121715615d1357615d13615cdc565b92915050565b8082018281126000831280158216821582161715615d3957615d39615cdc565b505092915050565b63ffffffff828116828216039080821115615d5e57615d5e615cdc565b5092915050565b600481810b9083900b01647fffffffff8113647fffffffff1982121715615d1357615d13615cdc565b600181811c90821680615da257607f821691505b602082108103615dc257634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a5b87b6881e1a012e4a59d55c230cfcf3a2342b83efdbfb3c5f5cfa532fc854864736f6c63430008120033"; + private static IntegrationTestEnv testEnv; + private static FileId fileId; + private static ContractId contractId; + + @BeforeAll + public static void beforeAll() throws Exception { + testEnv = new IntegrationTestEnv(1); + + @Var var response = new FileCreateTransaction().setKeys(testEnv.operatorKey).execute(testEnv.client); + + fileId = Objects.requireNonNull(response.getReceipt(testEnv.client).fileId); + + new FileAppendTransaction().setFileId(fileId).setContents(SMART_CONTRACT_BYTECODE).setMaxChunks(31) + .execute(testEnv.client); + + response = new ContractCreateTransaction().setAdminKey(testEnv.operatorKey).setGas(1500000) + .setConstructorParameters(new ContractFunctionParameters()).setBytecodeFileId(fileId) + .execute(testEnv.client); + + contractId = Objects.requireNonNull(response.getReceipt(testEnv.client).contractId); + } + + @AfterAll + public static void afterAll() throws Exception { + new ContractDeleteTransaction().setTransferAccountId(testEnv.operatorId).setContractId(contractId) + .execute(testEnv.client).getReceipt(testEnv.client); + + new FileDeleteTransaction().setFileId(fileId).execute(testEnv.client).getReceipt(testEnv.client); + + testEnv.close(); + } + + // so we don't get "network is busy" error + @AfterEach + public void afterEach() throws InterruptedException { + Thread.sleep(150); + } + + @Test + @DisplayName("Can receive uint8 min value from contract call") + void canCallContractFunctionUint8Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint8", new ContractFunctionParameters().addUint8((byte) 0x0)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint8(0)).isEqualTo((byte) 0x0); + } + + @Test + @DisplayName("Can receive uint8 max value from contract call") + void canCallContractFunctionUint8Max() throws Exception { + int uint8Max = 255; + byte uint8MaxByte = (byte) uint8Max; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint8", new ContractFunctionParameters().addUint8(uint8MaxByte)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var uint8MaxFromResponse = Byte.toUnsignedInt(response.getUint8(0)); + + assertThat(uint8MaxFromResponse).isEqualTo(uint8Max); + } + + @Test + @DisplayName("Can receive uint8 array value from contract call") + void canCallContractFunctionUint8Array() throws Exception { + byte uint8MinByte = (byte) 0x0; + int uint8Max = 255; + byte uint8MaxByte = (byte) uint8Max; + byte[] uint8Array = {uint8MinByte, uint8MaxByte}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint8Arr", new ContractFunctionParameters().addUint8Array(uint8Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (int[]) response.getResult("(uint8[])").get(0); + + assertThat(responseResult[0]).isEqualTo(uint8MinByte); + assertThat(responseResult[1]).isEqualTo(uint8Max); + } + + @Test + @DisplayName("Can receive uint16 min value from contract call") + void canCallContractFunctionUint16Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint16", new ContractFunctionParameters().addUint16(0)).setQueryPayment(new Hbar(10)) + .execute(testEnv.client); + + assertThat(response.getUint32(0)).isEqualTo(0); + } + + @Test + @DisplayName("Can receive uint16 max value from contract call") + void canCallContractFunctionUint16Max() throws Exception { + var uint16Max = "65535"; + int uint16MaxInt = Integer.parseUnsignedInt(uint16Max); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint16", new ContractFunctionParameters().addUint16(uint16MaxInt)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var uint16MaxIntFromResponse = Integer.toUnsignedString(response.getUint32(0)); + + assertThat(uint16MaxIntFromResponse).isEqualTo(uint16Max); + } + + @Test + @DisplayName("Can receive uint16 array value from contract call") + void canCallContractFunctionUint16Array() throws Exception { + int uint16MinInt = 0; + var uint16Max = "65535"; + int uint16MaxInt = Integer.parseUnsignedInt(uint16Max); + int[] uint16Array = {uint16MinInt, uint16MaxInt}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint16Arr", new ContractFunctionParameters().addUint16Array(uint16Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (int[]) response.getResult("(uint16[])").get(0); + + assertThat(responseResult).isEqualTo(uint16Array); + } + + @Test + @DisplayName("Can receive uint24 min value from contract call") + void canCallContractFunctionUint24Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint24", new ContractFunctionParameters().addUint24(0)).setQueryPayment(new Hbar(10)) + .execute(testEnv.client); + + assertThat(response.getUint32(0)).isEqualTo(0); + } + + @Test + @DisplayName("Can receive uint24 max value from contract call") + void canCallContractFunctionUint24Max() throws Exception { + var uint24Max = "16777215"; + int uint24MaxInt = Integer.parseUnsignedInt(uint24Max); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint24", new ContractFunctionParameters().addUint24(uint24MaxInt)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var uint24MaxIntFromResponse = Integer.toUnsignedString(response.getUint32(0)); + + assertThat(uint24MaxIntFromResponse).isEqualTo(uint24Max); + } + + @Test + @DisplayName("Can receive uint24 array value from contract call") + void canCallContractFunctionUint24Array() throws Exception { + int uint24MinInt = 0; + var uint24Max = "16777215"; + int uint24MaxInt = Integer.parseUnsignedInt(uint24Max); + int[] uint24Array = {uint24MinInt, uint24MaxInt}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint24Arr", new ContractFunctionParameters().addUint24Array(uint24Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (int[]) response.getResult("(uint24[])").get(0); + + assertThat(responseResult).isEqualTo(uint24Array); + } + + @Test + @DisplayName("Can receive uint32 min value from contract call") + void canCallContractFunctionUint32Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint32", new ContractFunctionParameters().addUint32(0)).setQueryPayment(new Hbar(10)) + .execute(testEnv.client); + + assertThat(response.getUint32(0)).isEqualTo(0); + } + + @Test + @DisplayName("Can receive uint32 max value from contract call") + void canCallContractFunctionUint32Max() throws Exception { + var uint32Max = "4294967295"; + int uint32MaxInt = Integer.parseUnsignedInt(uint32Max); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint32", new ContractFunctionParameters().addUint32(uint32MaxInt)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var uint32MaxIntFromResponse = Integer.toUnsignedString(response.getUint32(0)); + + assertThat(uint32MaxIntFromResponse).isEqualTo(uint32Max); + } + + @Test + @DisplayName("Can receive uint32 array value from contract call") + void canCallContractFunctionUint32Array() throws Exception { + int uint32MinInt = 0; + var uint32Max = "4294967295"; + int uint32MaxInt = Integer.parseUnsignedInt(uint32Max); + int[] uint32Array = {uint32MinInt, uint32MaxInt}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint32Arr", new ContractFunctionParameters().addUint32Array(uint32Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (long[]) response.getResult("(uint32[])").get(0); + + assertThat(responseResult[0]).isEqualTo(uint32MinInt); + assertThat(responseResult[1]).isEqualTo(Long.parseUnsignedLong(uint32Max)); + } + + @Test + @DisplayName("Can receive uint40 min value from contract call") + void canCallContractFunctionUint40Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint40", new ContractFunctionParameters().addUint40(0)).setQueryPayment(new Hbar(10)) + .execute(testEnv.client); + + assertThat(response.getUint64(0)).isEqualTo(0); + } + + @Test + @DisplayName("Can receive uint40 max value from contract call") + void canCallContractFunctionUint40Max() throws Exception { + var uint40Max = "109951162777"; + long uint40MaxLong = Long.parseUnsignedLong(uint40Max); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint40", new ContractFunctionParameters().addUint40(uint40MaxLong)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var uint64MaxLongFromResponse = Long.toUnsignedString(response.getUint64(0)); + + assertThat(uint64MaxLongFromResponse).isEqualTo(uint40Max); + } + + @Test + @DisplayName("Can receive uint40 array value from contract call") + void canCallContractFunctionUint40Array() throws Exception { + long uint40MinLong = 0; + var uint40Max = "109951162777"; + long uint40MaxLong = Long.parseUnsignedLong(uint40Max); + long[] uint40Array = {uint40MinLong, uint40MaxLong}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint40Arr", new ContractFunctionParameters().addUint40Array(uint40Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (long[]) response.getResult("(uint40[])").get(0); + + assertThat(responseResult).isEqualTo(uint40Array); + } + + @Test + @DisplayName("Can receive uint48 min value from contract call") + void canCallContractFunctionUint48Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint48", new ContractFunctionParameters().addUint48(0)).setQueryPayment(new Hbar(10)) + .execute(testEnv.client); + + assertThat(response.getUint64(0)).isEqualTo(0); + } + + @Test + @DisplayName("Can receive uint48 max value from contract call") + void canCallContractFunctionUint48Max() throws Exception { + var uint48Max = "281474976710655"; + long uint48MaxLong = Long.parseUnsignedLong(uint48Max); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint48", new ContractFunctionParameters().addUint48(uint48MaxLong)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var uint64MaxLongFromResponse = Long.toUnsignedString(response.getUint64(0)); + + assertThat(uint64MaxLongFromResponse).isEqualTo(uint48Max); + } + + @Test + @DisplayName("Can receive uint48 array value from contract call") + void canCallContractFunctionUint48Array() throws Exception { + long uint48MinLong = 0; + var uint48Max = "281474976710655"; + long uint48MaxLong = Long.parseUnsignedLong(uint48Max); + long[] uint48Array = {uint48MinLong, uint48MaxLong}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint48Arr", new ContractFunctionParameters().addUint48Array(uint48Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (long[]) response.getResult("(uint48[])").get(0); + + assertThat(responseResult).isEqualTo(uint48Array); + } + + @Test + @DisplayName("Can receive uint56 min value from contract call") + void canCallContractFunctionUint56Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint56", new ContractFunctionParameters().addUint56(0)).setQueryPayment(new Hbar(10)) + .execute(testEnv.client); + + assertThat(response.getUint64(0)).isEqualTo(0); + } + + @Test + @DisplayName("Can receive uint56 max value from contract call") + void canCallContractFunctionUint56Max() throws Exception { + var uint56Max = "72057594037927935"; + long uint56MaxLong = Long.parseUnsignedLong(uint56Max); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint56", new ContractFunctionParameters().addUint56(uint56MaxLong)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var uint64MaxLongFromResponse = Long.toUnsignedString(response.getUint64(0)); + + assertThat(uint64MaxLongFromResponse).isEqualTo(uint56Max); + } + + @Test + @DisplayName("Can receive uint56 array value from contract call") + void canCallContractFunctionUint56Array() throws Exception { + long uint56MinLong = 0; + var uint56Max = "72057594037927935"; + long uint56MaxLong = Long.parseUnsignedLong(uint56Max); + long[] uint56Array = {uint56MinLong, uint56MaxLong}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint56Arr", new ContractFunctionParameters().addUint56Array(uint56Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (long[]) response.getResult("(uint56[])").get(0); + + assertThat(responseResult).isEqualTo(uint56Array); + } + + @Test + @DisplayName("Can receive uint64 min value from contract call") + void canCallContractFunctionUint64Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint64", new ContractFunctionParameters().addUint64(0)).setQueryPayment(new Hbar(10)) + .execute(testEnv.client); + + assertThat(response.getUint64(0)).isEqualTo(0); + } + + @Test + @DisplayName("Can receive uint64 max value from contract call") + void canCallContractFunctionUint64Max() throws Exception { + var uint64Max = "9223372036854775807"; + long uint64MaxLong = Long.parseUnsignedLong(uint64Max); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint64", new ContractFunctionParameters().addUint64(uint64MaxLong)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var uint64MaxLongFromResponse = Long.toUnsignedString(response.getUint64(0)); + + assertThat(uint64MaxLongFromResponse).isEqualTo(uint64Max); + } + + @Test + @DisplayName("Can receive uint64 array value from contract call") + void canCallContractFunctionUint64Array() throws Exception { + long uint64MinLong = 0; + var uint64Max = "9223372036854775807"; + long uint64MaxLong = Long.parseUnsignedLong(uint64Max); + long[] uint64Array = {uint64MinLong, uint64MaxLong}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint64Arr", new ContractFunctionParameters().addUint64Array(uint64Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint64[])").get(0); + + assertThat(responseResult[0]).isEqualTo(uint64MinLong); + assertThat(responseResult[1]).isEqualTo(Long.parseUnsignedLong(uint64Max)); + } + + @Test + @DisplayName("Can receive uint72 min value from contract call") + void canCallContractFunctionUint72Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint72", new ContractFunctionParameters().addUint72(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint72 max value from contract call") + void canCallContractFunctionUint72Max() throws Exception { + BigInteger uint72Max = new BigInteger("4722366482869645213695"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint72", new ContractFunctionParameters().addUint72(uint72Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint72Max); + } + + @Test + @DisplayName("Can receive uint72 array value from contract call") + void canCallContractFunctionUint72Array() throws Exception { + BigInteger uint72Min = BigInteger.ZERO; + BigInteger uint72Max = new BigInteger("4722366482869645213695"); + BigInteger[] uint72Array = {uint72Min, uint72Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint72Arr", new ContractFunctionParameters().addUint72Array(uint72Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint72[])").get(0); + + assertThat(responseResult).isEqualTo(uint72Array); + } + + @Test + @DisplayName("Can receive uint80 min value from contract call") + void canCallContractFunctionUint80Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint80", new ContractFunctionParameters().addUint80(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint80 max value from contract call") + void canCallContractFunctionUint80Max() throws Exception { + BigInteger uint80Max = new BigInteger("1208925819614629174706175"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint80", new ContractFunctionParameters().addUint80(uint80Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint80Max); + } + + @Test + @DisplayName("Can receive uint80 array value from contract call") + void canCallContractFunctionUint80Array() throws Exception { + BigInteger uint80Min = BigInteger.ZERO; + BigInteger uint80Max = new BigInteger("1208925819614629174706175"); + BigInteger[] uint80Array = {uint80Min, uint80Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint80Arr", new ContractFunctionParameters().addUint80Array(uint80Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint80[])").get(0); + + assertThat(responseResult).isEqualTo(uint80Array); + } + + @Test + @DisplayName("Can receive uint88 min value from contract call") + void canCallContractFunctionUint88Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint88", new ContractFunctionParameters().addUint88(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint88 max value from contract call") + void canCallContractFunctionUint88Max() throws Exception { + BigInteger uint88Max = new BigInteger("309485009821345068724781055"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint88", new ContractFunctionParameters().addUint88(uint88Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint88Max); + } + + @Test + @DisplayName("Can receive uint88 array value from contract call") + void canCallContractFunctionUint88Array() throws Exception { + BigInteger uint88Min = BigInteger.ZERO; + BigInteger uint88Max = new BigInteger("309485009821345068724781055"); + BigInteger[] uint88Array = {uint88Min, uint88Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint88Arr", new ContractFunctionParameters().addUint88Array(uint88Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint88[])").get(0); + + assertThat(responseResult).isEqualTo(uint88Array); + } + + @Test + @DisplayName("Can receive uint96 min value from contract call") + void canCallContractFunctionUint96Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint96", new ContractFunctionParameters().addUint96(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint96 max value from contract call") + void canCallContractFunctionUint96Max() throws Exception { + BigInteger uint96Max = new BigInteger("79228162514264337593543950335"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint96", new ContractFunctionParameters().addUint96(uint96Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint96Max); + } + + @Test + @DisplayName("Can receive uint96 array value from contract call") + void canCallContractFunctionUint96Array() throws Exception { + BigInteger uint96Min = BigInteger.ZERO; + BigInteger uint96Max = new BigInteger("79228162514264337593543950335"); + BigInteger[] uint96Array = {uint96Min, uint96Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint96Arr", new ContractFunctionParameters().addUint96Array(uint96Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint96[])").get(0); + + assertThat(responseResult).isEqualTo(uint96Array); + } + + @Test + @DisplayName("Can receive uint104 min value from contract call") + void canCallContractFunctionUint104Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint104", new ContractFunctionParameters().addUint104(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint104 max value from contract call") + void canCallContractFunctionUint104Max() throws Exception { + BigInteger uint104Max = new BigInteger("20282409603651670423947251286015"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint104", new ContractFunctionParameters().addUint104(uint104Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint104Max); + } + + @Test + @DisplayName("Can receive uint104 array value from contract call") + void canCallContractFunctionUint104Array() throws Exception { + BigInteger uint104Min = BigInteger.ZERO; + BigInteger uint104Max = new BigInteger("20282409603651670423947251286015"); + BigInteger[] uint104Array = {uint104Min, uint104Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint104Arr", new ContractFunctionParameters().addUint104Array(uint104Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint104[])").get(0); + + assertThat(responseResult).isEqualTo(uint104Array); + } + + @Test + @DisplayName("Can receive uint112 min value from contract call") + void canCallContractFunctionUint112Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint112", new ContractFunctionParameters().addUint112(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint112 max value from contract call") + void canCallContractFunctionUint112Max() throws Exception { + BigInteger uint112Max = new BigInteger("5192296858534827628530496329220095"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint112", new ContractFunctionParameters().addUint112(uint112Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint112Max); + } + + @Test + @DisplayName("Can receive uint112 array value from contract call") + void canCallContractFunctionUint112Array() throws Exception { + BigInteger uint112Min = BigInteger.ZERO; + BigInteger uint112Max = new BigInteger("5192296858534827628530496329220095"); + BigInteger[] uint112Array = {uint112Min, uint112Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint112Arr", new ContractFunctionParameters().addUint112Array(uint112Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint112[])").get(0); + + assertThat(responseResult).isEqualTo(uint112Array); + } + + @Test + @DisplayName("Can receive uint120 min value from contract call") + void canCallContractFunctionUint120Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint120", new ContractFunctionParameters().addUint120(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint120 max value from contract call") + void canCallContractFunctionUint120Max() throws Exception { + BigInteger uint120Max = new BigInteger("1329227995784915872903807060280344575"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint120", new ContractFunctionParameters().addUint120(uint120Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint120Max); + } + + @Test + @DisplayName("Can receive uint120 array value from contract call") + void canCallContractFunctionUint120Array() throws Exception { + BigInteger uint120Min = BigInteger.ZERO; + BigInteger uint120Max = new BigInteger("1329227995784915872903807060280344575"); + BigInteger[] uint120Array = {uint120Min, uint120Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint120Arr", new ContractFunctionParameters().addUint120Array(uint120Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint120[])").get(0); + + assertThat(responseResult).isEqualTo(uint120Array); + } + + @Test + @DisplayName("Can receive uint128 min value from contract call") + void canCallContractFunctionUint128Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint128", new ContractFunctionParameters().addUint128(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint128 max value from contract call") + void canCallContractFunctionUint128Max() throws Exception { + BigInteger uint128Max = new BigInteger("340282366920938463463374607431768211455"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint128", new ContractFunctionParameters().addUint128(uint128Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint128Max); + } + + @Test + @DisplayName("Can receive uint128 array value from contract call") + void canCallContractFunctionUint128Array() throws Exception { + BigInteger uint128Min = BigInteger.ZERO; + BigInteger uint128Max = new BigInteger("340282366920938463463374607431768211455"); + BigInteger[] uint128Array = {uint128Min, uint128Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint128Arr", new ContractFunctionParameters().addUint128Array(uint128Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint128[])").get(0); + + assertThat(responseResult).isEqualTo(uint128Array); + } + + @Test + @DisplayName("Can receive uint136 min value from contract call") + void canCallContractFunctionUint136Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint136", new ContractFunctionParameters().addUint136(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint136 max value from contract call") + void canCallContractFunctionUint136Max() throws Exception { + BigInteger uint136Max = new BigInteger("87112285931760246646623899502532662132735"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint136", new ContractFunctionParameters().addUint136(uint136Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint136Max); + } + + @Test + @DisplayName("Can receive uint136 array value from contract call") + void canCallContractFunctionUint136Array() throws Exception { + BigInteger uint136Min = BigInteger.ZERO; + BigInteger uint136Max = new BigInteger("87112285931760246646623899502532662132735"); + BigInteger[] uint136Array = {uint136Min, uint136Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint136Arr", new ContractFunctionParameters().addUint136Array(uint136Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint136[])").get(0); + + assertThat(responseResult).isEqualTo(uint136Array); + } + + @Test + @DisplayName("Can receive uint144 min value from contract call") + void canCallContractFunctionUint144Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint144", new ContractFunctionParameters().addUint144(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint144 max value from contract call") + void canCallContractFunctionUint144Max() throws Exception { + BigInteger uint144Max = new BigInteger("22300745198530623141535718272648361505980415"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint144", new ContractFunctionParameters().addUint144(uint144Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint144Max); + } + + @Test + @DisplayName("Can receive uint144 array value from contract call") + void canCallContractFunctionUint144Array() throws Exception { + BigInteger uint144Min = BigInteger.ZERO; + BigInteger uint144Max = new BigInteger("22300745198530623141535718272648361505980415"); + BigInteger[] uint144Array = {uint144Min, uint144Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint144Arr", new ContractFunctionParameters().addUint144Array(uint144Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint144[])").get(0); + + assertThat(responseResult).isEqualTo(uint144Array); + } + + @Test + @DisplayName("Can receive uint152 min value from contract call") + void canCallContractFunctionUint152Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint152", new ContractFunctionParameters().addUint152(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint152 max value from contract call") + void canCallContractFunctionUint152Max() throws Exception { + BigInteger uint152Max = new BigInteger("5708990770823839524233143877797980545530986495"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint152", new ContractFunctionParameters().addUint152(uint152Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint152Max); + } + + @Test + @DisplayName("Can receive uint152 array value from contract call") + void canCallContractFunctionUint152Array() throws Exception { + BigInteger uint152Min = BigInteger.ZERO; + BigInteger uint152Max = new BigInteger("5708990770823839524233143877797980545530986495"); + BigInteger[] uint152Array = {uint152Min, uint152Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint152Arr", new ContractFunctionParameters().addUint152Array(uint152Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint152[])").get(0); + + assertThat(responseResult).isEqualTo(uint152Array); + } + + @Test + @DisplayName("Can receive uint160 min value from contract call") + void canCallContractFunctionUint160Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint160", new ContractFunctionParameters().addUint160(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint160 max value from contract call") + void canCallContractFunctionUint160Max() throws Exception { + BigInteger uint160Max = new BigInteger("1461501637330902918203684832716283019655932542975"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint160", new ContractFunctionParameters().addUint160(uint160Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint160Max); + } + + @Test + @DisplayName("Can receive uint160 array value from contract call") + void canCallContractFunctionUint160Array() throws Exception { + BigInteger uint160Min = BigInteger.ZERO; + BigInteger uint160Max = new BigInteger("1461501637330902918203684832716283019655932542975"); + BigInteger[] uint160Array = {uint160Min, uint160Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint160Arr", new ContractFunctionParameters().addUint160Array(uint160Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint160[])").get(0); + + assertThat(responseResult).isEqualTo(uint160Array); + } + + @Test + @DisplayName("Can receive uint168 min value from contract call") + void canCallContractFunctionUint168Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint168", new ContractFunctionParameters().addUint168(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint168 max value from contract call") + void canCallContractFunctionUint168Max() throws Exception { + BigInteger uint168Max = new BigInteger("374144419156711147060143317175368453031918731001855"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint168", new ContractFunctionParameters().addUint168(uint168Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint168Max); + } + + @Test + @DisplayName("Can receive uint168 array value from contract call") + void canCallContractFunctionUint168Array() throws Exception { + BigInteger uint168Min = BigInteger.ZERO; + BigInteger uint168Max = new BigInteger("374144419156711147060143317175368453031918731001855"); + BigInteger[] uint168Array = {uint168Min, uint168Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint168Arr", new ContractFunctionParameters().addUint168Array(uint168Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint168[])").get(0); + + assertThat(responseResult).isEqualTo(uint168Array); + } + + @Test + @DisplayName("Can receive uint176 min value from contract call") + void canCallContractFunctionUint176Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint176", new ContractFunctionParameters().addUint176(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint176 max value from contract call") + void canCallContractFunctionUint176Max() throws Exception { + BigInteger uint176Max = new BigInteger("95780971304118053647396689196894323976171195136475135"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint176", new ContractFunctionParameters().addUint176(uint176Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint176Max); + } + + @Test + @DisplayName("Can receive uint176 array value from contract call") + void canCallContractFunctionUint176Array() throws Exception { + BigInteger uint176Min = BigInteger.ZERO; + BigInteger uint176Max = new BigInteger("95780971304118053647396689196894323976171195136475135"); + BigInteger[] uint176Array = {uint176Min, uint176Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint176Arr", new ContractFunctionParameters().addUint176Array(uint176Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint176[])").get(0); + + assertThat(responseResult).isEqualTo(uint176Array); + } + + @Test + @DisplayName("Can receive uint184 min value from contract call") + void canCallContractFunctionUint184Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint184", new ContractFunctionParameters().addUint184(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint184 max value from contract call") + void canCallContractFunctionUint184Max() throws Exception { + BigInteger uint184Max = new BigInteger("24519928653854221733733552434404946937899825954937634815"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint184", new ContractFunctionParameters().addUint184(uint184Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint184Max); + } + + @Test + @DisplayName("Can receive uint184 array value from contract call") + void canCallContractFunctionUint184Array() throws Exception { + BigInteger uint184Min = BigInteger.ZERO; + BigInteger uint184Max = new BigInteger("24519928653854221733733552434404946937899825954937634815"); + BigInteger[] uint184Array = {uint184Min, uint184Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint184Arr", new ContractFunctionParameters().addUint184Array(uint184Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint184[])").get(0); + + assertThat(responseResult).isEqualTo(uint184Array); + } + + @Test + @DisplayName("Can receive uint192 min value from contract call") + void canCallContractFunctionUint192Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint192", new ContractFunctionParameters().addUint192(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint192 max value from contract call") + void canCallContractFunctionUint192Max() throws Exception { + BigInteger uint192Max = new BigInteger("6277101735386680763835789423207666416102355444464034512895"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint192", new ContractFunctionParameters().addUint192(uint192Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint192Max); + } + + @Test + @DisplayName("Can receive uint192 array value from contract call") + void canCallContractFunctionUint192Array() throws Exception { + BigInteger uint192Min = BigInteger.ZERO; + BigInteger uint192Max = new BigInteger("6277101735386680763835789423207666416102355444464034512895"); + BigInteger[] uint192Array = {uint192Min, uint192Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint192Arr", new ContractFunctionParameters().addUint192Array(uint192Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint192[])").get(0); + + assertThat(responseResult).isEqualTo(uint192Array); + } + + @Test + @DisplayName("Can receive uint200 min value from contract call") + void canCallContractFunctionUint200Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint200", new ContractFunctionParameters().addUint200(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint200 max value from contract call") + void canCallContractFunctionUint200Max() throws Exception { + BigInteger uint200Max = new BigInteger("1606938044258990275541962092341162602522202993782792835301375"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint200", new ContractFunctionParameters().addUint200(uint200Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint200Max); + } + + @Test + @DisplayName("Can receive uint200 array value from contract call") + void canCallContractFunctionUint200Array() throws Exception { + BigInteger uint200Min = BigInteger.ZERO; + BigInteger uint200Max = new BigInteger("1606938044258990275541962092341162602522202993782792835301375"); + BigInteger[] uint200Array = {uint200Min, uint200Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint200Arr", new ContractFunctionParameters().addUint200Array(uint200Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint200[])").get(0); + + assertThat(responseResult).isEqualTo(uint200Array); + } + + @Test + @DisplayName("Can receive uint208 min value from contract call") + void canCallContractFunctionUint208Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint208", new ContractFunctionParameters().addUint208(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint208 max value from contract call") + void canCallContractFunctionUint208Max() throws Exception { + BigInteger uint208Max = new BigInteger("411376139330301510538742295639337626245683966408394965837152255"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint208", new ContractFunctionParameters().addUint208(uint208Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint208Max); + } + + @Test + @DisplayName("Can receive uint208 array value from contract call") + void canCallContractFunctionUint208Array() throws Exception { + BigInteger uint208Min = BigInteger.ZERO; + BigInteger uint208Max = new BigInteger("411376139330301510538742295639337626245683966408394965837152255"); + BigInteger[] uint208Array = {uint208Min, uint208Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint208Arr", new ContractFunctionParameters().addUint208Array(uint208Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint208[])").get(0); + + assertThat(responseResult).isEqualTo(uint208Array); + } + + @Test + @DisplayName("Can receive uint216 min value from contract call") + void canCallContractFunctionUint216Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint216", new ContractFunctionParameters().addUint216(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint216 max value from contract call") + void canCallContractFunctionUint216Max() throws Exception { + BigInteger uint216Max = new BigInteger("105312291668557186697918027683670432318895095400549111254310977535"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint216", new ContractFunctionParameters().addUint216(uint216Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint216Max); + } + + @Test + @DisplayName("Can receive uint216 array value from contract call") + void canCallContractFunctionUint216Array() throws Exception { + BigInteger uint216Min = BigInteger.ZERO; + BigInteger uint216Max = new BigInteger("105312291668557186697918027683670432318895095400549111254310977535"); + BigInteger[] uint216Array = {uint216Min, uint216Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint216Arr", new ContractFunctionParameters().addUint216Array(uint216Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint216[])").get(0); + + assertThat(responseResult).isEqualTo(uint216Array); + } + + @Test + @DisplayName("Can receive uint224 min value from contract call") + void canCallContractFunctionUint224Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint224", new ContractFunctionParameters().addUint224(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint224 max value from contract call") + void canCallContractFunctionUint224Max() throws Exception { + BigInteger uint224Max = new BigInteger("26959946667150639794667015087019630673637144422540572481103610249215"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint224", new ContractFunctionParameters().addUint224(uint224Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint224Max); + } + + @Test + @DisplayName("Can receive uint224 array value from contract call") + void canCallContractFunctionUint224Array() throws Exception { + BigInteger uint224Min = BigInteger.ZERO; + BigInteger uint224Max = new BigInteger("26959946667150639794667015087019630673637144422540572481103610249215"); + BigInteger[] uint224Array = {uint224Min, uint224Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint224Arr", new ContractFunctionParameters().addUint224Array(uint224Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint224[])").get(0); + + assertThat(responseResult).isEqualTo(uint224Array); + } + + @Test + @DisplayName("Can receive uint232 min value from contract call") + void canCallContractFunctionUint232Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint232", new ContractFunctionParameters().addUint232(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint232 max value from contract call") + void canCallContractFunctionUint232Max() throws Exception { + BigInteger uint232Max = new BigInteger( + "6901746346790563787434755862277025452451108972170386555162524223799295"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint232", new ContractFunctionParameters().addUint232(uint232Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint232Max); + } + + @Test + @DisplayName("Can receive uint232 array value from contract call") + void canCallContractFunctionUint232Array() throws Exception { + BigInteger uint232Min = BigInteger.ZERO; + BigInteger uint232Max = new BigInteger( + "6901746346790563787434755862277025452451108972170386555162524223799295"); + BigInteger[] uint232Array = {uint232Min, uint232Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint232Arr", new ContractFunctionParameters().addUint232Array(uint232Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint232[])").get(0); + + assertThat(responseResult).isEqualTo(uint232Array); + } + + @Test + @DisplayName("Can receive uint240 min value from contract call") + void canCallContractFunctionUint240Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint240", new ContractFunctionParameters().addUint240(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint240 max value from contract call") + void canCallContractFunctionUint240Max() throws Exception { + BigInteger uint240Max = new BigInteger( + "1766847064778384329583297500742918515827483896875618958121606201292619775"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint240", new ContractFunctionParameters().addUint240(uint240Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint240Max); + } + + @Test + @DisplayName("Can receive uint240 array value from contract call") + void canCallContractFunctionUint240Array() throws Exception { + BigInteger uint240Min = BigInteger.ZERO; + BigInteger uint240Max = new BigInteger( + "1766847064778384329583297500742918515827483896875618958121606201292619775"); + BigInteger[] uint240Array = {uint240Min, uint240Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint240Arr", new ContractFunctionParameters().addUint240Array(uint240Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint240[])").get(0); + + assertThat(responseResult).isEqualTo(uint240Array); + } + + @Test + @DisplayName("Can receive uint248 min value from contract call") + void canCallContractFunctionUint248Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint248", new ContractFunctionParameters().addUint248(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint248 max value from contract call") + void canCallContractFunctionUint248Max() throws Exception { + BigInteger uint248Max = new BigInteger( + "452312848583266388373324160190187140051835877600158453279131187530910662655"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint248", new ContractFunctionParameters().addUint248(uint248Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint248Max); + } + + @Test + @DisplayName("Can receive uint248 array value from contract call") + void canCallContractFunctionUint248Array() throws Exception { + BigInteger uint248Min = BigInteger.ZERO; + BigInteger uint248Max = new BigInteger( + "452312848583266388373324160190187140051835877600158453279131187530910662655"); + BigInteger[] uint248Array = {uint248Min, uint248Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint248Arr", new ContractFunctionParameters().addUint248Array(uint248Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint248[])").get(0); + + assertThat(responseResult).isEqualTo(uint248Array); + } + + @Test + @DisplayName("Can receive uint256 min value from contract call") + void canCallContractFunctionUint256Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint256", new ContractFunctionParameters().addUint256(BigInteger.ZERO)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO); + } + + @Test + @DisplayName("Can receive uint256 max value from contract call") + void canCallContractFunctionUint256Max() throws Exception { + BigInteger uint256Max = new BigInteger("2").pow(256).subtract(BigInteger.ONE); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint256", new ContractFunctionParameters().addUint256(uint256Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint256(0)).isEqualTo(uint256Max); + } + + @Test + @DisplayName("Can receive uint256 array value from contract call") + void canCallContractFunctionUint256Array() throws Exception { + BigInteger uint256Min = BigInteger.ZERO; + BigInteger uint256Max = new BigInteger("2").pow(256).subtract(BigInteger.ONE); + BigInteger[] uint256Array = {uint256Min, uint256Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint256Arr", new ContractFunctionParameters().addUint256Array(uint256Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(uint256[])").get(0); + + assertThat(responseResult).isEqualTo(uint256Array); + } + + @Test + @DisplayName("Can receive int8 min value from contract call") + void canCallContractFunctionInt8Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt8", new ContractFunctionParameters().addInt8(Byte.MIN_VALUE)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt8(0)).isEqualTo(Byte.MIN_VALUE); + } + + @Test + @DisplayName("Can receive int8 max value from contract call") + void canCallContractFunctionInt8Max() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt8", new ContractFunctionParameters().addInt8(Byte.MAX_VALUE)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt8(0)).isEqualTo(Byte.MAX_VALUE); + } + + @Test + @DisplayName("Can receive int8 array value from contract call") + void canCallContractFunctionInt8Array() throws Exception { + byte[] int8Array = {Byte.MIN_VALUE, Byte.MAX_VALUE}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt8Arr", new ContractFunctionParameters().addInt8Array(int8Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (int[]) response.getResult("(int8[])").get(0); + + assertThat(responseResult[0]).isEqualTo(int8Array[0]); + assertThat(responseResult[1]).isEqualTo(int8Array[1]); + } + + @Test + @DisplayName("Can receive int16 min value from contract call") + void canCallContractFunctionInt16Min() throws Exception { + int int16Min = -32768; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt16", new ContractFunctionParameters().addInt16(int16Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt32(0)).isEqualTo(int16Min); + } + + @Test + @DisplayName("Can receive int16 max value from contract call") + void canCallContractFunctionInt16Max() throws Exception { + int int16Max = 32767; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt16", new ContractFunctionParameters().addInt16(int16Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt32(0)).isEqualTo(int16Max); + } + + @Test + @DisplayName("Can receive int16 array value from contract call") + void canCallContractFunctionInt16Array() throws Exception { + int int16Min = -32768; + int int16Max = 32767; + int[] int16Array = {int16Min, int16Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt16Arr", new ContractFunctionParameters().addInt16Array(int16Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (int[]) response.getResult("(int16[])").get(0); + + assertThat(responseResult).isEqualTo(int16Array); + } + + @Test + @DisplayName("Can receive int24 min value from contract call") + void canCallContractFunctionInt24Min() throws Exception { + int int24Min = -8388608; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt24", new ContractFunctionParameters().addInt24(int24Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt32(0)).isEqualTo(int24Min); + } + + @Test + @DisplayName("Can receive int24 max value from contract call") + void canCallContractFunctionInt24Max() throws Exception { + int int24Max = 8388607; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt24", new ContractFunctionParameters().addInt24(int24Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt32(0)).isEqualTo(int24Max); + } + + @Test + @DisplayName("Can receive int24 array value from contract call") + void canCallContractFunctionInt24Array() throws Exception { + int int24Min = -8388608; + int int24Max = 8388607; + int[] int24Array = {int24Min, int24Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt24Arr", new ContractFunctionParameters().addInt24Array(int24Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (int[]) response.getResult("(int24[])").get(0); + + assertThat(responseResult).isEqualTo(int24Array); + } + + @Test + @DisplayName("Can receive int32 min value from contract call") + void canCallContractFunctionInt32Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt32", new ContractFunctionParameters().addInt32(Integer.MIN_VALUE)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt32(0)).isEqualTo(Integer.MIN_VALUE); + } + + @Test + @DisplayName("Can receive int32 max value from contract call") + void canCallContractFunctionInt32Max() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt32", new ContractFunctionParameters().addInt32(Integer.MAX_VALUE)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt32(0)).isEqualTo(Integer.MAX_VALUE); + } + + @Test + @DisplayName("Can receive int32 array value from contract call") + void canCallContractFunctionInt32Array() throws Exception { + int int32Min = Integer.MIN_VALUE; + int int32Max = Integer.MAX_VALUE; + int[] int32Array = {int32Min, int32Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt32Arr", new ContractFunctionParameters().addInt32Array(int32Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (int[]) response.getResult("(int32[])").get(0); + + assertThat(responseResult).isEqualTo(int32Array); + } + + @Test + @DisplayName("Can receive int40 min value from contract call") + void canCallContractFunctionInt40Min() throws Exception { + long int40Min = -549755813888L; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt40", new ContractFunctionParameters().addInt40(int40Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt64(0)).isEqualTo(int40Min); + } + + @Test + @DisplayName("Can receive int40 max value from contract call") + void canCallContractFunctionInt40Max() throws Exception { + long int40Max = 549755813887L; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt40", new ContractFunctionParameters().addInt40(int40Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt64(0)).isEqualTo(int40Max); + } + + @Test + @DisplayName("Can receive int40 array value from contract call") + void canCallContractFunctionInt40Array() throws Exception { + long int40Min = -549755813888L; + long int40Max = 549755813887L; + long[] int40Array = {int40Min, int40Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt40Arr", new ContractFunctionParameters().addInt40Array(int40Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (long[]) response.getResult("(int40[])").get(0); + + assertThat(responseResult).isEqualTo(int40Array); + } + + @Test + @DisplayName("Can receive int48 min value from contract call") + void canCallContractFunctionInt48Min() throws Exception { + long int48Min = -140737488355328L; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt48", new ContractFunctionParameters().addInt48(int48Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt64(0)).isEqualTo(int48Min); + } + + @Test + @DisplayName("Can receive int48 max value from contract call") + void canCallContractFunctionInt48Max() throws Exception { + long int48Max = 140737488355327L; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt48", new ContractFunctionParameters().addInt48(int48Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt64(0)).isEqualTo(int48Max); + } + + @Test + @DisplayName("Can receive int48 array value from contract call") + void canCallContractFunctionInt48Array() throws Exception { + long int48Min = -140737488355328L; + long int48Max = 140737488355327L; + long[] int48Array = {int48Min, int48Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt48Arr", new ContractFunctionParameters().addInt48Array(int48Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (long[]) response.getResult("(int48[])").get(0); + + assertThat(responseResult).isEqualTo(int48Array); + } + + @Test + @DisplayName("Can receive int56 min value from contract call") + void canCallContractFunctionInt56Min() throws Exception { + long int56Min = -36028797018963968L; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt56", new ContractFunctionParameters().addInt56(int56Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt64(0)).isEqualTo(int56Min); + } + + @Test + @DisplayName("Can receive int56 max value from contract call") + void canCallContractFunctionInt56Max() throws Exception { + long int56Max = 36028797018963967L; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt56", new ContractFunctionParameters().addInt56(int56Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt64(0)).isEqualTo(int56Max); + } + + @Test + @DisplayName("Can receive int56 array value from contract call") + void canCallContractFunctionInt56Array() throws Exception { + long int56Min = -36028797018963968L; + long int56Max = 36028797018963967L; + long[] int56Array = {int56Min, int56Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt56Arr", new ContractFunctionParameters().addInt56Array(int56Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (long[]) response.getResult("(int56[])").get(0); + + assertThat(responseResult).isEqualTo(int56Array); + } + + @Test + @DisplayName("Can receive int64 min value from contract call") + void canCallContractFunctionInt64Min() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt64", new ContractFunctionParameters().addInt64(Long.MIN_VALUE)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint64(0)).isEqualTo(Long.MIN_VALUE); + } + + @Test + @DisplayName("Can receive int64 max value from contract call") + void canCallContractFunctionInt64Max() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnUint64", new ContractFunctionParameters().addUint64(Long.MAX_VALUE)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getUint64(0)).isEqualTo(Long.MAX_VALUE); + } + + @Test + @DisplayName("Can receive int64 array value from contract call") + void canCallContractFunctionInt64Array() throws Exception { + long int64Min = Long.MIN_VALUE; + long int64Max = Long.MAX_VALUE; + long[] int64Array = {int64Min, int64Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt64Arr", new ContractFunctionParameters().addInt64Array(int64Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (long[]) response.getResult("(int64[])").get(0); + + assertThat(responseResult).isEqualTo(int64Array); + } + + @Test + @DisplayName("Can receive int72 min value from contract call") + void canCallContractFunctionInt72Min() throws Exception { + BigInteger int72Min = new BigInteger("-2361183241434822606848"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt72", new ContractFunctionParameters().addInt72(int72Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int72Min); + } + + @Test + @DisplayName("Can receive int72 max value from contract call") + void canCallContractFunctionInt72Max() throws Exception { + BigInteger int72Max = new BigInteger("2361183241434822606847"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt72", new ContractFunctionParameters().addInt72(int72Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int72Max); + } + + @Test + @DisplayName("Can receive int72 array value from contract call") + void canCallContractFunctionInt72Array() throws Exception { + BigInteger int72Min = new BigInteger("-2361183241434822606848"); + BigInteger int72Max = new BigInteger("2361183241434822606847"); + BigInteger[] int72Array = {int72Min, int72Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt72Arr", new ContractFunctionParameters().addInt72Array(int72Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int72[])").get(0); + + assertThat(responseResult).isEqualTo(int72Array); + } + + @Test + @DisplayName("Can receive int80 min value from contract call") + void canCallContractFunctionInt80Min() throws Exception { + BigInteger int80Min = new BigInteger("-604462909807314587353088"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt80", new ContractFunctionParameters().addInt80(int80Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int80Min); + } + + @Test + @DisplayName("Can receive int80 max value from contract call") + void canCallContractFunctionInt80Max() throws Exception { + BigInteger int80Max = new BigInteger("604462909807314587353087"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt80", new ContractFunctionParameters().addInt80(int80Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int80Max); + } + + @Test + @DisplayName("Can receive int80 array value from contract call") + void canCallContractFunctionInt80Array() throws Exception { + BigInteger int80Min = new BigInteger("-604462909807314587353088"); + BigInteger int80Max = new BigInteger("604462909807314587353087"); + BigInteger[] int80Array = {int80Min, int80Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt80Arr", new ContractFunctionParameters().addInt80Array(int80Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int80[])").get(0); + + assertThat(responseResult).isEqualTo(int80Array); + } + + @Test + @DisplayName("Can receive int88 min value from contract call") + void canCallContractFunctionInt88Min() throws Exception { + BigInteger int88Min = new BigInteger("-154742504910672534362390528"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt88", new ContractFunctionParameters().addInt88(int88Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int88Min); + } + + @Test + @DisplayName("Can receive int88 max value from contract call") + void canCallContractFunctionInt88Max() throws Exception { + BigInteger int88Max = new BigInteger("154742504910672534362390527"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt88", new ContractFunctionParameters().addInt88(int88Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int88Max); + } + + @Test + @DisplayName("Can receive int88 array value from contract call") + void canCallContractFunctionInt88Array() throws Exception { + BigInteger int88Min = new BigInteger("-154742504910672534362390528"); + BigInteger int88Max = new BigInteger("154742504910672534362390527"); + BigInteger[] int88Array = {int88Min, int88Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt88Arr", new ContractFunctionParameters().addInt88Array(int88Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int88[])").get(0); + + assertThat(responseResult).isEqualTo(int88Array); + } + + @Test + @DisplayName("Can receive int96 min value from contract call") + void canCallContractFunctionInt96Min() throws Exception { + BigInteger int96Min = new BigInteger("-39614081257132168796771975168"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt96", new ContractFunctionParameters().addInt96(int96Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int96Min); + } + + @Test + @DisplayName("Can receive int96 max value from contract call") + void canCallContractFunctionInt96Max() throws Exception { + BigInteger int96Max = new BigInteger("39614081257132168796771975167"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt96", new ContractFunctionParameters().addInt96(int96Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int96Max); + } + + @Test + @DisplayName("Can receive int96 array value from contract call") + void canCallContractFunctionInt96Array() throws Exception { + BigInteger int96Min = new BigInteger("-39614081257132168796771975168"); + BigInteger int96Max = new BigInteger("39614081257132168796771975167"); + BigInteger[] int96Array = {int96Min, int96Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt96Arr", new ContractFunctionParameters().addInt96Array(int96Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int96[])").get(0); + + assertThat(responseResult).isEqualTo(int96Array); + } + + @Test + @DisplayName("Can receive int104 min value from contract call") + void canCallContractFunctionInt104Min() throws Exception { + BigInteger int104Min = new BigInteger("-10141204801825835211973625643008"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt104", new ContractFunctionParameters().addInt104(int104Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int104Min); + } + + @Test + @DisplayName("Can receive int104 max value from contract call") + void canCallContractFunctionInt104Max() throws Exception { + BigInteger int104Max = new BigInteger("10141204801825835211973625643007"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt104", new ContractFunctionParameters().addInt104(int104Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int104Max); + } + + @Test + @DisplayName("Can receive int104 array value from contract call") + void canCallContractFunctionInt104Array() throws Exception { + BigInteger int104Min = new BigInteger("-10141204801825835211973625643008"); + BigInteger int104Max = new BigInteger("10141204801825835211973625643007"); + BigInteger[] int104Array = {int104Min, int104Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt104Arr", new ContractFunctionParameters().addInt104Array(int104Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int104[])").get(0); + + assertThat(responseResult).isEqualTo(int104Array); + } + + @Test + @DisplayName("Can receive int112 min value from contract call") + void canCallContractFunctionInt112Min() throws Exception { + BigInteger int112Min = new BigInteger("-2596148429267413814265248164610048"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt112", new ContractFunctionParameters().addInt112(int112Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int112Min); + } + + @Test + @DisplayName("Can receive int112 max value from contract call") + void canCallContractFunctionInt112Max() throws Exception { + BigInteger int112Max = new BigInteger("2596148429267413814265248164610047"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt112", new ContractFunctionParameters().addInt112(int112Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int112Max); + } + + @Test + @DisplayName("Can receive int112 array value from contract call") + void canCallContractFunctionInt112Array() throws Exception { + BigInteger int112Min = new BigInteger("-2596148429267413814265248164610048"); + BigInteger int112Max = new BigInteger("2596148429267413814265248164610047"); + BigInteger[] int112Array = {int112Min, int112Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt112Arr", new ContractFunctionParameters().addInt112Array(int112Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int112[])").get(0); + + assertThat(responseResult).isEqualTo(int112Array); + } + + @Test + @DisplayName("Can receive int120 min value from contract call") + void canCallContractFunctionInt120Min() throws Exception { + BigInteger int120Min = new BigInteger("-664613997892457936451903530140172288"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt120", new ContractFunctionParameters().addInt120(int120Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int120Min); + } + + @Test + @DisplayName("Can receive int120 max value from contract call") + void canCallContractFunctionInt120Max() throws Exception { + BigInteger int120Max = new BigInteger("664613997892457936451903530140172287"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt120", new ContractFunctionParameters().addInt120(int120Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int120Max); + } + + @Test + @DisplayName("Can receive int120 array value from contract call") + void canCallContractFunctionInt120Array() throws Exception { + BigInteger int120Min = new BigInteger("-664613997892457936451903530140172288"); + BigInteger int120Max = new BigInteger("664613997892457936451903530140172287"); + BigInteger[] int120Array = {int120Min, int120Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt120Arr", new ContractFunctionParameters().addInt120Array(int120Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int120[])").get(0); + + assertThat(responseResult).isEqualTo(int120Array); + } + + @Test + @DisplayName("Can receive int128 min value from contract call") + void canCallContractFunctionInt128Min() throws Exception { + BigInteger int128Min = new BigInteger("-170141183460469231731687303715884105728"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt128", new ContractFunctionParameters().addInt128(int128Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int128Min); + } + + @Test + @DisplayName("Can receive int128 max value from contract call") + void canCallContractFunctionInt128Max() throws Exception { + BigInteger int128Max = new BigInteger("170141183460469231731687303715884105727"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt128", new ContractFunctionParameters().addInt128(int128Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int128Max); + } + + @Test + @DisplayName("Can receive int128 array value from contract call") + void canCallContractFunctionInt128Array() throws Exception { + BigInteger int128Min = new BigInteger("-170141183460469231731687303715884105728"); + BigInteger int128Max = new BigInteger("170141183460469231731687303715884105727"); + BigInteger[] int128Array = {int128Min, int128Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt128Arr", new ContractFunctionParameters().addInt128Array(int128Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int128[])").get(0); + + assertThat(responseResult).isEqualTo(int128Array); + } + + @Test + @DisplayName("Can receive int136 min value from contract call") + void canCallContractFunctionInt136Min() throws Exception { + BigInteger int136Min = new BigInteger("-43556142965880123323311949751266331066368"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt136", new ContractFunctionParameters().addInt136(int136Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int136Min); + } + + @Test + @DisplayName("Can receive int136 max value from contract call") + void canCallContractFunctionInt136Max() throws Exception { + BigInteger int136Max = new BigInteger("43556142965880123323311949751266331066367"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt136", new ContractFunctionParameters().addInt136(int136Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int136Max); + } + + @Test + @DisplayName("Can receive int136 array value from contract call") + void canCallContractFunctionInt136Array() throws Exception { + BigInteger int136Min = new BigInteger("-43556142965880123323311949751266331066368"); + BigInteger int136Max = new BigInteger("43556142965880123323311949751266331066367"); + BigInteger[] int136Array = {int136Min, int136Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt136Arr", new ContractFunctionParameters().addInt136Array(int136Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int136[])").get(0); + + assertThat(responseResult).isEqualTo(int136Array); + } + + @Test + @DisplayName("Can receive int144 min value from contract call") + void canCallContractFunctionInt144Min() throws Exception { + BigInteger int144Min = new BigInteger("-11150372599265311570767859136324180752990208"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt144", new ContractFunctionParameters().addInt144(int144Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int144Min); + } + + @Test + @DisplayName("Can receive int144 max value from contract call") + void canCallContractFunctionInt144Max() throws Exception { + BigInteger int144Max = new BigInteger("11150372599265311570767859136324180752990207"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt144", new ContractFunctionParameters().addInt144(int144Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int144Max); + } + + @Test + @DisplayName("Can receive int144 array value from contract call") + void canCallContractFunctionInt144Array() throws Exception { + BigInteger int144Min = new BigInteger("-11150372599265311570767859136324180752990208"); + BigInteger int144Max = new BigInteger("11150372599265311570767859136324180752990207"); + BigInteger[] int144Array = {int144Min, int144Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt144Arr", new ContractFunctionParameters().addInt144Array(int144Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int144[])").get(0); + + assertThat(responseResult).isEqualTo(int144Array); + } + + @Test + @DisplayName("Can receive int152 min value from contract call") + void canCallContractFunctionInt152Min() throws Exception { + BigInteger int152Min = new BigInteger("-2854495385411919762116571938898990272765493248"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt152", new ContractFunctionParameters().addInt152(int152Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int152Min); + } + + @Test + @DisplayName("Can receive int152 max value from contract call") + void canCallContractFunctionInt152Max() throws Exception { + BigInteger int152Max = new BigInteger("2854495385411919762116571938898990272765493247"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt152", new ContractFunctionParameters().addInt152(int152Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int152Max); + } + + @Test + @DisplayName("Can receive int152 array value from contract call") + void canCallContractFunctionInt152Array() throws Exception { + BigInteger int152Min = new BigInteger("-2854495385411919762116571938898990272765493248"); + BigInteger int152Max = new BigInteger("2854495385411919762116571938898990272765493247"); + BigInteger[] int152Array = {int152Min, int152Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt152Arr", new ContractFunctionParameters().addInt152Array(int152Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int152[])").get(0); + + assertThat(responseResult).isEqualTo(int152Array); + } + + @Test + @DisplayName("Can receive int160 min value from contract call") + void canCallContractFunctionInt160Min() throws Exception { + BigInteger int160Min = new BigInteger("-730750818665451459101842416358141509827966271488"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt160", new ContractFunctionParameters().addInt160(int160Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int160Min); + } + + @Test + @DisplayName("Can receive int160 max value from contract call") + void canCallContractFunctionInt160Max() throws Exception { + BigInteger int160Max = new BigInteger("730750818665451459101842416358141509827966271487"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt160", new ContractFunctionParameters().addInt160(int160Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int160Max); + } + + @Test + @DisplayName("Can receive int160 array value from contract call") + void canCallContractFunctionInt160Array() throws Exception { + BigInteger int160Min = new BigInteger("-730750818665451459101842416358141509827966271488"); + BigInteger int160Max = new BigInteger("730750818665451459101842416358141509827966271487"); + BigInteger[] int160Array = {int160Min, int160Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt160Arr", new ContractFunctionParameters().addInt160Array(int160Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int160[])").get(0); + + assertThat(responseResult).isEqualTo(int160Array); + } + + @Test + @DisplayName("Can receive int168 min value from contract call") + void canCallContractFunctionInt168Min() throws Exception { + BigInteger int168Min = new BigInteger("-187072209578355573530071658587684226515959365500928"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt168", new ContractFunctionParameters().addInt168(int168Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int168Min); + } + + @Test + @DisplayName("Can receive int168 max value from contract call") + void canCallContractFunctionInt168Max() throws Exception { + BigInteger int168Max = new BigInteger("187072209578355573530071658587684226515959365500927"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt168", new ContractFunctionParameters().addInt168(int168Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int168Max); + } + + @Test + @DisplayName("Can receive int168 array value from contract call") + void canCallContractFunctionInt168Array() throws Exception { + BigInteger int168Min = new BigInteger("-187072209578355573530071658587684226515959365500928"); + BigInteger int168Max = new BigInteger("187072209578355573530071658587684226515959365500927"); + BigInteger[] int168Array = {int168Min, int168Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt168Arr", new ContractFunctionParameters().addInt168Array(int168Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int168[])").get(0); + + assertThat(responseResult).isEqualTo(int168Array); + } + + @Test + @DisplayName("Can receive int176 min value from contract call") + void canCallContractFunctionInt176Min() throws Exception { + BigInteger int176Min = new BigInteger("-47890485652059026823698344598447161988085597568237568"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt176", new ContractFunctionParameters().addInt176(int176Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int176Min); + } + + @Test + @DisplayName("Can receive int176 max value from contract call") + void canCallContractFunctionInt176Max() throws Exception { + BigInteger int176Max = new BigInteger("47890485652059026823698344598447161988085597568237567"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt176", new ContractFunctionParameters().addInt176(int176Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int176Max); + } + + @Test + @DisplayName("Can receive int176 array value from contract call") + void canCallContractFunctionInt176Array() throws Exception { + BigInteger int176Min = new BigInteger("-47890485652059026823698344598447161988085597568237568"); + BigInteger int176Max = new BigInteger("47890485652059026823698344598447161988085597568237567"); + BigInteger[] int176Array = {int176Min, int176Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt176Arr", new ContractFunctionParameters().addInt176Array(int176Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int176[])").get(0); + + assertThat(responseResult).isEqualTo(int176Array); + } + + @Test + @DisplayName("Can receive int184 min value from contract call") + void canCallContractFunctionInt184Min() throws Exception { + BigInteger int184Min = new BigInteger("-12259964326927110866866776217202473468949912977468817408"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt184", new ContractFunctionParameters().addInt184(int184Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int184Min); + } + + @Test + @DisplayName("Can receive int184 max value from contract call") + void canCallContractFunctionInt184Max() throws Exception { + BigInteger int184Max = new BigInteger("12259964326927110866866776217202473468949912977468817407"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt184", new ContractFunctionParameters().addInt184(int184Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int184Max); + } + + @Test + @DisplayName("Can receive int184 array value from contract call") + void canCallContractFunctionInt184Array() throws Exception { + BigInteger int184Min = new BigInteger("-12259964326927110866866776217202473468949912977468817408"); + BigInteger int184Max = new BigInteger("12259964326927110866866776217202473468949912977468817407"); + BigInteger[] int184Array = {int184Min, int184Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt184Arr", new ContractFunctionParameters().addInt184Array(int184Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int184[])").get(0); + + assertThat(responseResult).isEqualTo(int184Array); + } + + @Test + @DisplayName("Can receive int192 min value from contract call") + void canCallContractFunctionInt192Min() throws Exception { + BigInteger int192Min = new BigInteger("-3138550867693340381917894711603833208051177722232017256448"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt192", new ContractFunctionParameters().addInt192(int192Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int192Min); + } + + @Test + @DisplayName("Can receive int192 max value from contract call") + void canCallContractFunctionInt192Max() throws Exception { + BigInteger int192Max = new BigInteger("3138550867693340381917894711603833208051177722232017256447"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt192", new ContractFunctionParameters().addInt192(int192Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int192Max); + } + + @Test + @DisplayName("Can receive int192 array value from contract call") + void canCallContractFunctionInt192Array() throws Exception { + BigInteger int192Min = new BigInteger("-3138550867693340381917894711603833208051177722232017256448"); + BigInteger int192Max = new BigInteger("3138550867693340381917894711603833208051177722232017256447"); + BigInteger[] int192Array = {int192Min, int192Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt192Arr", new ContractFunctionParameters().addInt192Array(int192Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int192[])").get(0); + + assertThat(responseResult).isEqualTo(int192Array); + } + + @Test + @DisplayName("Can receive int200 min value from contract call") + void canCallContractFunctionInt200Min() throws Exception { + BigInteger int200Min = new BigInteger("-803469022129495137770981046170581301261101496891396417650688"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt200", new ContractFunctionParameters().addInt200(int200Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int200Min); + } + + @Test + @DisplayName("Can receive int200 max value from contract call") + void canCallContractFunctionInt200Max() throws Exception { + BigInteger int200Max = new BigInteger("803469022129495137770981046170581301261101496891396417650687"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt200", new ContractFunctionParameters().addInt200(int200Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int200Max); + } + + @Test + @DisplayName("Can receive int200 array value from contract call") + void canCallContractFunctionInt200Array() throws Exception { + BigInteger int200Min = new BigInteger("-803469022129495137770981046170581301261101496891396417650688"); + BigInteger int200Max = new BigInteger("803469022129495137770981046170581301261101496891396417650687"); + BigInteger[] int200Array = {int200Min, int200Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt200Arr", new ContractFunctionParameters().addInt200Array(int200Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int200[])").get(0); + + assertThat(responseResult).isEqualTo(int200Array); + } + + @Test + @DisplayName("Can receive int208 min value from contract call") + void canCallContractFunctionInt208Min() throws Exception { + BigInteger int208Min = new BigInteger("-205688069665150755269371147819668813122841983204197482918576128"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt208", new ContractFunctionParameters().addInt208(int208Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int208Min); + } + + @Test + @DisplayName("Can receive int208 max value from contract call") + void canCallContractFunctionInt208Max() throws Exception { + BigInteger int208Max = new BigInteger("205688069665150755269371147819668813122841983204197482918576127"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt208", new ContractFunctionParameters().addInt208(int208Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int208Max); + } + + @Test + @DisplayName("Can receive int208 array value from contract call") + void canCallContractFunctionInt208Array() throws Exception { + BigInteger int208Min = new BigInteger("-205688069665150755269371147819668813122841983204197482918576128"); + BigInteger int208Max = new BigInteger("205688069665150755269371147819668813122841983204197482918576127"); + BigInteger[] int208Array = {int208Min, int208Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt208Arr", new ContractFunctionParameters().addInt208Array(int208Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int208[])").get(0); + + assertThat(responseResult).isEqualTo(int208Array); + } + + @Test + @DisplayName("Can receive int216 min value from contract call") + void canCallContractFunctionInt216Min() throws Exception { + BigInteger int216Min = new BigInteger("-52656145834278593348959013841835216159447547700274555627155488768"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt216", new ContractFunctionParameters().addInt216(int216Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int216Min); + } + + @Test + @DisplayName("Can receive int216 max value from contract call") + void canCallContractFunctionInt216Max() throws Exception { + BigInteger int216Max = new BigInteger("52656145834278593348959013841835216159447547700274555627155488767"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt216", new ContractFunctionParameters().addInt216(int216Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int216Max); + } + + @Test + @DisplayName("Can receive int216 array value from contract call") + void canCallContractFunctionInt216Array() throws Exception { + BigInteger int216Min = new BigInteger("-52656145834278593348959013841835216159447547700274555627155488768"); + BigInteger int216Max = new BigInteger("52656145834278593348959013841835216159447547700274555627155488767"); + BigInteger[] int216Array = {int216Min, int216Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt216Arr", new ContractFunctionParameters().addInt216Array(int216Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int216[])").get(0); + + assertThat(responseResult).isEqualTo(int216Array); + } + + @Test + @DisplayName("Can receive int224 min value from contract call") + void canCallContractFunctionInt224Min() throws Exception { + BigInteger int224Min = new BigInteger("-13479973333575319897333507543509815336818572211270286240551805124608"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt224", new ContractFunctionParameters().addInt224(int224Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int224Min); + } + + @Test + @DisplayName("Can receive int224 max value from contract call") + void canCallContractFunctionInt224Max() throws Exception { + BigInteger int224Max = new BigInteger("13479973333575319897333507543509815336818572211270286240551805124607"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt224", new ContractFunctionParameters().addInt224(int224Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int224Max); + } + + @Test + @DisplayName("Can receive int224 array value from contract call") + void canCallContractFunctionInt224Array() throws Exception { + BigInteger int224Min = new BigInteger("-13479973333575319897333507543509815336818572211270286240551805124608"); + BigInteger int224Max = new BigInteger("13479973333575319897333507543509815336818572211270286240551805124607"); + BigInteger[] int224Array = {int224Min, int224Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt224Arr", new ContractFunctionParameters().addInt224Array(int224Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int224[])").get(0); + + assertThat(responseResult).isEqualTo(int224Array); + } + + @Test + @DisplayName("Can receive int232 min value from contract call") + void canCallContractFunctionInt232Min() throws Exception { + BigInteger int232Min = new BigInteger( + "-3450873173395281893717377931138512726225554486085193277581262111899648"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt232", new ContractFunctionParameters().addInt232(int232Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int232Min); + } + + @Test + @DisplayName("Can receive int232 max value from contract call") + void canCallContractFunctionInt232Max() throws Exception { + BigInteger int232Max = new BigInteger("3450873173395281893717377931138512726225554486085193277581262111899647"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt232", new ContractFunctionParameters().addInt232(int232Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int232Max); + } + + @Test + @DisplayName("Can receive int232 array value from contract call") + void canCallContractFunctionInt232Array() throws Exception { + BigInteger int232Min = new BigInteger( + "-3450873173395281893717377931138512726225554486085193277581262111899648"); + BigInteger int232Max = new BigInteger("3450873173395281893717377931138512726225554486085193277581262111899647"); + BigInteger[] int232Array = {int232Min, int232Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt232Arr", new ContractFunctionParameters().addInt232Array(int232Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int232[])").get(0); + + assertThat(responseResult).isEqualTo(int232Array); + } + + @Test + @DisplayName("Can receive int240 min value from contract call") + void canCallContractFunctionInt240Min() throws Exception { + BigInteger int240Min = new BigInteger( + "-883423532389192164791648750371459257913741948437809479060803100646309888"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt240", new ContractFunctionParameters().addInt240(int240Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int240Min); + } + + @Test + @DisplayName("Can receive int240 max value from contract call") + void canCallContractFunctionInt240Max() throws Exception { + BigInteger int240Max = new BigInteger( + "883423532389192164791648750371459257913741948437809479060803100646309887"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt240", new ContractFunctionParameters().addInt240(int240Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int240Max); + } + + @Test + @DisplayName("Can receive int240 array value from contract call") + void canCallContractFunctionInt240Array() throws Exception { + BigInteger int240Min = new BigInteger( + "-883423532389192164791648750371459257913741948437809479060803100646309888"); + BigInteger int240Max = new BigInteger( + "883423532389192164791648750371459257913741948437809479060803100646309887"); + BigInteger[] int240Array = {int240Min, int240Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt240Arr", new ContractFunctionParameters().addInt240Array(int240Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int240[])").get(0); + + assertThat(responseResult).isEqualTo(int240Array); + } + + @Test + @DisplayName("Can receive int248 min value from contract call") + void canCallContractFunctionInt248Min() throws Exception { + BigInteger int248Min = new BigInteger( + "-226156424291633194186662080095093570025917938800079226639565593765455331328"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt248", new ContractFunctionParameters().addInt248(int248Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int248Min); + } + + @Test + @DisplayName("Can receive int248 max value from contract call") + void canCallContractFunctionInt248Max() throws Exception { + BigInteger int248Max = new BigInteger( + "226156424291633194186662080095093570025917938800079226639565593765455331327"); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt248", new ContractFunctionParameters().addInt248(int248Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int248Max); + } + + @Test + @DisplayName("Can receive int248 array value from contract call") + void canCallContractFunctionInt248Array() throws Exception { + BigInteger int248Min = new BigInteger( + "-226156424291633194186662080095093570025917938800079226639565593765455331328"); + BigInteger int248Max = new BigInteger( + "226156424291633194186662080095093570025917938800079226639565593765455331327"); + BigInteger[] int248Array = {int248Min, int248Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt248Arr", new ContractFunctionParameters().addInt248Array(int248Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int248[])").get(0); + + assertThat(responseResult).isEqualTo(int248Array); + } + + @Test + @DisplayName("Can receive int256 min value from contract call") + void canCallContractFunctionInt256Min() throws Exception { + BigInteger int256Min = new BigInteger("2").pow(256).divide(BigInteger.TWO).negate(); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt256", new ContractFunctionParameters().addInt256(int256Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int256Min); + } + + @Test + @DisplayName("Can receive int256 max value from contract call") + void canCallContractFunctionInt256Max() throws Exception { + BigInteger int256Max = new BigInteger("2").pow(256).subtract(BigInteger.ONE).divide(BigInteger.TWO); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt256", new ContractFunctionParameters().addInt256(int256Max)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int256Max); + } + + @Test + @DisplayName("Can receive int256 array value from contract call") + void canCallContractFunctionInt256Array() throws Exception { + BigInteger int256Min = new BigInteger("2").pow(256).divide(BigInteger.TWO).negate(); + BigInteger int256Max = new BigInteger("2").pow(256).subtract(BigInteger.ONE).divide(BigInteger.TWO); + BigInteger[] int256Array = {int256Min, int256Max}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt256Arr", new ContractFunctionParameters().addInt256Array(int256Array)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (BigInteger[]) response.getResult("(int256[])").get(0); + + assertThat(responseResult).isEqualTo(int256Array); + } + + @Test + @DisplayName("Can receive multiple int8 values from contract call") + void canCallContractFunctionMultipleInt8() throws Exception { + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnInt8Multiple", new ContractFunctionParameters().addInt8(Byte.MIN_VALUE)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt8(0)).isEqualTo(Byte.MIN_VALUE); + assertThat(response.getInt8(1)).isEqualTo((byte) -108); + } + + @Test + @DisplayName("Can receive multiple int40 values from contract call") + void canCallContractFunctionMultipleInt40() throws Exception { + long int40 = 549755813885L; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnMultipleInt40", new ContractFunctionParameters().addInt40(int40)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt64(0)).isEqualTo(int40); + assertThat(response.getInt64(1)).isEqualTo(int40 + 1); + } + + @Test + @DisplayName("Can receive multiple int256 values from contract call") + void canCallContractFunctionMultipleInt256() throws Exception { + BigInteger int256Min = new BigInteger("2").pow(256).divide(BigInteger.TWO).negate(); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnMultipleInt256", new ContractFunctionParameters().addInt256(int256Min)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getInt256(0)).isEqualTo(int256Min); + assertThat(response.getInt256(1)).isEqualTo(int256Min.add(BigInteger.ONE)); + } + + @Test + @DisplayName("Can receive multiple types of values from contract call") + void canCallContractFunctionMultipleTypes() throws Exception { + var uint32Max = "4294967295"; + int uint32MaxInt = Integer.parseUnsignedInt(uint32Max); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnMultipleTypeParams", new ContractFunctionParameters().addUint32(uint32MaxInt)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(Integer.toUnsignedString(response.getUint32(0))).isEqualTo(uint32Max); + assertThat(response.getUint64(1)).isEqualTo(Long.parseUnsignedLong(uint32Max) - 1); + assertThat(response.getString(2)).isEqualTo("OK"); + } + + @Test + @DisplayName("Can receive string value from contract call") + void canCallContractFunctionStringType() throws Exception { + var testString = "test"; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnString", new ContractFunctionParameters().addString(testString)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getString(0)).isEqualTo(testString); + } + + @Test + @DisplayName("Can receive string array value from contract call") + void canCallContractFunctionStringArrayType() throws Exception { + var testStringArray = new String[]{"Test1", "Test2"}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnStringArr", new ContractFunctionParameters().addStringArray(testStringArray)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getStringArray(0).get(0)).isEqualTo(testStringArray[0]); + assertThat(response.getStringArray(0).get(1)).isEqualTo(testStringArray[1]); + } + + @Test + @DisplayName("Can receive string array value from contract call with getResult function") + void canCallContractFunctionStringArrayType_getResult() throws Exception { + var testStringArray = new String[]{"Test1", "Test2"}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnStringArr", new ContractFunctionParameters().addStringArray(testStringArray)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (String[]) response.getResult("(string[])").get(0); + assertThat(responseResult).isEqualTo(testStringArray); + } + + @Test + @DisplayName("Can receive address value from contract call") + void canCallContractFunctionAddressType() throws Exception { + var testAddress = "1234567890123456789012345678901234567890"; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnAddress", new ContractFunctionParameters().addAddress(testAddress)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getAddress(0)).isEqualTo(testAddress); + } + + @Test + @DisplayName("Can receive address array value from contract call") + void canCallContractFunctionAddressArrayType() throws Exception { + var testAddressArray = new String[]{"1234567890123456789012345678901234567890", + "1234567890123456789012345678901234567891"}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnAddressArr", new ContractFunctionParameters().addAddressArray(testAddressArray)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (Address[]) response.getResult("(address[])").get(0); + + Address[] testAddressArray_Address = Arrays.stream(testAddressArray).map(addressStr -> "0x" + addressStr) + .map(Address::wrap).toArray(Address[]::new); + + assertThat(responseResult).isEqualTo(testAddressArray_Address); + } + + @Test + @DisplayName("Can receive boolean value from contract call") + void canCallContractFunctionBooleanType() throws Exception { + var testBoolean = true; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnBoolean", new ContractFunctionParameters().addBool(testBoolean)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getBool(0)).isEqualTo(testBoolean); + } + + @Test + @DisplayName("Can receive boolean array value from contract call") + void canCallContractFunctionBooleanArrayType() throws Exception { + var testBooleanArray = new boolean[]{true, false}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnBooleanArr", new ContractFunctionParameters().addBoolArray(testBooleanArray)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (boolean[]) response.getResult("(bool[])").get(0); + + assertThat(responseResult).isEqualTo(testBooleanArray); + } + + @Test + @DisplayName("Can receive bytes value from contract call") + void canCallContractFunctionBytesType() throws Exception { + var testBytes = "Test".getBytes(); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnBytes", new ContractFunctionParameters().addBytes(testBytes)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getBytes(0)).isEqualTo(testBytes); + } + + @Test + @DisplayName("Can receive bytes array value from contract call") + void canCallContractFunctionBytesArrayType() throws Exception { + byte[][] testBytes = new byte[][]{"Test1".getBytes(), "Test2".getBytes()}; + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnBytesArr", new ContractFunctionParameters().addBytesArray(testBytes)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (byte[][]) response.getResult("(bytes[])").get(0); + + assertThat(responseResult).isEqualTo(testBytes); + } + + @Test + @DisplayName("Can receive bytes32 value from contract call") + void canCallContractFunctionBytes32Type() throws Exception { + byte[] testBytes = "Test".getBytes(); + byte[] testBytesLen32 = new byte[32]; + System.arraycopy(testBytes, 0, testBytesLen32, 0, testBytes.length); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnBytes32", new ContractFunctionParameters().addBytes32(testBytesLen32)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + assertThat(response.getBytes32(0)).isEqualTo(testBytesLen32); + } + + @Test + @DisplayName("Can receive bytes32 array value from contract call") + void canCallContractFunctionBytes32ArrayType() throws Exception { + byte[] testBytes = "Test".getBytes(); + byte[] testBytes2 = "Test2".getBytes(); + byte[][] testBytesLen32 = new byte[2][32]; + System.arraycopy(testBytes, 0, testBytesLen32[0], 0, testBytes.length); + System.arraycopy(testBytes2, 0, testBytesLen32[1], 0, testBytes2.length); + + var response = new ContractCallQuery().setContractId(contractId).setGas(1500000) + .setFunction("returnBytes32Arr", new ContractFunctionParameters().addBytes32Array(testBytesLen32)) + .setQueryPayment(new Hbar(10)).execute(testEnv.client); + + var responseResult = (byte[][]) response.getResult("(bytes32[])").get(0); + + assertThat(responseResult).isEqualTo(testBytesLen32); + } +} diff --git a/sdk/src/integrationTest/java/ContractIdPopulationIntegrationTest.java b/sdk/src/integrationTest/java/ContractIdPopulationIntegrationTest.java new file mode 100644 index 000000000..2e7163f7f --- /dev/null +++ b/sdk/src/integrationTest/java/ContractIdPopulationIntegrationTest.java @@ -0,0 +1,90 @@ +import static org.assertj.core.api.Assertions.assertThat; + +import com.hedera.hashgraph.sdk.ContractCreateTransaction; +import com.hedera.hashgraph.sdk.ContractFunctionParameters; +import com.hedera.hashgraph.sdk.ContractId; +import com.hedera.hashgraph.sdk.ContractInfoQuery; +import com.hedera.hashgraph.sdk.FileCreateTransaction; +import java.util.Objects; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class ContractIdPopulationIntegrationTest { + @Test + @DisplayName("Can populate ContractId num from mirror node (using sync method)") + void canPopulateContractIdNumSync() throws Exception { + var testEnv = new IntegrationTestEnv(1); + + var testContractByteCode = "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101cb806100606000396000f3fe608060405260043610610046576000357c01000000000000000000000000000000000000000000000000000000009004806341c0e1b51461004b578063cfae321714610062575b600080fd5b34801561005757600080fd5b506100606100f2565b005b34801561006e57600080fd5b50610077610162565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100b757808201518184015260208101905061009c565b50505050905090810190601f1680156100e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610160573373ffffffffffffffffffffffffffffffffffffffff16ff5b565b60606040805190810160405280600d81526020017f48656c6c6f2c20776f726c64210000000000000000000000000000000000000081525090509056fea165627a7a72305820ae96fb3af7cde9c0abfe365272441894ab717f816f07f41f07b1cbede54e256e0029"; + + var response = new FileCreateTransaction() + .setKeys(testEnv.operatorKey) + .setContents(testContractByteCode) + .execute(testEnv.client); + + var receipt = response.setValidateStatus(true).getReceipt(testEnv.client); + var fileId = Objects.requireNonNull(receipt.fileId); + + response = new ContractCreateTransaction() + .setAdminKey(testEnv.operatorKey) + .setGas(100000) + .setConstructorParameters(new ContractFunctionParameters().addString("Hello from Hedera.")) + .setBytecodeFileId(fileId) + .setContractMemo("[e2e::canPopulateContractIdNum]") + .execute(testEnv.client); + + receipt = response.setValidateStatus(true).getReceipt(testEnv.client); + + var contractId = Objects.requireNonNull(receipt.contractId); + + var info = new ContractInfoQuery() + .setContractId(contractId) + .execute(testEnv.client); + + var idMirror = ContractId.fromEvmAddress(0, 0, info.contractAccountId); + Thread.sleep(5000); + + var newContractId = idMirror.populateContractNum(testEnv.client); + + assertThat(contractId.num).isEqualTo(newContractId.num); + } + + @Test + @DisplayName("Can populate ContractId num from mirror node (using async method)") + void canPopulateContractIdNumAsync() throws Exception { + var testEnv = new IntegrationTestEnv(1); + + var testContractByteCode = "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101cb806100606000396000f3fe608060405260043610610046576000357c01000000000000000000000000000000000000000000000000000000009004806341c0e1b51461004b578063cfae321714610062575b600080fd5b34801561005757600080fd5b506100606100f2565b005b34801561006e57600080fd5b50610077610162565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100b757808201518184015260208101905061009c565b50505050905090810190601f1680156100e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610160573373ffffffffffffffffffffffffffffffffffffffff16ff5b565b60606040805190810160405280600d81526020017f48656c6c6f2c20776f726c64210000000000000000000000000000000000000081525090509056fea165627a7a72305820ae96fb3af7cde9c0abfe365272441894ab717f816f07f41f07b1cbede54e256e0029"; + + var response = new FileCreateTransaction() + .setKeys(testEnv.operatorKey) + .setContents(testContractByteCode) + .execute(testEnv.client); + + var receipt = response.setValidateStatus(true).getReceipt(testEnv.client); + var fileId = Objects.requireNonNull(receipt.fileId); + + response = new ContractCreateTransaction() + .setAdminKey(testEnv.operatorKey) + .setGas(100000) + .setConstructorParameters(new ContractFunctionParameters().addString("Hello from Hedera.")) + .setBytecodeFileId(fileId) + .setContractMemo("[e2e::canPopulateContractIdNum]") + .execute(testEnv.client); + + receipt = response.setValidateStatus(true).getReceipt(testEnv.client); + + var contractId = Objects.requireNonNull(receipt.contractId); + + var info = new ContractInfoQuery() + .setContractId(contractId) + .execute(testEnv.client); + + var idMirror = ContractId.fromEvmAddress(0, 0, info.contractAccountId); + Thread.sleep(5000); + + var newContractId = idMirror.populateContractNumAsync(testEnv.client).get(); + + assertThat(contractId.num).isEqualTo(newContractId.num); + } +} diff --git a/sdk/src/integrationTest/java/ContractNonceInfoIntegrationTest.java b/sdk/src/integrationTest/java/ContractNonceInfoIntegrationTest.java index f9d6c1aae..c12165af6 100644 --- a/sdk/src/integrationTest/java/ContractNonceInfoIntegrationTest.java +++ b/sdk/src/integrationTest/java/ContractNonceInfoIntegrationTest.java @@ -14,11 +14,10 @@ public class ContractNonceInfoIntegrationTest { private static final String SMART_CONTRACT_BYTECODE = "6080604052348015600f57600080fd5b50604051601a90603b565b604051809103906000f0801580156035573d6000803e3d6000fd5b50506047565b605c8061009483390190565b603f806100556000396000f3fe6080604052600080fdfea2646970667358221220a20122cbad3457fedcc0600363d6e895f17048f5caa4afdab9e655123737567d64736f6c634300081200336080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122053dfd8835e3dc6fedfb8b4806460b9b7163f8a7248bac510c6d6808d9da9d6d364736f6c63430008120033"; - // revisit me later @Test @DisplayName("Contract Create of A nonce, which deploys contract B in CONSTRUCTOR") void canIncrementNonceThroughContractConstructor() throws Exception { - var testEnv = new IntegrationTestEnv(1, 1); + var testEnv = new IntegrationTestEnv(1); @Var var response = new FileCreateTransaction() .setKeys(testEnv.operatorKey) diff --git a/sdk/src/integrationTest/java/IntegrationTestEnv.java b/sdk/src/integrationTest/java/IntegrationTestEnv.java index e0040e1cc..c724443f2 100644 --- a/sdk/src/integrationTest/java/IntegrationTestEnv.java +++ b/sdk/src/integrationTest/java/IntegrationTestEnv.java @@ -72,48 +72,6 @@ public IntegrationTestEnv(int maxNodesPerTransaction) throws Exception { client.setNetwork(network); } - // revisit me later - public IntegrationTestEnv(int maxNodesPerTransaction, int previewnet) throws Exception { - - client = Client.forPreviewnet(); - - if (maxNodesPerTransaction == 0) { - maxNodesPerTransaction = client.getNetwork().size(); - } - - client.setMaxNodesPerTransaction(maxNodesPerTransaction); - originalClient = client; - - try { - var operatorPrivateKey = PrivateKey.fromString( - "302e020100300506032b657004220420895ce211730a889dce859325fc2dc79517f6cd2071ac4c4e135fcc46b09c83dd"); - operatorId = AccountId.fromString("0.0.1071"); - operatorKey = operatorPrivateKey.getPublicKey(); - - client.setOperator(operatorId, operatorPrivateKey); - } catch (RuntimeException ignored) { - } - - operatorKey = client.getOperatorPublicKey(); - operatorId = client.getOperatorAccountId(); - - assertThat(client.getOperatorAccountId()).isNotNull(); - assertThat(client.getOperatorPublicKey()).isNotNull(); - - if (client.getNetwork().size() > 0 && (client.getNetwork().containsKey(DEFAULT_LOCAL_NODE_ADDRESS))) { - isLocalNode = true; - } - - var nodeGetter = new TestEnvNodeGetter(client); - var network = new HashMap(); - - var nodeCount = Math.min(client.getNetwork().size(), maxNodesPerTransaction); - for (@Var int i = 0; i < nodeCount; i++) { - nodeGetter.nextNode(network); - } - client.setNetwork(network); - } - @SuppressWarnings("EmptyCatch") private static Client createTestEnvClient() throws Exception { if (System.getProperty("HEDERA_NETWORK").equals("previewnet")) { diff --git a/sdk/src/integrationTest/java/TokenPauseIntegrationTest.java b/sdk/src/integrationTest/java/TokenPauseIntegrationTest.java new file mode 100644 index 000000000..c4b5272d8 --- /dev/null +++ b/sdk/src/integrationTest/java/TokenPauseIntegrationTest.java @@ -0,0 +1,62 @@ +import static org.junit.jupiter.api.Assertions.assertThrows; + +import com.hedera.hashgraph.sdk.AccountCreateTransaction; +import com.hedera.hashgraph.sdk.Hbar; +import com.hedera.hashgraph.sdk.PrecheckStatusException; +import com.hedera.hashgraph.sdk.PrivateKey; +import com.hedera.hashgraph.sdk.ReceiptStatusException; +import com.hedera.hashgraph.sdk.TokenAssociateTransaction; +import com.hedera.hashgraph.sdk.TokenCreateTransaction; +import com.hedera.hashgraph.sdk.TokenPauseTransaction; +import com.hedera.hashgraph.sdk.TransferTransaction; +import java.util.Collections; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +public class TokenPauseIntegrationTest { + + @Test + @DisplayName("Can execute token pause transaction") + void canExecuteTokenPauseTransaction() throws Exception { + var testEnv = new IntegrationTestEnv(1).useThrowawayAccount(); + var accountKey = PrivateKey.generateED25519(); + var testTokenAmount = 10; + var accountId = new AccountCreateTransaction().setKey(accountKey).setInitialBalance(new Hbar(2)) + .execute(testEnv.client).getReceipt(testEnv.client).accountId; + + var tokenId = new TokenCreateTransaction().setTokenName("ffff").setTokenSymbol("F").setInitialSupply(1000000) + .setDecimals(3).setTreasuryAccountId(testEnv.operatorId).setAdminKey(testEnv.operatorKey) + .setPauseKey(testEnv.operatorKey).setFreezeDefault(false).execute(testEnv.client) + .getReceipt(testEnv.client).tokenId; + + new TokenAssociateTransaction().setAccountId(accountId).setTokenIds(Collections.singletonList(tokenId)) + .freezeWith(testEnv.client).sign(accountKey).execute(testEnv.client).getReceipt(testEnv.client); + + new TransferTransaction().addTokenTransfer(tokenId, accountId, testTokenAmount) + .addTokenTransfer(tokenId, testEnv.operatorId, -testTokenAmount).execute(testEnv.client) + .getReceipt(testEnv.client); + + new TokenPauseTransaction().setTokenId(tokenId).freezeWith(testEnv.client).execute(testEnv.client) + .getReceipt(testEnv.client); + + assertThrows(ReceiptStatusException.class, () -> { + new TransferTransaction().addTokenTransfer(tokenId, accountId, testTokenAmount) + .addTokenTransfer(tokenId, testEnv.operatorId, -testTokenAmount).freezeWith(testEnv.client) + .sign(accountKey).execute(testEnv.client).getReceipt(testEnv.client); + }); + + testEnv.close(); + } + + @Test + @DisplayName("Cannot pause with no token ID") + void cannotPauseWithNoTokenId() throws Exception { + var testEnv = new IntegrationTestEnv(1).useThrowawayAccount(); + + assertThrows(PrecheckStatusException.class, () -> { + new TokenPauseTransaction().execute(testEnv.client).getReceipt(testEnv.client); + }); + + testEnv.close(); + } +} diff --git a/sdk/src/integrationTest/java/TokenUnpauseIntegrationTest.java b/sdk/src/integrationTest/java/TokenUnpauseIntegrationTest.java new file mode 100644 index 000000000..028c324f6 --- /dev/null +++ b/sdk/src/integrationTest/java/TokenUnpauseIntegrationTest.java @@ -0,0 +1,66 @@ +import static org.junit.jupiter.api.Assertions.assertThrows; + +import com.hedera.hashgraph.sdk.AccountCreateTransaction; +import com.hedera.hashgraph.sdk.AccountDeleteTransaction; +import com.hedera.hashgraph.sdk.Hbar; +import com.hedera.hashgraph.sdk.PrecheckStatusException; +import com.hedera.hashgraph.sdk.PrivateKey; +import com.hedera.hashgraph.sdk.TokenAssociateTransaction; +import com.hedera.hashgraph.sdk.TokenCreateTransaction; +import com.hedera.hashgraph.sdk.TokenDeleteTransaction; +import com.hedera.hashgraph.sdk.TokenUnpauseTransaction; +import com.hedera.hashgraph.sdk.TokenWipeTransaction; +import com.hedera.hashgraph.sdk.TransferTransaction; +import java.util.Collections; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +public class TokenUnpauseIntegrationTest { + + @Test + @DisplayName("Can execute token unpause transaction") + void canExecuteTokenUnpauseTransaction() throws Exception { + var testEnv = new IntegrationTestEnv(1).useThrowawayAccount(); + var accountKey = PrivateKey.generateED25519(); + var testTokenAmount = 10; + var accountId = new AccountCreateTransaction().setKey(accountKey).setInitialBalance(new Hbar(2)) + .execute(testEnv.client).getReceipt(testEnv.client).accountId; + + var tokenId = new TokenCreateTransaction().setTokenName("ffff").setTokenSymbol("F").setInitialSupply(1000000) + .setDecimals(3).setTreasuryAccountId(testEnv.operatorId).setAdminKey(testEnv.operatorKey) + .setPauseKey(testEnv.operatorKey).setWipeKey(testEnv.operatorKey).setFreezeDefault(false) + .execute(testEnv.client).getReceipt(testEnv.client).tokenId; + + new TokenAssociateTransaction().setAccountId(accountId).setTokenIds(Collections.singletonList(tokenId)) + .freezeWith(testEnv.client).sign(accountKey).execute(testEnv.client).getReceipt(testEnv.client); + + new TokenUnpauseTransaction().setTokenId(tokenId).freezeWith(testEnv.client).execute(testEnv.client) + .getReceipt(testEnv.client); + + new TransferTransaction().addTokenTransfer(tokenId, accountId, testTokenAmount) + .addTokenTransfer(tokenId, testEnv.operatorId, -testTokenAmount).execute(testEnv.client) + .getReceipt(testEnv.client); + + new TokenWipeTransaction().setTokenId(tokenId).setAccountId(accountId).setAmount(testTokenAmount) + .execute(testEnv.client).getReceipt(testEnv.client); + + new TokenDeleteTransaction().setTokenId(tokenId).execute(testEnv.client).getReceipt(testEnv.client); + + new AccountDeleteTransaction().setTransferAccountId(testEnv.operatorId).setAccountId(accountId) + .freezeWith(testEnv.client).sign(accountKey).execute(testEnv.client).getReceipt(testEnv.client); + + testEnv.close(); + } + + @Test + @DisplayName("Cannot unpause with no token ID") + void cannotUnpauseWithNoTokenId() throws Exception { + var testEnv = new IntegrationTestEnv(1).useThrowawayAccount(); + + assertThrows(PrecheckStatusException.class, () -> { + new TokenUnpauseTransaction().execute(testEnv.client).getReceipt(testEnv.client); + }); + + testEnv.close(); + } +} diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceAdjustTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceAdjustTransaction.java index 29a072161..21882580f 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceAdjustTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceAdjustTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceApproveTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceApproveTransaction.java index c352bf0bd..b0b0fe303 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceApproveTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceApproveTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceDeleteTransaction.java index e0c05e3a5..27fd8438a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceDeleteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceDeleteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalance.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalance.java index 4ee5764e1..c06adad5a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalance.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalance.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalanceQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalanceQuery.java index c4344a378..a103a54ba 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalanceQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalanceQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountCreateTransaction.java index 6ca18c996..0ee3bf9df 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountCreateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountCreateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountDeleteTransaction.java index d59cfae6c..150d47b66 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountDeleteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountDeleteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountId.java index 1075cf937..f60991014 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountId.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountId.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,13 +22,14 @@ import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; import com.hedera.hashgraph.sdk.proto.AccountID; -import org.bouncycastle.util.encoders.Hex; - -import javax.annotation.Nonnegative; -import javax.annotation.Nullable; import java.util.Arrays; import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; import java.util.regex.Pattern; +import javax.annotation.Nonnegative; +import javax.annotation.Nullable; +import org.bouncycastle.util.encoders.Hex; /** * The ID for a cryptocurrency account on Hedera. @@ -223,7 +224,11 @@ public static AccountId fromEvmAddress(EvmAddress evmAddress, @Nonnegative long * @return the account id object */ public static AccountId fromSolidityAddress(String address) { - return EntityIdHelper.fromSolidityAddress(address, AccountId::new); + if (EntityIdHelper.isLongZeroAddress(EntityIdHelper.decodeSolidityAddress(address))) { + return EntityIdHelper.fromSolidityAddress(address, AccountId::new); + } else { + return fromEvmAddress(address); + } } /** @@ -293,6 +298,40 @@ AccountID toProtobuf() { return accountIdBuilder.build(); } + /** + * Gets the actual `num` field of the `AccountId` from the Mirror Node. + * Should be used after generating `AccountId.fromEvmAddress()` because it sets the `num` field to `0` + * automatically since there is no connection between the `num` and the `evmAddress` + * Sync version + * + * @param client + * @return populated AccountId instance + */ + public AccountId populateAccountNum(Client client) throws InterruptedException, ExecutionException { + return populateAccountNumAsync(client).get(); + } + + /** + * Gets the actual `num` field of the `AccountId` from the Mirror Node. + * Should be used after generating `AccountId.fromEvmAddress()` because it sets the `num` field to `0` + * automatically since there is no connection between the `num` and the `evmAddress` + * Async version + * + * @param client + * @return populated AccountId instance + */ + public CompletableFuture populateAccountNumAsync(Client client) { + return EntityIdHelper.getAccountNumFromMirrorNodeAsync(client, evmAddress.toString()) + .thenApply(accountNumFromMirrorNode -> + new AccountId( + this.shard, + this.realm, + accountNumFromMirrorNode, + this.checksum, + this.aliasKey, + this.evmAddress)); + } + /** * @param client to validate against * @throws BadEntityIdException if entity ID is formatted poorly diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfo.java index 175edc650..47f172946 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfo.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfo.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoFlow.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoFlow.java index cada2595a..1fb0c0c68 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoFlow.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoFlow.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoQuery.java index 699b23b4f..d4b7bdde7 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountRecordsQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountRecordsQuery.java index 2674d1fc3..12bbf31f3 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountRecordsQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountRecordsQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountStakersQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountStakersQuery.java index fde3ee927..159ba1643 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountStakersQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountStakersQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountUpdateTransaction.java index c524405d3..778331c69 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountUpdateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountUpdateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AddressBookQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AddressBookQuery.java index 514649f5a..682934a74 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AddressBookQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AddressBookQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AssessedCustomFee.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AssessedCustomFee.java index bbf6a6f8e..49ff9bd8d 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AssessedCustomFee.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AssessedCustomFee.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadEntityIdException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadEntityIdException.java index 476cec78b..3ed3a1926 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadEntityIdException.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadEntityIdException.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadKeyException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadKeyException.java index 27a0ecca0..8b7a50ad0 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadKeyException.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadKeyException.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicException.java index 458941da4..c43d03bab 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicException.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicException.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicReason.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicReason.java index 2b2ac76a4..8ab2895c8 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicReason.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicReason.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNetwork.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNetwork.java index a1a983a19..84ec35f90 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNetwork.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNetwork.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNode.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNode.java index 6ab1961a7..81faf0c52 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNode.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNode.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,14 +27,13 @@ import io.grpc.ManagedChannelBuilder; import io.grpc.TlsChannelCredentials; import io.grpc.inprocess.InProcessChannelBuilder; -import java.util.Objects; -import java.util.concurrent.CompletableFuture; import java.time.Duration; import java.time.Instant; - -import javax.annotation.Nullable; +import java.util.Objects; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; +import javax.annotation.Nullable; /** * Internal utility class. @@ -282,9 +281,10 @@ synchronized ManagedChannel getChannel() { channel = channelBuilder .keepAliveTimeout(10, TimeUnit.SECONDS) + .keepAliveWithoutCalls(true) + .disableRetry() .userAgent(getUserAgent()) .executor(executor) - .disableRetry() .build(); return channel; @@ -296,12 +296,20 @@ synchronized ManagedChannel getChannel() { * @return did we fail to connect */ boolean channelFailedToConnect() { + return channelFailedToConnect(Instant.MAX); + } + + boolean channelFailedToConnect(Instant timeoutTime) { if (hasConnected) { return false; } hasConnected = (getChannel().getState(true) == ConnectivityState.READY); try { for (@Var int i = 0; i < GET_STATE_MAX_ATTEMPTS && !hasConnected; i++) { + Duration currentTimeout = Duration.between(Instant.now(), timeoutTime); + if (currentTimeout.isNegative() || currentTimeout.isZero()) { + return false; + } TimeUnit.MILLISECONDS.sleep(GET_STATE_INTERVAL_MILLIS); hasConnected = (getChannel().getState(true) == ConnectivityState.READY); } @@ -311,6 +319,7 @@ boolean channelFailedToConnect() { return !hasConnected; } + private CompletableFuture channelFailedToConnectAsync(int i, ConnectivityState state) { hasConnected = (state == ConnectivityState.READY); if (i >= GET_STATE_MAX_ATTEMPTS || hasConnected) { diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNodeAddress.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNodeAddress.java index afd0332ad..ac32d766f 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNodeAddress.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNodeAddress.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ChunkedTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ChunkedTransaction.java index fe446d5b6..42921e41d 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ChunkedTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ChunkedTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Client.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Client.java index c8006808c..a843813f7 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Client.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Client.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractByteCodeQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractByteCodeQuery.java index 1a4589e91..4b7147024 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractByteCodeQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractByteCodeQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCallQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCallQuery.java index d9de0f543..2282b7fe4 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCallQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCallQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateFlow.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateFlow.java index fe0141b7f..547141393 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateFlow.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateFlow.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateTransaction.java index 83e71f353..f14726162 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractDeleteTransaction.java index 3d3b89d90..8ff40a3fe 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractDeleteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractDeleteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractExecuteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractExecuteTransaction.java index bb1219642..f4e525519 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractExecuteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractExecuteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionParameters.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionParameters.java index bbad72dfe..dc3419b5c 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionParameters.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionParameters.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -93,6 +93,10 @@ private static ByteString encodeBytes32(byte[] bytes) { return rightPad32(ByteString.copyFrom(bytes)); } + private static ByteString encodeBool(boolean bool) { + return int256(bool ? 1 : 0, 8); + } + private static ByteString encodeArray(Stream elements) { List list = elements.toList(); @@ -312,7 +316,27 @@ public ContractFunctionParameters addBytes32Array(byte[][] param) { */ public ContractFunctionParameters addBool(boolean bool) { // boolean encodes to `uint8` of values [0, 1] - args.add(new Argument("bool", int256(bool ? 1 : 0, 8), false)); + args.add(new Argument("bool", encodeBool(bool), false)); + return this; + } + + /** + * Add a boolean array parameter + * + * @param param The array of booleans to be added + * @return {@code this} + */ + public ContractFunctionParameters addBoolArray(boolean[] param) { + Boolean[] boolWrapperArray = new Boolean[param.length]; + for (int i = 0; i < param.length; i++) { + boolWrapperArray[i] = param[i]; + } + + Stream bools = Arrays.stream(boolWrapperArray) + .map(ContractFunctionParameters::encodeBool); + + args.add(new Argument("bool[]", encodeArray(bools), true)); + return this; } diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionResult.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionResult.java index 2f557206b..b478ccdc7 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionResult.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionResult.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,18 +19,19 @@ */ package com.hedera.hashgraph.sdk; +import com.esaulpaugh.headlong.abi.Tuple; +import com.esaulpaugh.headlong.abi.TupleType; import com.google.common.base.MoreObjects; import com.google.protobuf.ByteString; import com.google.protobuf.BytesValue; import com.hedera.hashgraph.sdk.proto.ContractFunctionResultOrBuilder; -import org.bouncycastle.util.encoders.Hex; - -import javax.annotation.Nullable; import java.math.BigInteger; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import javax.annotation.Nullable; +import org.bouncycastle.util.encoders.Hex; /** * Result of invoking a contract via {@link ContractCallQuery}, or {@link ContractExecuteTransaction}, or the result of @@ -111,8 +112,9 @@ public final class ContractFunctionResult { @Nullable public final AccountId senderAccountId; /** - * A list of updated contract account nonces containing the new nonce value for each contract account. - * This is always empty in a ContractCallLocalResponse#ContractFunctionResult message, since no internal creations can happen in a static EVM call. + * A list of updated contract account nonces containing the new nonce value for each contract account. This is + * always empty in a ContractCallLocalResponse#ContractFunctionResult message, since no internal creations can + * happen in a static EVM call. */ public final List contractNonces; private final ByteString rawResult; @@ -474,4 +476,9 @@ public String toString() { .add("contractNonces", contractNonces) .toString(); } + + public Tuple getResult(String types) { + TupleType tupleType = TupleType.parse(types); + return tupleType.decode(rawResult.toByteArray()); + } } diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionSelector.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionSelector.java index ec0aa7e53..52cb3e62d 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionSelector.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionSelector.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractId.java index 32985478d..efa5c4b83 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractId.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractId.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,13 +22,14 @@ import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; import com.hedera.hashgraph.sdk.proto.ContractID; -import org.bouncycastle.util.encoders.Hex; - -import javax.annotation.Nonnegative; -import javax.annotation.Nullable; import java.util.Arrays; import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; import java.util.regex.Pattern; +import javax.annotation.Nonnegative; +import javax.annotation.Nullable; +import org.bouncycastle.util.encoders.Hex; /** * The ID for a smart contract instance on Hedera. @@ -133,7 +134,11 @@ public static ContractId fromString(String id) { * @return the contract id object */ public static ContractId fromSolidityAddress(String address) { - return EntityIdHelper.fromSolidityAddress(address, ContractId::new); + if (EntityIdHelper.isLongZeroAddress(EntityIdHelper.decodeSolidityAddress(address))) { + return EntityIdHelper.fromSolidityAddress(address, ContractId::new); + } else { + return fromEvmAddress(0, 0, address); + } } /** @@ -212,6 +217,36 @@ ContractID toProtobuf() { return builder.build(); } + /** + * Gets the actual `num` field of the `ContractId` from the Mirror Node. + * Should be used after generating `ContractId.fromEvmAddress()` because it sets the `num` field to `0` + * automatically since there is no connection between the `num` and the `evmAddress` + * Sync version + * + * @param client + * @return populated ContractId instance + */ + public ContractId populateContractNum(Client client) throws InterruptedException, ExecutionException { + return populateContractNumAsync(client).get(); + } + + /** + * Gets the actual `num` field of the `ContractId` from the Mirror Node. + * Should be used after generating `ContractId.fromEvmAddress()` because it sets the `num` field to `0` + * automatically since there is no connection between the `num` and the `evmAddress` + * Async version + * + * @param client + * @return populated ContractId instance + */ + public CompletableFuture populateContractNumAsync(Client client) { + EvmAddress address = new EvmAddress(this.evmAddress); + + return EntityIdHelper.getContractNumFromMirrorNodeAsync(client, address.toString()) + .thenApply(contractNumFromMirrorNode -> + new ContractId(this.shard, this.realm, contractNumFromMirrorNode, checksum)); + } + /** * @param client to validate against * @throws BadEntityIdException if entity ID is formatted poorly diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfo.java index 8f94adca6..e432fe2eb 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfo.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfo.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfoQuery.java index 25fa517a1..14c82880a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfoQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfoQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractLogInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractLogInfo.java index 6f9a43611..df2b44452 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractLogInfo.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractLogInfo.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractStateChange.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractStateChange.java index adaf6ad23..7e2a2eb90 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractStateChange.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractStateChange.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractUpdateTransaction.java index 14fad8289..472d0a078 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractUpdateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractUpdateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Crypto.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Crypto.java index b89106ed1..ab582a39d 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Crypto.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Crypto.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFee.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFee.java index 93ce6edd1..4432f309a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFee.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFee.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFeeBase.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFeeBase.java index 374666cb6..00475043a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFeeBase.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFeeBase.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFixedFee.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFixedFee.java index a4f99d5ac..b2ea8b432 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFixedFee.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFixedFee.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFractionalFee.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFractionalFee.java index 998bda1eb..320236c93 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFractionalFee.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFractionalFee.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomRoyaltyFee.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomRoyaltyFee.java index 59e8cab56..de6091ebc 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomRoyaltyFee.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomRoyaltyFee.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Delayer.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Delayer.java index 191bd099f..33b53df59 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Delayer.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Delayer.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/DelegateContractId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/DelegateContractId.java index bb1e85c69..c99f035e8 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/DelegateContractId.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/DelegateContractId.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/DurationConverter.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/DurationConverter.java index c26e1ffe7..328126a9f 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/DurationConverter.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/DurationConverter.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Endpoint.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Endpoint.java index 5f30b3d44..472244d64 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Endpoint.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Endpoint.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/EntityIdHelper.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/EntityIdHelper.java index 65bc546f9..a24e9d066 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/EntityIdHelper.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/EntityIdHelper.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,9 +20,19 @@ package com.hedera.hashgraph.sdk; import com.google.errorprone.annotations.Var; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; import java.nio.ByteBuffer; +import java.time.Duration; import java.util.ArrayList; import java.util.List; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; import java.util.regex.Pattern; import javax.annotation.Nullable; import org.bouncycastle.util.encoders.DecoderException; @@ -45,6 +55,8 @@ class EntityIdHelper { private static final Pattern ENTITY_ID_REGEX = Pattern.compile( "(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-([a-z]{5}))?$"); + static final Duration MIRROR_NODE_CONNECTION_TIMEOUT = Duration.ofSeconds(30); + /** * Constructor. */ @@ -101,7 +113,7 @@ private static R fromSolidityAddress(byte[] address, WithIdNums withAddre * @param address the string representation * @return the decoded address */ - private static byte[] decodeSolidityAddress(@Var String address) { + public static byte[] decodeSolidityAddress(@Var String address) { address = address.startsWith("0x") ? address.substring(2) : address; if (address.length() != SOLIDITY_ADDRESS_LEN_HEX) { @@ -256,6 +268,88 @@ static String toStringWithChecksum(long shard, long realm, long num, Client clie } } + /** + * Takes an address as `byte[]` and returns whether this is a long-zero address + * @param address + * @return + */ + public static boolean isLongZeroAddress(byte[] address) { + for (int i = 0; i < 12; i++) { + if (address[i] != 0) { + return false; + } + } + return true; + } + + /** + * Get AccountId num from mirror node using evm address. + * + * @param client + * @param evmAddress + * @return + * @throws IOException + * @throws InterruptedException + */ + public static CompletableFuture getAccountNumFromMirrorNodeAsync(Client client, String evmAddress) { + String apiEndpoint = "/accounts/" + evmAddress; + return performQueryToMirrorNodeAsync(client, apiEndpoint) + .thenApply(response -> + parseNumFromMirrorNodeResponse(response, "account")); + } + + /** + * Get ContractId num from mirror node using evm address. + * + * @param client + * @param evmAddress + * @return + * @throws IOException + * @throws InterruptedException + */ + public static CompletableFuture getContractNumFromMirrorNodeAsync(Client client, String evmAddress) { + String apiEndpoint = "/contracts/" + evmAddress; + + CompletableFuture responseFuture = performQueryToMirrorNodeAsync(client, apiEndpoint); + + return responseFuture.thenApply(response -> + parseNumFromMirrorNodeResponse(response, "contract_id")); + } + + private static CompletableFuture performQueryToMirrorNodeAsync(Client client, String apiEndpoint) { + Optional mirrorUrl = client.getMirrorNetwork().stream() + .map(url -> url.substring(0, url.indexOf(":"))) + .findFirst(); + + if (mirrorUrl.isEmpty()) { + return CompletableFuture.failedFuture(new IllegalArgumentException("Mirror URL not found")); + } + + String apiUrl = "https://" + mirrorUrl.get() + "/api/v1" + apiEndpoint; + + if (client.getLedgerId() == null) { + apiUrl = "http://" + mirrorUrl.get() + ":5551/api/v1" + apiEndpoint; + } + + HttpClient httpClient = HttpClient.newHttpClient(); + HttpRequest httpRequest = HttpRequest.newBuilder() + .timeout(MIRROR_NODE_CONNECTION_TIMEOUT) + .uri(URI.create(apiUrl)) + .build(); + + return httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofString()) + .thenApply(HttpResponse::body); + } + + private static long parseNumFromMirrorNodeResponse(String responseBody, String memberName) { + JsonParser jsonParser = new JsonParser(); + JsonObject jsonObject = jsonParser.parse(responseBody).getAsJsonObject(); + + String num = jsonObject.get(memberName).getAsString(); + + return Long.parseLong(num.substring(num.lastIndexOf(".") + 1)); + } + @FunctionalInterface interface WithIdNums { R apply(long shard, long realm, long num, @Nullable String checksum); diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/EvmAddress.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/EvmAddress.java index bffe5558d..011f02db5 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/EvmAddress.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/EvmAddress.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRate.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRate.java index 4d133d195..52825a7c5 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRate.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRate.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRates.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRates.java index bfdbda398..fc66912fa 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRates.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRates.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Executable.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Executable.java index 8c71e7bac..18461cab0 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Executable.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Executable.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,8 @@ */ package com.hedera.hashgraph.sdk; +import static com.hedera.hashgraph.sdk.FutureConverter.toCompletableFuture; + import com.google.common.annotations.VisibleForTesting; import com.google.protobuf.MessageLite; import com.hedera.hashgraph.sdk.logger.LogLevel; @@ -29,9 +31,6 @@ import io.grpc.Status.Code; import io.grpc.StatusRuntimeException; import io.grpc.stub.ClientCalls; -import org.bouncycastle.util.encoders.Hex; - -import javax.annotation.Nullable; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; @@ -42,10 +41,14 @@ import java.util.concurrent.CompletionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import java.util.function.*; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.function.UnaryOperator; import java.util.regex.Pattern; - -import static com.hedera.hashgraph.sdk.FutureConverter.toCompletableFuture; +import javax.annotation.Nullable; +import org.bouncycastle.util.encoders.Hex; /** * Abstract base utility class. @@ -406,16 +409,25 @@ public O execute(Client client, Duration timeout) throws TimeoutException, Prech delay(node.getRemainingTimeForBackoff()); } - if (node.channelFailedToConnect()) { + if (node.channelFailedToConnect(timeoutTime)) { logger.trace("Failed to connect channel for node {} for request #{}", node.getAccountId(), attempt); lastException = grpcRequest.reactToConnectionFailure(); continue; } + currentTimeout = Duration.between(Instant.now(), timeoutTime); + grpcRequest.setGrpcDeadline(currentTimeout); + try { response = blockingUnaryCall.apply(grpcRequest); logTransaction(this.getTransactionIdInternal(), client, node, false, attempt, response, null); } catch (Throwable e) { + if (e instanceof StatusRuntimeException) { + StatusRuntimeException statusRuntimeException = (StatusRuntimeException) e; + if (statusRuntimeException.getStatus().getCode().equals(Code.DEADLINE_EXCEEDED)) { + throw new TimeoutException(); + } + } lastException = e; logTransaction(this.getTransactionIdInternal(), client, node, false, attempt, null, e); } @@ -440,7 +452,8 @@ public O execute(Client client, Duration timeout) throws TimeoutException, Prech // Response is not ready yet from server, need to wait. lastException = grpcRequest.mapStatusException(); if (attempt < maxAttempts) { - delay(grpcRequest.getDelay()); + currentTimeout = Duration.between(Instant.now(), timeoutTime); + delay(Math.min(currentTimeout.toMillis(), grpcRequest.getDelay())); } continue; case REQUEST_ERROR: @@ -835,8 +848,7 @@ class GrpcRequest { private final ProtoRequestT request; private final long startAt; private final long delay; - private final Duration grpcDeadline; - + private Duration grpcDeadline; private ResponseT response; private double latency; private Status responseStatus; @@ -862,6 +874,10 @@ public CallOptions getCallOptions() { return CallOptions.DEFAULT.withDeadlineAfter(deadline, TimeUnit.MILLISECONDS); } + public void setGrpcDeadline(Duration grpcDeadline) { + this.grpcDeadline = grpcDeadline; + } + public Node getNode() { return node; } diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExecutionState.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExecutionState.java index 888ecbb0f..412e05efa 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExecutionState.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExecutionState.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeAssessmentMethod.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeAssessmentMethod.java index 0f93c99ef..765521886 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeAssessmentMethod.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeAssessmentMethod.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeComponents.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeComponents.java index 7571d677b..a8bea950b 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeComponents.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeComponents.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeData.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeData.java index 621f508a3..d13287150 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeData.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeData.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeDataType.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeDataType.java index 79761b639..f67ed78af 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeDataType.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeDataType.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedule.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedule.java index 978ddc642..37490f632 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedule.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedule.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedules.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedules.java index 38d747bb3..d201ccd57 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedules.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedules.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileAppendTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileAppendTransaction.java index e5b35920c..ad5c8778b 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileAppendTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileAppendTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileContentsQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileContentsQuery.java index 98dfdaf8a..0df84b101 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileContentsQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileContentsQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileCreateTransaction.java index ede70b16e..59fea2f18 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileCreateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileCreateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileDeleteTransaction.java index dffebcee4..8d1972139 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileDeleteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileDeleteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileId.java index 648591f04..3aab43634 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileId.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileId.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfo.java index a0accf9e9..73440ecf5 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfo.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfo.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfoQuery.java index dc577b434..9c1a4a941 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfoQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfoQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileUpdateTransaction.java index de18c7752..86a5259fc 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileUpdateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileUpdateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeTransaction.java index 0dbbed552..1361cb403 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeType.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeType.java index 072b8bada..ddd52b3ec 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeType.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeType.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FutureConverter.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FutureConverter.java index b45978852..6ef067154 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FutureConverter.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FutureConverter.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Hbar.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Hbar.java index cb6822b23..c85cdcc77 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Hbar.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Hbar.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarAllowance.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarAllowance.java index 4310d7526..f796e2ada 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarAllowance.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarAllowance.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarUnit.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarUnit.java index 0b0c97923..9e4893de8 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarUnit.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarUnit.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaPreCheckStatusException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaPreCheckStatusException.java index d85b335d7..978eb440f 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaPreCheckStatusException.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaPreCheckStatusException.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaReceiptStatusException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaReceiptStatusException.java index 19cab2bad..d1e2ec8a5 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaReceiptStatusException.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaReceiptStatusException.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaTrustManager.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaTrustManager.java index 2448f4d78..c11d6b248 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaTrustManager.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaTrustManager.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4Address.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4Address.java index 919090604..957e934ba 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4Address.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4Address.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4AddressPart.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4AddressPart.java index 767e21683..33f0cbcd9 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4AddressPart.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4AddressPart.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/InstantConverter.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/InstantConverter.java index 93e609b4c..c6aa54222 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/InstantConverter.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/InstantConverter.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Key.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Key.java index b7b97adbe..ae7dea3e6 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Key.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Key.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/KeyList.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/KeyList.java index ba73367c9..a717ad216 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/KeyList.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/KeyList.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Keystore.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Keystore.java index e245cecfe..d0b15be58 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Keystore.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Keystore.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LedgerId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LedgerId.java index d7d2db382..ee875d778 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LedgerId.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LedgerId.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHash.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHash.java index 7c045fd4e..751a15650 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHash.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHash.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashAddTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashAddTransaction.java index 2978b0679..943ac372d 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashAddTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashAddTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashDeleteTransaction.java index a4c52622f..3740b2174 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashDeleteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashDeleteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashQuery.java index 9b7519296..db487c5ee 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LockableList.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LockableList.java index 50b8d46df..d09280312 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LockableList.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LockableList.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxAttemptsExceededException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxAttemptsExceededException.java index 907245f8d..0906a169d 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxAttemptsExceededException.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxAttemptsExceededException.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededException.java index 2f4e3989c..6f7e98a05 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededException.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededException.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNetwork.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNetwork.java index 1670f6d5c..d94629804 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNetwork.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNetwork.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNode.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNode.java index b421c695b..baabee66f 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNode.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNode.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Mnemonic.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Mnemonic.java index 466b7f392..c196f4a63 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Mnemonic.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Mnemonic.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Network.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Network.java index e89b6569e..93b789681 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Network.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Network.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkName.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkName.java index 70306dfd1..2d115ca38 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkName.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkName.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfo.java index 4fc7fdb15..4e7f3e530 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfo.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfo.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfoQuery.java index 406d878c9..a486ff2ec 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfoQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfoQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NftId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NftId.java index 960d546ad..3caa330e7 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NftId.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NftId.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Node.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Node.java index 5cbdd2908..92614895f 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Node.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Node.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddress.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddress.java index 37251e1da..82faf1683 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddress.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddress.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddressBook.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddressBook.java index 8a0e93ade..e065eeaaf 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddressBook.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddressBook.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Pem.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Pem.java index 99d53c8e9..ca036877e 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Pem.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Pem.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrecheckStatusException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrecheckStatusException.java index 7df3224aa..bac8a2b0c 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrecheckStatusException.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrecheckStatusException.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKey.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKey.java index 66ea9ac0f..253c8102c 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKey.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKey.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyECDSA.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyECDSA.java index 66d577c78..521519b87 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyECDSA.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyECDSA.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyED25519.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyED25519.java index 7f9d5d722..84638043d 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyED25519.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyED25519.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrngTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrngTransaction.java index 14434be87..8dab73131 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrngTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrngTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ProxyStaker.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ProxyStaker.java index 1d24f3001..766fadd8e 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ProxyStaker.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ProxyStaker.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKey.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKey.java index b8287d9b5..6995c9f38 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKey.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKey.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyECDSA.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyECDSA.java index d62f6bd7c..f7d889f70 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyECDSA.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyECDSA.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyED25519.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyED25519.java index b87780b5d..bc6a50912 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyED25519.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyED25519.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Query.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Query.java index 9a526a4b7..726c72f19 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Query.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Query.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ReceiptStatusException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ReceiptStatusException.java index 35fd1100b..56edc41f8 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ReceiptStatusException.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ReceiptStatusException.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/RequestType.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/RequestType.java index 78ae0ce46..868471486 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/RequestType.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/RequestType.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleCreateTransaction.java index 828b8e09e..2ee92d237 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleCreateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleCreateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransaction.java index 8780c094a..08ce3a90a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleId.java index f31440a4a..d4baaee87 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleId.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleId.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfo.java index 468dca18f..ba44ba0f5 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfo.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfo.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfoQuery.java index c6594aa26..088e81369 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfoQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfoQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleSignTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleSignTransaction.java index f8195eb7c..4d6571418 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleSignTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleSignTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/SemanticVersion.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/SemanticVersion.java index 7c8f35714..397af9948 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/SemanticVersion.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/SemanticVersion.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Status.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Status.java index 6ed605ea8..d4ea5dbe2 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Status.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Status.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/StorageChange.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/StorageChange.java index 28bd3a65e..ed263efe3 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/StorageChange.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/StorageChange.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/SubscriptionHandle.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/SubscriptionHandle.java index 63e7fef8a..5ce034dec 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/SubscriptionHandle.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/SubscriptionHandle.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemDeleteTransaction.java index b295341db..807c25e53 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemDeleteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemDeleteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemUndeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemUndeleteTransaction.java index cb7ce556d..6f96623b7 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemUndeleteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemUndeleteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ThreadLocalSecureRandom.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ThreadLocalSecureRandom.java index 07bfb8f5f..2bfbe227b 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ThreadLocalSecureRandom.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ThreadLocalSecureRandom.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAllowance.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAllowance.java index f79f6bcbe..bb72c4d40 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAllowance.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAllowance.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociateTransaction.java index e544b2606..fdcebc483 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociation.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociation.java index aef00715f..6c9a7183a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociation.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociation.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenBurnTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenBurnTransaction.java index 56b00769d..9da12e6b8 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenBurnTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenBurnTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenCreateTransaction.java index f13ef2dc6..2f2ac53ba 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenCreateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenCreateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDeleteTransaction.java index b0cc72aca..4b34554ed 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDeleteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDeleteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDissociateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDissociateTransaction.java index f758917c9..ca852dd1a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDissociateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDissociateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransaction.java index a6bf7c963..af8f12f32 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFreezeTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFreezeTransaction.java index 20eb8944f..02b157589 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFreezeTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFreezeTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenGrantKycTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenGrantKycTransaction.java index 99389e0f2..ade7f564a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenGrantKycTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenGrantKycTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenId.java index 3c4452e65..50a75e847 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenId.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenId.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfo.java index 9ea52ec98..f856c5f76 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfo.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfo.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfoQuery.java index 2d942c6f9..58afd00f7 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfoQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfoQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenMintTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenMintTransaction.java index 1a801ca79..9daa2cd6b 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenMintTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenMintTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftAllowance.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftAllowance.java index 76bab059e..c10c38fca 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftAllowance.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftAllowance.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfo.java index a77fedc8a..c53842a41 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfo.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfo.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfoQuery.java index aca6497bf..cdaf3af30 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfoQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfoQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftTransfer.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftTransfer.java index c3c81a8ed..573b1601e 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftTransfer.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftTransfer.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenPauseTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenPauseTransaction.java index 59a774dd2..fb2979e7a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenPauseTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenPauseTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRelationship.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRelationship.java index b321e4732..81914d4e6 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRelationship.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRelationship.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransaction.java index 953428da9..dc9bdbf43 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenSupplyType.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenSupplyType.java index b96f8da58..d745b8b70 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenSupplyType.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenSupplyType.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenTransfer.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenTransfer.java index 41466ea4a..1292df833 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenTransfer.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenTransfer.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenType.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenType.java index 8f176e30b..7e344d688 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenType.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenType.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransaction.java index 9e5c6d3e1..6fe410404 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnpauseTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnpauseTransaction.java index d5f4d3735..b821d0a35 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnpauseTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnpauseTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUpdateTransaction.java index 0d1619382..36057602e 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUpdateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUpdateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenWipeTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenWipeTransaction.java index 91b939804..f72e953a3 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenWipeTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenWipeTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicCreateTransaction.java index 29ccd6168..726cd0ac9 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicCreateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicCreateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicDeleteTransaction.java index afd7ee5c3..aa8bcac77 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicDeleteTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicDeleteTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicId.java index 2ea229a5e..7297ff711 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicId.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicId.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfo.java index a0ad1daba..41dbdb3ae 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfo.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfo.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfoQuery.java index 7299f9201..66fcfd8ff 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfoQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfoQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessage.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessage.java index aaff4b040..b048148b3 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessage.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessage.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageChunk.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageChunk.java index b27615352..da8357275 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageChunk.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageChunk.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageQuery.java index f4423c603..46dc820e4 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransaction.java index a0991a36b..0e5c9c332 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicUpdateTransaction.java index 2c362459f..7a3786007 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicUpdateTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicUpdateTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Transaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Transaction.java index cf0996d24..5264c8101 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Transaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Transaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionFeeSchedule.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionFeeSchedule.java index 46c73f019..0ce24f072 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionFeeSchedule.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionFeeSchedule.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionId.java index 0db859630..5dc8a939f 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionId.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionId.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceipt.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceipt.java index bb995d7ba..d09e3073f 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceipt.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceipt.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceiptQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceiptQuery.java index 4eb768f66..963e48684 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceiptQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceiptQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecord.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecord.java index 98db7c3af..fceb5afea 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecord.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecord.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecordQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecordQuery.java index f780e491a..dd8079c00 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecordQuery.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecordQuery.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionResponse.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionResponse.java index ed32f3518..3ab492d80 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionResponse.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionResponse.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Transfer.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Transfer.java index 5ab4c377c..d2bc1968c 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Transfer.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Transfer.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java index be05ddf55..9952a368a 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/package-info.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/package-info.java index 121645aaf..e057ee007 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/package-info.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/package-info.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/main/resources/addressbook/mainnet.pb b/sdk/src/main/resources/addressbook/mainnet.pb index 4f8a231d5..f2f9e8fd3 100644 --- a/sdk/src/main/resources/addressbook/mainnet.pb +++ b/sdk/src/main/resources/addressbook/mainnet.pb @@ -1,172 +1,172 @@ Ð"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009098865def2f2ab376c7f0f738c1d87a27ac01afd008620c35cb6ebfcbb0c33003193a388c346d30231727012193bb76fd3004b864312c689ef5213cbb901101509deab94f26a732e637929da4c4cb32517e3adbb3811d50ac4c77c1fce8b651606215f34707f3e7265545e58c894609e28376bdb7775fe30439e0e1592fdcb0c3ee1c305773d072a6b8957eafce1a11be965edaff3843366cb6a44ec25a890106e6247567f76b550fda482baec6307d698ec88841fd66f23f210e47b8a9dcba6ba4e1fa716db33c80e30819496dcb5e5609fb6e7c615379bdded427e9231b9254c2baf943608a86d698ae9a3c8639df887d6f6b5a71385d24338d911a212bf71f1e2acc8b186b96ec8e69c86b6d058217776a09c9c68953edb5916578b5a263b2f469e3b0c07eada71a447eea7f8fc1bb8074255567b7f0bd1e6afb0358718c98b429e24b2298596fc76cf6af396ca9434d7926ec7d37d4b92af56d45feff8196095224a916c1ffe6b667e255fc3ac8cccef920dc044b25003132b87806742f02030100012:`34244d50a8ed4d4cbadf25620d1ab88a32081977d2f8d70ba82ba52b3305a4560824cf6b0106d635ed5c39272fffabe8B -¤,B¤ˆB +"ïR£ˆB ¥vû£ˆB -#íÈ´¤ˆB +"ïR¤ˆB  |Ž~¤ˆB -¤,B£ˆB - #íÈ´£ˆB -"ïR¤ˆB - -"ïR£ˆB +¤,B£ˆB  |Ž~£ˆB +#íÈ´¤ˆB + +¤,B¤ˆB + ¥vû¤ˆJ!Hosted by LG | Seoul, South Korea "Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009131aa368f9345229f97b6259cccaffea23e00cd5ead02e3f696c1e714ee3939dad860e38bf95a2974f9eb48e9343f8aac405ea955d05323e117b3b1c94813a3af42fe8082c3d43baf1bd4d8367e93db00ad696e627a1036ae534f011ead5e56f37a6ffe44b6b9e099401192ad560a0346b41a810095f5f2d7fd32d6eeb655ba758c6b526c129386af7197c7a53ae603d622832254961f16d0efa8079a768561888be733492217956bbcafaebb6135c5fbb2484d5b4a5fdf0336ac02e26c1652c1bd8eaf30dae1d6d3eb00f7b4fab8d6478fe8d95eb911df966a0dea4e522db76b8966570ecc5af09516424f0af5f8ee66e386d5650713997169ac37573bf52fd058de95ab2ff68e68111ab23405ea964b2bb88d02c0f1caed71ecdd4e4e408594876fdb8500bc55c7ba02066e05ab98d9f7e0466d9702eb57ee3722f8fcc85a75505ff3262170288b788723adb97e4de5620cc90ead1382fcd7571889fefb11e6771bc3f6f3feb19c7ac542878d03a90270526c3eed2494eff54e153ca9f6890203010001(2:`01d173753810c0aae794ba72d5443c292e9ff962b01046220dd99f5816422696e0569c977e2f169e1e5688afc8f4aa16B -#º¿÷¤ˆB - -‚4줈B +‚4죈B #º¿÷£ˆB -‚4죈J'Hosted by Swirlds | North Carolina, USA +‚4줈B + +#º¿÷¤ˆJ'Hosted by Swirlds | North Carolina, USA Í"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100b2ccac65ad0fc7645a817bfabc487ad7e41311e7a3198b37fb842d84c395b3f67d6bd848f10c6f03c290e8f7daa8d001a8441dc352a19160a3193e68b82edf19ae67693a9a33d4cb87e789a1070715515ea772caa8b86a569b91c5450835d9c354f0dacec97fe77091b45b147698b7f8601422dcd2261e928de4dac9c42dcbafdf96c07233ba3027076f37c969e8ed30b6b5d8f5034be7d92c596f8be861e51fcc3a242bf9d8be9e2a9e8e0f155ebcff23effa7cd57c10542811d80776c9585526fdb0eaa34ee1955d51119390fe873e4c04dedd29165884b98b46308788ae7fc4d4aa4a8fc9bc2674ba321493b624455ad410c1de71bc95d1d91fa0f201418a795e309eaf297b699bf27c9fa2763cd59ceb021e16b8200c1060f2817fd83cfc767183489461e3599291b380d6e939baa4b19232a6a272dde651f8046fdc34db276a777d6fb2bec3255b2cc244b4af566b105f30c6506ddae0eb3deddcf947bcb9c60e000984f3b4a8c6c4ed4bf90bc1932b7f94dc3ae6b360008eb902040f9b0203010001(2:`e55c559975c1c9285c5262d6c94262287e5d501c66a0c770f0c9a88f7234e0435c5643e03664eb9c8ce2d9f94de717ecB -k›@b£ˆB +þ¤ˆB -þ£ˆB +J2u#£ˆB #À£ˆB -oºú¤ˆB - -k›@b¤ˆB - oºú£ˆB J2u#¤ˆB -J2u#£ˆB +k›@b¤ˆB -þ¤ˆB +k›@b£ˆB -#À¤ˆJHosted by FIS | Florida, USA -¸"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a3e37b76c6cd5f6622d6924444d12c677c395f2b5902f3bb98b8a8b5055a707706ca028cd75060a2d8702d2d8b04947bdcfe0a8c141aa2844b1e06e66190012e8b6326ab0fa317973bc7cb4d2949f2108aa04c4b0c91baa5728f5b5622ec75abf578a1f7b41ede2a67ebd69c18e581fdf9c6020ac0de9ca2c31f0c6469003311fbb5ce7db49c787e1a7d27aa425ee7b84da7e66939f9c80d0e82fce55e02dfc8b5c78418a26aa43650698719bafcecf0bd49000addcfa405708bdbefbb19749d22dab007e44d45ea23b106f8834c152e25062d4cf24ff25356c7eb3729105393fb49bab904a02f0f0bb417cd919d352890128e6bbff4fac9f90de118a974f2a6dd01e032a79b178f60fa1fcbbd02b5704fb46295c15190816373edd6635c856978f1b9503f1f73b4b0be8aba2ed1feead59953bf82efde93a3471abd55cda3ba8a673fbb3799749fb006d003f0e63f665c3461d2a7b29dc8b204ba59a65668a46ae2878f00d1f9490df9e280febf4315ea04eaa568a3a9fd48c62c63b6ecda690203010001(2:`b8707dd891621b10fce02bd6ea28773456f008b06b9da985ae2da1ad66be8237cf831fc5b8b4fea54595179e9735d5d2B +#À¤ˆB - 4ló£ˆB +oºú¤ˆB -hÓÍ|¤ˆB +þ£ˆJHosted by FIS | Florida, USA +¸"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a3e37b76c6cd5f6622d6924444d12c677c395f2b5902f3bb98b8a8b5055a707706ca028cd75060a2d8702d2d8b04947bdcfe0a8c141aa2844b1e06e66190012e8b6326ab0fa317973bc7cb4d2949f2108aa04c4b0c91baa5728f5b5622ec75abf578a1f7b41ede2a67ebd69c18e581fdf9c6020ac0de9ca2c31f0c6469003311fbb5ce7db49c787e1a7d27aa425ee7b84da7e66939f9c80d0e82fce55e02dfc8b5c78418a26aa43650698719bafcecf0bd49000addcfa405708bdbefbb19749d22dab007e44d45ea23b106f8834c152e25062d4cf24ff25356c7eb3729105393fb49bab904a02f0f0bb417cd919d352890128e6bbff4fac9f90de118a974f2a6dd01e032a79b178f60fa1fcbbd02b5704fb46295c15190816373edd6635c856978f1b9503f1f73b4b0be8aba2ed1feead59953bf82efde93a3471abd55cda3ba8a673fbb3799749fb006d003f0e63f665c3461d2a7b29dc8b204ba59a65668a46ae2878f00d1f9490df9e280febf4315ea04eaa568a3a9fd48c62c63b6ecda690203010001(2:`b8707dd891621b10fce02bd6ea28773456f008b06b9da985ae2da1ad66be8237cf831fc5b8b4fea54595179e9735d5d2B -#Ç¡l¤ˆB + 4ló¤ˆB + + GZš£ˆB #Ç¡l£ˆB +hÓÍ|¤ˆB +  GZš¤ˆB - 4ló¤ˆB +#Ç¡l¤ˆB -hÓÍ|£ˆB + 4ló£ˆB - GZš£ˆJHosted by Wipro | Mumbai, India -ˆ"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100c4561e3c278cd650e80c413ca44423c1c3c13cf1475f6f6976d597ae432b49ab42086b79b841326054b8b3dcf57d8fcd79bfc058183ca24cd4c1cbc574ed1117e2f5b7b3c63ce7b06d9b4efcf7375637b41fe6f53c811b9de6143f3a52957cdf956775120b33703ff57621407ab9575bc2d35c0d44f0983fc1ef63a4ff5209f070c92af106295601c96bced064ec190197019c6811c4c8dd80cb4f4ac71f9ad76e7ac89456fbf4f011f90abd2d90536e8234651f6bef927e3d5d8b7bf459050983beca3abef2a9d97af345772a7740e9699275b018ea0df286add6ce923ef908fbe762a75f21116862db44d3dca1d44b4d2e8dc1066c5006bb5a7d954ad255d4b603273475e511aeb485d069a067c0ab5c24538c933c06b5a6aefa94005c2915213e4ccdae6c942f6272f9dd5282d6b890f1f20efd2399cd674924fa57046ac6da32e73951a73113e91fc2b7ff29e4851b83ff39f83ba9ec6f08cefdbb6cbbbffabfdfaa91d930f7200da48137c394cbd13e701ecdc2616fd21bad681aa4f0010203010001(2:`b8c3c9a1a6403aa556c4b96c89643925c981d5e83d29cafed79082e310e1eb4f15b569c79fdbc24160b891ec721fca37B +hÓÍ|£ˆJHosted by Wipro | Mumbai, India +"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100c4561e3c278cd650e80c413ca44423c1c3c13cf1475f6f6976d597ae432b49ab42086b79b841326054b8b3dcf57d8fcd79bfc058183ca24cd4c1cbc574ed1117e2f5b7b3c63ce7b06d9b4efcf7375637b41fe6f53c811b9de6143f3a52957cdf956775120b33703ff57621407ab9575bc2d35c0d44f0983fc1ef63a4ff5209f070c92af106295601c96bced064ec190197019c6811c4c8dd80cb4f4ac71f9ad76e7ac89456fbf4f011f90abd2d90536e8234651f6bef927e3d5d8b7bf459050983beca3abef2a9d97af345772a7740e9699275b018ea0df286add6ce923ef908fbe762a75f21116862db44d3dca1d44b4d2e8dc1066c5006bb5a7d954ad255d4b603273475e511aeb485d069a067c0ab5c24538c933c06b5a6aefa94005c2915213e4ccdae6c942f6272f9dd5282d6b890f1f20efd2399cd674924fa57046ac6da32e73951a73113e91fc2b7ff29e4851b83ff39f83ba9ec6f08cefdbb6cbbbffabfdfaa91d930f7200da48137c394cbd13e701ecdc2616fd21bad681aa4f0010203010001(2:`b8c3c9a1a6403aa556c4b96c89643925c981d5e83d29cafed79082e310e1eb4f15b569c79fdbc24160b891ec721fca37B -r6¤ˆB +r6£ˆB #ËRð¤ˆB -r6£ˆB +r6¤ˆB -#ËRð£ˆJHosted by Nomura | Tokyo, Japan +#ËRð£ˆJ&Hosted for Nomura | Vilnius, Lithuania "Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a1c4077154303cc72c4fb7692c3f94251bdec1239a1f7a8972abe91a35323fbeca625a7ffae6406c855dc2af2110900b0df0e6e6db76364dfa1ffe85eda567936e2985b85634a32aa52a6599dd6c30be1f7a6c5b8f5eecaf2621d8a459682fcd2dbaad1561d11f33fccb7f5500ac568d165dbeaace3286d2894f64129d781d6c72fd7d599c9e1d3af4aa433c23b910fae4c4841641f61526ad787ebea539874167e9d3a73cc0fb156429d15ec763a6d0f06115a79b9af783d77b98d83096aa4743f97408d9e14bcf4ddffe4591768847b40cb8da7ca375256d2b935d095fe252fae81ff6e37f84d7a90d7e570a4f8ef3c7d766eeda472f0920199015a8908259a873c5454fcbbdcad2e528de85455b4083c7dc4adc5a988e0cddfdc159d5d712abd544aa73ec029089814c98a44f26fc0644659c183e3184aa272f8d1dc0bfa3e0a560484cb055ba4dbb5cc339ec80bd11d642dc3a702e8c703ab2193084d9bd63f0dfe12a433c2576eaf781cfad867ef70bda61768b2bef14f50c6c3b8b096f0203010001(2:`4a44dbafd50dce9e19ae6595efcf27badfe79db88f0e291c32b03c0ffc96830b391c143114611255f5a76e4a33ba0319B -#·B–¤ˆB - #ìÛ£ˆB -#ìÛ¤ˆB +#·B–¤ˆB + +#·B–£ˆB -#·B–£ˆJ$Hosted by Google | Helsinki, Finland +#ìÛ¤ˆJ$Hosted by Google | Helsinki, Finland “"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810093a215cc4a7a722cae9c13abd636df99cceec6af9db46b69fa516716ef50ce2490a981e09ab019ca2cb46811b5b619d1bd1d5ee6f46a42c777cbdee642a1484ecdf5ddd3729642c38c6d43a8858874475f5824443664c04dfed9b89045fb085e25c3efcb4841733eff7c529c139e69350c2cd79b2c8d19679a712e4e8cafd3267541b832b3e10a01255def69df1e9d3b8d8eaf0311de67d5e12b26dd01dbbd9d3e42d35d9de271302e0f1f69d87cbc7aca9e8867e9d428d3cab0666eb490d5fbab30bff3f785d03f2072a43bb9b5e54656a592cb61eafd5a5ef284c7caec66f7f47325cc0d4c1d27f661d8a748ca5071c06ef134dff96f4086688366d468a24780017e0b56aba7fab43b3b7c0b77906fae5482f32811c292e6b14454e14b894801a86a03cc47794dd0d74527a72e424ed3afa04899ecb9a63f2a9ae72be7fa989adf0d65a32c851d9801fc41048df33564fc7b31707ec8fb80140fe7b7a1fa120ba1cb660324ceffb4bcc2d9bb7de0cf54c819f2dd3bceadec9c25f5e19dc9b10203010001(2 :`9281f9a1f057e9de66fac4432cb13b102d90d5cc5ea787487f71403cb62aa809976f65cc3b5eda38a1c33a719b46b303B #µžú¤ˆB -#µžú£ˆB +#ÅÀᤈB -#ÅÀᣈB +#µžú£ˆB -#ÅÀᤈJ*Hosted by Zain Group | Kuwait City, Kuwait +#ÅÀᣈJ*Hosted by Zain Group | Kuwait City, Kuwait ¦"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100c57edb9ff276e023b28021cb1d87cdf1966b698cf48e4eaaa7c692077ceee8ccb239a4c921597e8e89f7cc05d3f3131578976c4e314405d4a4e03a72410c5c09ca527ad5a85b998637e72a32e1fbc0d5546b2465e9e806c2dd509eb050ab5fb27063fd92815b1dd2689e2111caeb6f549e94a9f00f0821d4ca6c6a6117f5a533c9263bf074a30d5cbef50d1c8c2387bca972ededa0983b5d0a6b57dcb0020006828b40e4076b4870b24bad84056ee52b5f422e8840028c25006382d8e9c661225f4f76ea72e340607e9fc6f3c20433076a1ca8cb15ed03ac8966d0507bcde681e4e0231ee9f87d111e7b48ac8f94d2d842b52df73f573cc5414964797c626968ffae7418f3b6109b5a0f09e3223f4a4d5e3509dd250138f6bc17bf6cece17594430df180a38e90adf2affbfad0c6b8c1b87f178a061dcfbff8b92c9166d874c1ff5af4fbcdbfe8e9d099370ddf60be747633d36ee4eb5cd51f6e3c339e151e41bdb5a5ce2c8c97a0a43b3cd4cc081884c879f9d2f3748428c8573f17c90f3cbd0203010001(2 :`74bccc94033896aa45945458b883b98143f3d261021bde847675c5c7b0d0f6916defdcd88f2079086a21f6d63547091eB -ø0£ˆB +#ò隣ˆB -±š>꤈B +ø0¤ˆB -#ò隣ˆB +±š>꤈B #ò隤ˆB -ø0¤ˆB +±š>꣈B -±š>꣈J%Hosted by Magalu | São Paulo, Brazil +ø0£ˆJ%Hosted by Magalu | São Paulo, Brazil ‹"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009bdd8e84fadaa3532fc4ce01a8a17d4c3b232f50a9790e262684edc4823e815a1bd5b20ecea7bf56e29f6bb7b831fb3bf6efcd1475f0b8ed5ffb0b1385b96d166b629f0396a8fef5f06e4bca25ee4a1340ee263a4d9bb020d8f472306f3d886138de7a019e059bd0afc902ccba1a213ae2daa60c8a013755fe0a48e034f5b4023a2dadeaa88c54868353ac7a7a3df12b2fb6418774e9b14be6eab8cc27b88012ad6162da74e0eeb16135905f437374dab8586d750a26bbd3ac24aed878c4d53e651072c871e94d7acc575c967381734a53feaf4d7ba6bcdd241cc6458c6087d86302aa251c04f6d56b9c32d7d96624750ed055785d0773f43dc099b28c92281148e6c81f297ff9d166e000ac04b3124186775fcef75f5eba0c1032bf130df6cd7a46211d0df3e0584d92ea67349d8490508eb4ef88f54c8c3d486de8719f10fa96feb85cc796076ca781318ee2d9ed903ca1336040c59ad91a4d2f698e9108ae0edb9b1cb95ad33b197ffb18bd1ba8b56cbee2aae9585ece208a1e14b48564630203010001(2 :`7031f1541dbd7b6fe7da70240265820d37f7c529a93348f50d78421b18797e7b15cde7d0e5f057c884b87d093e7d38f5B - 5w¹¤ˆB +#ðv`£ˆB  5w¹£ˆB -#ðv`£ˆB - -#ðv`¤ˆJ"Hosted by Boeing | Toronto, Canada -¡"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810090259f4e3d9f0f394256548e9c7308b10b73403cc9094d97ad151b7706170b9772ceb64d662ecef901a8d7d15d319a59c8b71071accd895b7c93610dc6976f67c4e1729ba8373ab7e52a3f3c8f265491dde69d6e0999470e7445981131bd96c36e6865203fb2ebd5d50eadafb726396dec1d9174898b4e9be04c74d304feadd9cbd3234c3b7f3306c99cb0c339fc25969b41d58a2b7cfc1832e226d81c1963993e2255a087d1698c03d4210bd64580644d095ca76aa1794edd40c1c87b5f82a8e39f603e97116ba04578e7e80346495d785d4ef7cf7714b9eb6f5f9e0b9a94f4b73884619b9274d4a95ef15754a89d97ef5c1a88b6d693e0a80ebd537fc9cf0ca91d1c62d915de7ed818b952e64c200293ee8e284a416a72a3e12fc7d423b158f9b49660cbc2466fbed0fed2e24e102fde942eb4cfd94bec46d3d90fc08c39fecba03e0ca2464ae664b979515ba29e1f702c3fe702be793796d8edb17aa48c09290b024549f0611f5ae23ed7e16442df7d1dad2286c2bb09d5522dd3ed698c2f0203010001( 2 :`200cdbe854f985aa6d6bd159a24a034eabe90d838a8480f8fb0e6e92eb5c57be2ecbe54a32c71ae4f971e3c36f2f70c9B + 5w¹¤ˆB -#ÌV £ˆB +#ðv`¤ˆJ"Hosted by Boeing | Washington, USA +©"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810090259f4e3d9f0f394256548e9c7308b10b73403cc9094d97ad151b7706170b9772ceb64d662ecef901a8d7d15d319a59c8b71071accd895b7c93610dc6976f67c4e1729ba8373ab7e52a3f3c8f265491dde69d6e0999470e7445981131bd96c36e6865203fb2ebd5d50eadafb726396dec1d9174898b4e9be04c74d304feadd9cbd3234c3b7f3306c99cb0c339fc25969b41d58a2b7cfc1832e226d81c1963993e2255a087d1698c03d4210bd64580644d095ca76aa1794edd40c1c87b5f82a8e39f603e97116ba04578e7e80346495d785d4ef7cf7714b9eb6f5f9e0b9a94f4b73884619b9274d4a95ef15754a89d97ef5c1a88b6d693e0a80ebd537fc9cf0ca91d1c62d915de7ed818b952e64c200293ee8e284a416a72a3e12fc7d423b158f9b49660cbc2466fbed0fed2e24e102fde942eb4cfd94bec46d3d90fc08c39fecba03e0ca2464ae664b979515ba29e1f702c3fe702be793796d8edb17aa48c09290b024549f0611f5ae23ed7e16442df7d1dad2286c2bb09d5522dd3ed698c2f0203010001( 2 :`200cdbe854f985aa6d6bd159a24a034eabe90d838a8480f8fb0e6e92eb5c57be2ecbe54a32c71ae4f971e3c36f2f70c9B #±¢´£ˆB #ÌV ¤ˆB -#±¢´¤ˆB +#ÌV £ˆB + +ª»¸î¤ˆB ª»¸î£ˆB -ª»¸î¤ˆJ Hosted by DLA Piper | London, UK +#±¢´¤ˆJ(Hosted for DLA Piper | Helsinki, Finland ˜"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810082de73065f34ffc29340d5949d2220b1e4366ed5cf7c6ebd616cf9416a53ea0017f6bb116bfd3f3defcc15b7a4ddf0e44d02fe695688053e79a770e201bcf7193390039ee8f086d4fa746c7e056918301f9b5e84e39262828085a79b322bca0b5d85fe97221a26bbde258c620f0dcea02ab1edd16cc49a3f2ab9288e3dd1f37dc4b6a6f7133ff92e541c71b70d2a2f66d55725ab18bf86d009ec3d24f5d12e0b5e6802d1151372d4b764ebecb4af82f649485ec57b5a01dc67958f5a03ccaab7cba9354a17372c1316ba47c953aaf94901b3f8c24e6a3afd6758e7f3b143ce2dd3cb071b2a74c921cee949a4b5a6be879f1c790a6b8d63b192d7ee29a9491fdd689a98c0a7c3d60320f1b4ac2d6229dfd94e42f3a6048a76be1eb958c8a1873be8d338aec9fc59ab7f37626789402c1fd595f19087575e0be827fc4c0a4fb3d393ad74a949cc986bfb64cabddae53935f6dc56074db93d77ea3b816bdd6be534497272289859ff34ce51860affb621d10487dc3843f1f86d54034a63e48a1a0d0203010001( 2 :`07b77ce284f7ebb5beb07b105375af55d228a765e1a84587eb1d1f1b0675c38a1d1512370e56f21c8ed5eadefb3779a9B -#ê„k¤ˆB +"×Àh¤ˆB "×Àh£ˆB -"×Àh¤ˆB +#ê„k£ˆB -#ê„k£ˆJ/Hosted by Tata Communications | California, USA +#ê„k¤ˆJ/Hosted by Tata Communications | California, USA ˆ"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810098755a408b5321e263052000d6d7d4a2c3a554d5e1384a9cb5ebf474ae882c63b486bd08d144ddf1a94ce9a7d6251963006afdaac458846f17640195fe2539a656930efa854f2148e68ec1a08c1c49d200c3f3045fe7147f06d534c4bd262100cb1dd39739d760d81a0bd20f83f255d2507d4ccb1106b53618c6a94409c887cae262d4cee9c86232147cec1404e0c57bba7317130ee39643888af3d598edd82b8c61e65ae81a4e1a56bc06d397143a98d41ca87d3ef433ef0aeab6801191b3e38480968f66b6e88662af45a9e212994f68b288eb967beb98478c243e2136c1a1591f061f5bc04b21ff2ba48b29f18431088873bdfe99f8a52e9408971856e804dea602a311786c985652963c3a3770329b409f74fdfc746b22a5f8418912071c4ce846c9b4b320fedf6e9b64e2cbe384f9a82b6aaad4b20907431df1a33f69207a565600be81070d0832900995859a4498d5b59315bcebefee807eb0a3a942f1cdf3367dd4444fdb29886efcdd0be4abe9a188803953875eda33db72989f763b0203010001( 2:`50afa448a3a78b615f49fef577bd7b62b13082eb552cf8895109e0e5438f79ac8aed2f2a48e2f570490746f4c439104bB -#줈B - 4£ˆB -4¤ˆB +#줈B -#죈JHosted by IBM | Washington, USA -•"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a9db7f8baa126898fab789115a3b5d89744f197e28041ae098f3e886c69871721e11bb0ad11f3ce9124aa961d6a0dc845f49765c3fab19958402676f564462bf281dba5588780f03e905798e184269aaa60f7a1472331e2fb1deadd877c84cbcb641ca9e5c8ad6e45bc159cb079fcb0d449cdcd8d9239c1a047e7b448da0cdca26610a25f296d96e7469b676d4a444516e7a59e85293a8086f840c052854e02a8cb2002dad35825be4d83b52fa91e8c73ff049746148862787c1118f924d31cbac1b44feff22d436b3979eadf9b43a4bfa72e15b4755fcab260e06a279c3bb73bc7f16a060d4d522fd490580388aa595d8044736e522f6424915f7803b7583e095cdf78c32519697de81b89fb50054753b1a17f9aafb064d84c992f9ab11ccbc8cb10814dcaf5264aa45f21bdefac82ccacaaf358e31373ee1ba4e7402fd8a70ea0c28ca5cc74dc42510c969cd2c459b1ec3688a01ea39a992710cd2297c98a84b6348a577804fdc234d3fe1903e2c21e172da28b59ae6e4c7e8edd8b71c49d70203010001( 2:`c6713d87e3c1f6859a3a3663ebb1b7e1bd1da14fcf076ce51d36464b5682a5df7cfadd440197564f498842313091c2bdB +#죈B -yB +4¤ˆJHosted by IBM | Washington, USA +•"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a9db7f8baa126898fab789115a3b5d89744f197e28041ae098f3e886c69871721e11bb0ad11f3ce9124aa961d6a0dc845f49765c3fab19958402676f564462bf281dba5588780f03e905798e184269aaa60f7a1472331e2fb1deadd877c84cbcb641ca9e5c8ad6e45bc159cb079fcb0d449cdcd8d9239c1a047e7b448da0cdca26610a25f296d96e7469b676d4a444516e7a59e85293a8086f840c052854e02a8cb2002dad35825be4d83b52fa91e8c73ff049746148862787c1118f924d31cbac1b44feff22d436b3979eadf9b43a4bfa72e15b4755fcab260e06a279c3bb73bc7f16a060d4d522fd490580388aa595d8044736e522f6424915f7803b7583e095cdf78c32519697de81b89fb50054753b1a17f9aafb064d84c992f9ab11ccbc8cb10814dcaf5264aa45f21bdefac82ccacaaf358e31373ee1ba4e7402fd8a70ea0c28ca5cc74dc42510c969cd2c459b1ec3688a01ea39a992710cd2297c98a84b6348a577804fdc234d3fe1903e2c21e172da28b59ae6e4c7e8edd8b71c49d70203010001( 2:`c6713d87e3c1f6859a3a3663ebb1b7e1bd1da14fcf076ce51d36464b5682a5df7cfadd440197564f498842313091c2bdB -#ä 5¤ˆB +yB #ä 5£ˆB -yJ,Hosted by Deutsche Telekom | Berlin, Germany +yB + +#ä 5¤ˆJ,Hosted by Deutsche Telekom | Berlin, Germany ƒ"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a8ceac367eb1f1de5f0d9ef3eaf0df9b98448fe20808476562a060c51c289770b4cacfe92cb65569823e962c2a2c9fed53bd36ca3a122de1c525a582f25a4d7d628c1a3d5bdb8936aece7510e7554ee7033025c092c828eeb5738be02ed963da81a59205634ce9454577ab82f40f13f1ee55e0ae727e23c30284b1f44b99ace4ddc5f9ac7ad88d9fa2255935b24dcba8400642e16cf2532c0b0d6892904608715c4076f46d84a0e0fed36e76ccdc96355e7a26160945c2b54ae26cc00fd082326346eeeea7dd75f91911e99dbcb99ea4ac6ba056c33228d881d85831d9cc879593da1746dd0ee95dc2b96fe93bafcff2cd7d92958d78df33f205d7115ed9fac4db6f4cc60e56a5441da5b5b55fa5999902e958a6b6c44d810ddc56181241b87f22f059a6880e8021736d01897db65449ce817a2375d03551cb0de507c609a0c8030ecf4bfdeb213c03daa764a1821b724334f71f768d7aecb277052a7033765f07218056c78f2a87af18386d8f61a5cfcb3f2ba4dd59915f13d38634d16957570203010001( 2:`a53c8eb70bdd89edb6be5fec50cfabc081002a477af478eefa355ea6ee572e4ae50e84988f8ea2c068afa78967b2caf0B -"[µ·¤ˆB +ß棈B ß椈B "[µ·£ˆB -ß棈JHosted by UCL | London, UK +"[µ·¤ˆJHosted by UCL | London, UK •"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100af0b914257bf7a4655c4a50d0cad5e0a1e4581ed6623f0e8730f796b8f29c58178bccc6932c1fc31f39ef44b82d3c43b398737373fecb1295228a04fd50a14f3646d84fe1f467caeb98d463e2975e995b8d2e1e39f3bf6addc25ae35d65d02608e0345537966e2abce49b814bead3c1b757174ae30c00b0c43e99b80496b72d3c131f1c6e4fcda05f28117ef9e28c4303be4d8c7e042d58b83cc121945a2c65e7962caa9185938f3757df7cca95cf02b5e31944a3a619a0ac3f1e34b9b013d4c224c4f1e70fd9fd36983ef86ade518362cc8322c0f7b61a9ac75fb82e7b86d68bc0f099a09a14cac5a1d8d38f9a8a70cc37ff5cc3bbd2742ffd146255c171e6a178083271dce0fde681ed492cb59b0796d270175838dc5908107e3a6ea3f9a406b3d1130ccec3b4791e49bbc231603b46ab2d0f93d43be75ab9a4d710ea940e285a7b153b0ca7cddee6d9dce0ad8350c41d90c215b9588515afa0ac3365ae07e81f3bbb36bdbeac4b31bcb1aa4e82565b977f9dad85d626eef9aaa9ef8d7e3fb0203010001(2:`b5b28e6f57240730cda802c56e53b8837a7d63dab9b3b3ab156a04d9e2e6e24b6790c38a5fd335be67a951b77beec748B èû¤ˆB @@ -176,13 +176,13 @@ èû£ˆB "VÔ÷¤ˆJ,Hosted by Avery Dennison | Pennsylvania, USA -»"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181008c07be305ad60b90ba2dab39b0ee7760e1a22f857522540d70b03b3f9e4875a3a29ab08088f144f57eb252e46ba59385d0e6d4270117da0abc1b3b80694c9a5058b86d61dfa06e716709c88e8feac7c3a0e1d25fc0aebf6a8f76fcb99f845fe181461cab6858b97c3a4027fb3712b14e6c0789de17d41764577e511417eb162692eb07ae1e7355235e9bb439047b6c01613782e7dd6f604daa4674661d53961f46c3faa6b7e76762d373b5b542b79ea963efbf33ac68198bb2b661cff676916ef372ad4c26c216c4bc4787c84ec32d184d77c75186c09cf3d9f91433ca9853119bab31fa6ad26f453e596d9bdeca68a5769bc8fee7a535d80c8c6f3efb1dfb288ab6a979854b7ce83124ec0d102aff94c3b74f9c378958c25eb933dd53c1e805a18654d6d9186990f6570429f960f34e8b4f7fd9972dcbfe9240e074da2d355a5f7ef9c1af62ef5982a8174578b9c15c49ec566bdacb30ccfcef09cdfe708ad487424e9c1be653f9ee7660e7d942c1efa5da286e1addab06a9a33f9de946795b0203010001(2:`eb976995e5d2a9da69c44b06df3c29ecca5eba5008f054077c0ee87b08813314c4fd91ec834d3b868fb7ee7794f4cbebB +Î"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181008c07be305ad60b90ba2dab39b0ee7760e1a22f857522540d70b03b3f9e4875a3a29ab08088f144f57eb252e46ba59385d0e6d4270117da0abc1b3b80694c9a5058b86d61dfa06e716709c88e8feac7c3a0e1d25fc0aebf6a8f76fcb99f845fe181461cab6858b97c3a4027fb3712b14e6c0789de17d41764577e511417eb162692eb07ae1e7355235e9bb439047b6c01613782e7dd6f604daa4674661d53961f46c3faa6b7e76762d373b5b542b79ea963efbf33ac68198bb2b661cff676916ef372ad4c26c216c4bc4787c84ec32d184d77c75186c09cf3d9f91433ca9853119bab31fa6ad26f453e596d9bdeca68a5769bc8fee7a535d80c8c6f3efb1dfb288ab6a979854b7ce83124ec0d102aff94c3b74f9c378958c25eb933dd53c1e805a18654d6d9186990f6570429f960f34e8b4f7fd9972dcbfe9240e074da2d355a5f7ef9c1af62ef5982a8174578b9c15c49ec566bdacb30ccfcef09cdfe708ad487424e9c1be653f9ee7660e7d942c1efa5da286e1addab06a9a33f9de946795b0203010001(2:`eb976995e5d2a9da69c44b06df3c29ecca5eba5008f054077c0ee87b08813314c4fd91ec834d3b868fb7ee7794f4cbebB -‹¢œÞ£ˆB +‹¢œÞ¤ˆB -^¯»¤ˆB +¬h–„£ˆB -‹¢œÞ¤ˆB +‹¢œÞ£ˆB ^¯»£ˆB @@ -190,94 +190,94 @@ ¬i÷C¤ˆB -¬h–„£ˆB +^¯»¤ˆB -¬i÷C£ˆJ"Hosted for Dentons | Frankfurt, DE -Â"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100be17c99647cec65a44407b535856b3c3baef5b54f565af58b8456ba8c7ce535d5ac72c61c44c76b3c57c8e864841637be10a83cfe39c092476d0dbe4d6cdcdcd720a30b5bfeb51a01a18f582c45f6c86993fcf7df182935de1d86906044dcf35186935d9bd7eea7952352bebb4ef9ae0f7661e70a4237afa98996687ca48fcfc5b00d3807f054be0fa8c3bfa425038be6ef295164f22f73b7e88c94ea9be8aa4f3a245c89b9d1fd5192f7a50b958b2ef8104b36f1bf8fd2cfb28c1421800c1c47e4ef98af150070cc6d69d17e8eb92f18a6aa1a65266a495238d103f8f695b57ecf373650a052008745721bea815627967c8076365df8c4c7a7d4dd8f2c3850c18fba71eb60e6e8dfbd196e0537fd70b344ecbcc530dfc83da6fedf49d51a90419502ba9d70cd35f1cf3c0694e2354f9064fdbf535eb23c27c0a43d0b78c1f867c61d98695d8def7bc2a10bb6674c22f66aab0a91813ddf27cdb852c59ef79e1b9e1a075fa6ee27a7e3774dbf4b26465427e6d5ab91fe7f0f3a71784eca182b50203010001(2:`d5ce6f4378d6d547239486efd6a702a74fca9e965723f0ea43eefa32be98179508c42185fa23750d20e8c0f1ca1d563aB +¬i÷C£ˆJ5Hosted for Dentons | Singapore, Republic of Singapore +Î"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100be17c99647cec65a44407b535856b3c3baef5b54f565af58b8456ba8c7ce535d5ac72c61c44c76b3c57c8e864841637be10a83cfe39c092476d0dbe4d6cdcdcd720a30b5bfeb51a01a18f582c45f6c86993fcf7df182935de1d86906044dcf35186935d9bd7eea7952352bebb4ef9ae0f7661e70a4237afa98996687ca48fcfc5b00d3807f054be0fa8c3bfa425038be6ef295164f22f73b7e88c94ea9be8aa4f3a245c89b9d1fd5192f7a50b958b2ef8104b36f1bf8fd2cfb28c1421800c1c47e4ef98af150070cc6d69d17e8eb92f18a6aa1a65266a495238d103f8f695b57ecf373650a052008745721bea815627967c8076365df8c4c7a7d4dd8f2c3850c18fba71eb60e6e8dfbd196e0537fd70b344ecbcc530dfc83da6fedf49d51a90419502ba9d70cd35f1cf3c0694e2354f9064fdbf535eb23c27c0a43d0b78c1f867c61d98695d8def7bc2a10bb6674c22f66aab0a91813ddf27cdb852c59ef79e1b9e1a075fa6ee27a7e3774dbf4b26465427e6d5ab91fe7f0f3a71784eca182b50203010001(2:`d5ce6f4378d6d547239486efd6a702a74fca9e965723f0ea43eefa32be98179508c42185fa23750d20e8c0f1ca1d563aB - ö3*¤ˆB +¨;¤ˆB -¨;£ˆB + ö3*¤ˆB "YWŠ¤ˆB  ô¦Ò£ˆB -¨;¤ˆB - "YWŠ£ˆB  ô¦Ò¤ˆB - ö3*£ˆJ)Hosted for Standard Bank | Warsaw, Poland + ö3*£ˆB + +¨;£ˆJ5Hosted for Standard Bank | Johannesburg, South Africa "Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a5ad2b7643a04c055d2f8cd2511b15139fc45575621388e49c119b2f398aca110f61396b0c866de5063522bb8540273e13f6d94ce1e60438f6afb00aaa64612f7145e9bce8bc1a53b941913aa76c9f3a2833fad7cf285c7ac2d37f99f3c2cdb49de4d151e61678564f281f541424b41fa7c51b2a9602283c7d32ee00eb838da15c38afc96e061d97cede22165ff1aa959f1c4275b2d098c40586a5579fbb3cb90072704120a8a66a5270f4fcfd1086c923690a35e7fd445e33ac03f139c6868556570cdc4aaf22107a6c1a442456a7c6c79ee04090e7e5d4f66bca60ca1f47b6dfb543dac3cbf19a7719a8f55b6f83b4a3b8a66d60256d0a46551fa7024bd05631b8a5580877254c2f2f268cdc33d2dbbcfb733e9fbe233bb9cb59ab31a0148b23e8c42680ff10af4c79a4d08346fb79a93d9629548eaf1bb124698faefa4cdd72442c03a04b733432f748903a325c283d456ab9ae921ae7ed3391e5d1787efdc23540a7b85c691ae870a07f90b11c13b32ce43eaed15b369685ce49177cc9850203010001(2:`b0d760b75396bd80292cf751dc43832a01426fc79e2940aa9d2839525ffda1db04bd47d4e2ed3b46088373800504ce13B "RNÿ£ˆB -"RNÿ¤ˆB +4'¢Ø£ˆB -4'¢Ø¤ˆB +"RNÿ¤ˆB -4'¢Ø£ˆJ$Hosted by eftpos | Sydney, Australia +4'¢Ø¤ˆJ$Hosted by eftpos | Sydney, Australia †"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181008d45c21c0c95ef65a029d52c957fd0f85f20123da034e61671ddee5475f07382a66c66cb4dc50504ddfd37581083df8d1757730ed8d6f364df4c36a2651591955da201a2407fa8ab9b2313811225a0da230fbe380e090aa56efa4f202ec9b4823f6501d96ac698ebf26aacf3ee2d1f32a721c947e1076cf35b373da1d87a36a152e00e71011792282e825ff171c5833b88570bfc6da8449e6f95f8b1265ab555194031553d1d576f93c42c0ca60aabac4c8dd162d8114f2b21511583c72539fe56c499a929de3a40a0d45c17c589c2d7988ce26eafc92a3d37b7ea0042d43e03afa6271b26255a6cccfae5371821d81e0b05c250b59f0a90741a0e0e88a09ed56c5b9780d095f0906f0b81d51263982aae01136c072d844a11d6da4b2a61c644e1ab17f16ff48ee23fede8452f1e42e2d30a0790c25d42060e1d44a671a2eb23d114f68c71e33f176db58a68b430054bc1d2983a23a32ea6ff95fa7c4d8e380eb296e98b7968ecf8454d817c737eea5dd921eb86c16c7b29304a4a7ecbe5a3a10203010001(2:`c32b80403febe31c4ba1eb46cfa93cbc9169f28597a30ca01365cb3e179672a755a38450ce6aaabf40ad9e36048fd8d4B +"LŒm£ˆB +  ${Ñ£ˆB "LŒm¤ˆB -"LŒm£ˆB -  ${ѤˆJHosted by EDF | Paris, France -•"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100b05abe2ab00fdd06c955e86710b0e06f1a92624a48ad1cbc8dfc6f2212962b0c30fdbd284a37c5a37658b63c36ea8162561a8e4f946cbe5722c028801f0f281c70f8d88c7c00a2f2e29f597b799869ed8356df57c47be9944a2aaff650f9b4bba0dbc53dc880fdbb69ea451905d2802202f8e29c04a76d27af2eb7c548485bf3f4694c90c41810888843792848835f7816707d3e8d76f4e67f5780bcf08813c55ec639a9bd624178f5eb147d500af351e9ef1b1e342484ca260db7ccbae486f13cf265b5b1ab688066008053b20c3dedce771c9a08a0320aa9ce451eb9d983a7b49caa1096f8adc098318dc38e0e7cef0d8e5d557a0675685a1c9e256a2bc9dba322b3bb3172cf714077bc380f8a0a433a8bfa7fbfc59f6b093ec8bf6e9397c09b18e18040c1b566864737c8fa7e29795f3a4588dda7c2bab495665cc4a9b836e2eb90c62a3fcaf591fb5f81804c76180e626fa2644a7de34511d6c4667d98937e27733f4d1e913883354e54fd7351721e76f7b56c3483388f4a6b87b28aebeb0203010001(2:`73d89b53f7cc1ec674af28ad521faf08d7a018166469efc845154ac41108a9d8129a8830031a19a5751a2d79cbc47520B - -4NÊ"¤ˆB +"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100b05abe2ab00fdd06c955e86710b0e06f1a92624a48ad1cbc8dfc6f2212962b0c30fdbd284a37c5a37658b63c36ea8162561a8e4f946cbe5722c028801f0f281c70f8d88c7c00a2f2e29f597b799869ed8356df57c47be9944a2aaff650f9b4bba0dbc53dc880fdbb69ea451905d2802202f8e29c04a76d27af2eb7c548485bf3f4694c90c41810888843792848835f7816707d3e8d76f4e67f5780bcf08813c55ec639a9bd624178f5eb147d500af351e9ef1b1e342484ca260db7ccbae486f13cf265b5b1ab688066008053b20c3dedce771c9a08a0320aa9ce451eb9d983a7b49caa1096f8adc098318dc38e0e7cef0d8e5d557a0675685a1c9e256a2bc9dba322b3bb3172cf714077bc380f8a0a433a8bfa7fbfc59f6b093ec8bf6e9397c09b18e18040c1b566864737c8fa7e29795f3a4588dda7c2bab495665cc4a9b836e2eb90c62a3fcaf591fb5f81804c76180e626fa2644a7de34511d6c4667d98937e27733f4d1e913883354e54fd7351721e76f7b56c3483388f4a6b87b28aebeb0203010001(2:`73d89b53f7cc1ec674af28ad521faf08d7a018166469efc845154ac41108a9d8129a8830031a19a5751a2d79cbc47520B "@¦£ˆB +4NÊ"¤ˆB + "@¦¤ˆB -4NÊ"£ˆJ,Hosted for Shinhan Bank | Seoul, South Korea +4NÊ"£ˆJ$Hosted for Shinhan Bank | London, UK ª"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810098ed6b2213a3da894b8e83c4532589097d1f9456c70b9fe2d8c308def36daa87706d430f23ca53b27d034deff5c2e0ac351a0729b4760a19b1525b9d20a1961b962255c4bb2a5cc05a05d7b476f6e5b0547b4a883b50f7d1c93745ba40366608106dbf05b755ebc51d1b8291d107f5c0d9a2483ebce3d07c8b7b5857d62b4be56375cf2314f7e009e4f19e8c8089ec69f96d0266199cf7ea3363b157ae952b2283a8d9f7ceb45738b152486f54d40f6200b7ea755d336e1c33ad58ffe03a8c5650ab62b93b2b6645769fe01f4d21cfaa4ce99510f771de22ba9ad1e8c5ecd3404cc3183174c7c84fbdf108b49733868e7c9fecb90b3bb85b0c3c1378032f3b798e6fb9f7fd35fd25f3c21e7cfae81a01bba50bc4fdf82222a1686e9200a1b323b618e448990e2aefb30619048be3599ffc8880ede3b67ecc8bbd4df6432f521bfb337bf2b0958e29e66223ae35dc09406be0212132be29581694a7402604f1ce689c4b57a5bafbc1d46b342b51c31ff2b5675c6c1df60d128d4a64c66fb4f1830203010001(2:`903388fe34e8bd8cae28eec4c6e8fdd2035b1dcb5c9f45b32b4b17d658c688b81d2330689564c371d477f68b4d2b3959B [°£ˆB #èô‘£ˆB -[°¤ˆB - #èô‘¤ˆB -E§©Ð£ˆB - -E§©Ð¤ˆJ)Hosted for Chainlink Labs | Michigan, USA -‡"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009dcd8c0a53e90c3559574f66204117d3b503e50a36d3097fac8429e6cecd37bb54071808f2ee982035f851a0c9be2176383a22e38c1aba168f32f90570cb3233cfe625987666af67b514caef21fb8df6d0fcd33cf2606b92ddea5536b6068d86782e39bd5c38445991d419b7d1ec08599412c0949d1c240b35c14dc55274dba71ffae936125a5f819f54132e2439d4ac5597996ece85e13dff3361f9131f56ceac5b9f552b49cf6f9a9ac6e5dce2db369462f93af80e5b56b6e8befa162a061b4a76892bdc84647306c600858fdd2703276c2c70440198efd7fe3545cf2ab580c74cfd6445aaf7bd7f745cc252eabd265eabee862417104e6948a55756fdc222df0a101524de1c3c08ccf043011ec7fe964edd8451a130147c07363a35f11fdeef8f2a2b761757b4358ff89b75a48d67bdc6090693e0bb8679ecbb93ffdb3f3ed96bec93ef4656e3716ab87ce46ca8e1259c8fedde8f2f1ea0f3eb2c48e96551de12330345725f45ed69c8575b51683afa472621826db22bb2d1c4f1e36464a90203010001(2:`416f95bfee63fdd45bfc1007cbec3d544fac6b3039fe1d00317aff4c9c9e67918b28c48bddb23c4ca11131cd8260b3edB +E§©Ð¤ˆB -‡Ó¤ˆB +[°¤ˆB -"Yg&£ˆB +E§©Ð£ˆJ)Hosted for Chainlink Labs | Michigan, USA +ƒ"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009dcd8c0a53e90c3559574f66204117d3b503e50a36d3097fac8429e6cecd37bb54071808f2ee982035f851a0c9be2176383a22e38c1aba168f32f90570cb3233cfe625987666af67b514caef21fb8df6d0fcd33cf2606b92ddea5536b6068d86782e39bd5c38445991d419b7d1ec08599412c0949d1c240b35c14dc55274dba71ffae936125a5f819f54132e2439d4ac5597996ece85e13dff3361f9131f56ceac5b9f552b49cf6f9a9ac6e5dce2db369462f93af80e5b56b6e8befa162a061b4a76892bdc84647306c600858fdd2703276c2c70440198efd7fe3545cf2ab580c74cfd6445aaf7bd7f745cc252eabd265eabee862417104e6948a55756fdc222df0a101524de1c3c08ccf043011ec7fe964edd8451a130147c07363a35f11fdeef8f2a2b761757b4358ff89b75a48d67bdc6090693e0bb8679ecbb93ffdb3f3ed96bec93ef4656e3716ab87ce46ca8e1259c8fedde8f2f1ea0f3eb2c48e96551de12330345725f45ed69c8575b51683afa472621826db22bb2d1c4f1e36464a90203010001(2:`416f95bfee63fdd45bfc1007cbec3d544fac6b3039fe1d00317aff4c9c9e67918b28c48bddb23c4ca11131cd8260b3edB ‡Ó£ˆB -"Yg&¤ˆJHosted for LSE | Virginia, USA -"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100ae7af9c608c1bdb289fb817ffc6c9577ed6d4f6d57f274b215f1390c7e79e490f9dcb74cffe0e8757d67f90f4b20dd4451b7ff6631a6b45c9e403be5a66224955583d1aa4238ba6f946b71cca8c16cc7888b2f0d333c635b8e5478fac3ba3f81457a1a16b04e2b2252651b6c4688c5510d2edc21b03e0a9b283041beef6783c0089845ecc96e6d235c56685d248f8391fe0afcf8ee03f3b498696c6d9decf2fc990c219ef6d2cbba2a69a26528e6009632d82ead3a583ef0c37c2b79068118e0320b9fcb318f5ae48c0877955d0831bc9521aaa88b93419fed9f462f900fc42601056e24ce449edbdc849bb782c09a1a36ad5e4d4b5d7466b7763913f794b2771b07afb617444fb6b4b7484d64e191b513fc8e2501043f725421cd57b073bed21b00314185d6887fbc2b548d90bb2a3c9184ae944c326db8f37a7356aa882bad4c7947a80e16d0f02e382d5771f1987c1b76e88cde1cdf2d1a92215ec68d9b204e80b5dc4675ff3aabf223f7787eb2415df5e389cff60fc40ca252000b4768410203010001(2:`8852cb8dcddab369e5719cdbac5e5f50098f882176412ad711e2b03ac6e9fe7035826fd47c12a12742d2c00d5075753fB +"Yg&¤ˆB -"]p¤ˆB +‡Ó¤ˆB + +"Yg&£ˆJHosted by LSE | London, UK +"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100ae7af9c608c1bdb289fb817ffc6c9577ed6d4f6d57f274b215f1390c7e79e490f9dcb74cffe0e8757d67f90f4b20dd4451b7ff6631a6b45c9e403be5a66224955583d1aa4238ba6f946b71cca8c16cc7888b2f0d333c635b8e5478fac3ba3f81457a1a16b04e2b2252651b6c4688c5510d2edc21b03e0a9b283041beef6783c0089845ecc96e6d235c56685d248f8391fe0afcf8ee03f3b498696c6d9decf2fc990c219ef6d2cbba2a69a26528e6009632d82ead3a583ef0c37c2b79068118e0320b9fcb318f5ae48c0877955d0831bc9521aaa88b93419fed9f462f900fc42601056e24ce449edbdc849bb782c09a1a36ad5e4d4b5d7466b7763913f794b2771b07afb617444fb6b4b7484d64e191b513fc8e2501043f725421cd57b073bed21b00314185d6887fbc2b548d90bb2a3c9184ae944c326db8f37a7356aa882bad4c7947a80e16d0f02e382d5771f1987c1b76e88cde1cdf2d1a92215ec68d9b204e80b5dc4675ff3aabf223f7787eb2415df5e389cff60fc40ca252000b4768410203010001(2:`8852cb8dcddab369e5719cdbac5e5f50098f882176412ad711e2b03ac6e9fe7035826fd47c12a12742d2c00d5075753fB  èðÏ£ˆB -"]p£ˆB +"]p¤ˆB - èðϤˆJ$Hosted for IIT Madras | Georgia, USA -š"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100b72801058ccefb52139ba9c6868a9495e37ba6571c5bc0fb7f2b0d079005dd5ce12af705dfc5ace7fe4b011e6497e1b065e5ef3d937553b1c7c10545ac5c91354ecfad6a6476468883cc66a4a5eb0e1c1d1bbf1030d9650f67b075909e53696ea31acad5240111f75537b14e6eef6451d7b334d1804a2a5789b5e4ac6bfa27955e5517851601b67cfd0bd2869c7ed1f4ce098e367f133b1958743c13c6f69011a8c475b2126d3bc352387989c866fe219a16291e44a92d5471f6fc16862ec7bfe0cad5a4eea1c60829876fb5a012e1dbc51c0c082d890b9635267dd99b4c81115826e816e22e336834c9303c533e202cfa6a191392601ceedba3f9ca4de6117775e0fc6104341e73521139d76c3364de28af58f1473a08472c60916a641ae97ddb9bb072832dfe5b92271fd47ef89c9828a0c7175418d1c9ea3202e2ba588130bbf2e384eb847c9ac2d6807a92e4ba133d5715f36266617f8da56c9c8b394bc002575ca2020cda9f9297a7d045d251025817559e2ea52f54428328ec3db312710203010001(2:`43e94ba24bfb7fea94918f3881be62529905b81561a7dbc7cd4dcc0aeb02bea20b896980344c3e7e35a328eb1c526440B + èðϤˆB -"W–®¤ˆB +"]p£ˆJ'Hosted for IIT Madras | New Jersey, USA +†"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100b72801058ccefb52139ba9c6868a9495e37ba6571c5bc0fb7f2b0d079005dd5ce12af705dfc5ace7fe4b011e6497e1b065e5ef3d937553b1c7c10545ac5c91354ecfad6a6476468883cc66a4a5eb0e1c1d1bbf1030d9650f67b075909e53696ea31acad5240111f75537b14e6eef6451d7b334d1804a2a5789b5e4ac6bfa27955e5517851601b67cfd0bd2869c7ed1f4ce098e367f133b1958743c13c6f69011a8c475b2126d3bc352387989c866fe219a16291e44a92d5471f6fc16862ec7bfe0cad5a4eea1c60829876fb5a012e1dbc51c0c082d890b9635267dd99b4c81115826e816e22e336834c9303c533e202cfa6a191392601ceedba3f9ca4de6117775e0fc6104341e73521139d76c3364de28af58f1473a08472c60916a641ae97ddb9bb072832dfe5b92271fd47ef89c9828a0c7175418d1c9ea3202e2ba588130bbf2e384eb847c9ac2d6807a92e4ba133d5715f36266617f8da56c9c8b394bc002575ca2020cda9f9297a7d045d251025817559e2ea52f54428328ec3db312710203010001(2:`43e94ba24bfb7fea94918f3881be62529905b81561a7dbc7cd4dcc0aeb02bea20b896980344c3e7e35a328eb1c526440B  äg£ˆB +"W–®¤ˆB +  äg¤ˆB -"W–®£ˆJ1Hosted for DBS | Singapore, Republic of Singapore -‹"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100ca795b166d8343bed7ee146c955dd21b828e83078b2a6d314b677610ffd73eba291183a69b558e93c4e0e6c68a2535b13aaf61f9a56e2901f7e1bb999fe178f4c9354f456fcd5cc8c98d259028afdd2fb1df66622d343a0d51317677fee1eb7491693334a0f66b89665be40a4aeb376acc0ac0283c5f5d304b1030696bfd6c073063f21fdfe7b9a2c839abf637828303bf2dea28da015920458f9fd94eac62fd174e37ee08a43b7930b22214a5664deca8d348295e0c399aa8b8460821fb644d77024267ec942edf2dd0c5dab272640431333885f442e73cc194148f728c5a7c9b5a2966d3e3b25f983600fda0ea3a4be97cf7e8f3b0fb648f0b35fa13d272ae7d4342a929b597b40d1c544439cadc26db99b545caee607418883135e9bf160f9779f58d08d502f5eb951bf1e10917c8039abdf09ac3614ede498839f3da2760016840541fefc84ac93c7efd91852a44016bfdc68e38e50c3ae3cc545c37d83a06742aa8ae531d5b16be32c6bdf06dcc2373013892f92e3ae53641d76cd2a8dd0203010001(2:`9e51d01fd202f55080e5ddc4c5a9822747c66a857b0d4070fc20b3f508c5a20239877a219b761825349af5f30010a83dB +"W–®£ˆJHosted for DBS | Georgia, USA +"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100ca795b166d8343bed7ee146c955dd21b828e83078b2a6d314b677610ffd73eba291183a69b558e93c4e0e6c68a2535b13aaf61f9a56e2901f7e1bb999fe178f4c9354f456fcd5cc8c98d259028afdd2fb1df66622d343a0d51317677fee1eb7491693334a0f66b89665be40a4aeb376acc0ac0283c5f5d304b1030696bfd6c073063f21fdfe7b9a2c839abf637828303bf2dea28da015920458f9fd94eac62fd174e37ee08a43b7930b22214a5664deca8d348295e0c399aa8b8460821fb644d77024267ec942edf2dd0c5dab272640431333885f442e73cc194148f728c5a7c9b5a2966d3e3b25f983600fda0ea3a4be97cf7e8f3b0fb648f0b35fa13d272ae7d4342a929b597b40d1c544439cadc26db99b545caee607418883135e9bf160f9779f58d08d502f5eb951bf1e10917c8039abdf09ac3614ede498839f3da2760016840541fefc84ac93c7efd91852a44016bfdc68e38e50c3ae3cc545c37d83a06742aa8ae531d5b16be32c6bdf06dcc2373013892f92e3ae53641d76cd2a8dd0203010001(2:`9e51d01fd202f55080e5ddc4c5a9822747c66a857b0d4070fc20b3f508c5a20239877a219b761825349af5f30010a83dB "}È`¤ˆB @@ -285,29 +285,29 @@  8`£ˆB -"}È`£ˆJ"Hosted by ServiceNow | Ogden, Utah +"}È`£ˆJ'Hosted for ServiceNow | Washington, USA ž"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009f661e1b6526bd231239280555db14a909404cdcc9188642b6d47cb2f3e9c916632e26a4504cff08ba70d146db317a08cc08200419b1b96945984c19cf38d61cb4ae6f11a6aa507eabc12a7291731363790816df3a65fb9f55b20218429c6d24cd19302b12bdb659ad6bb8171ed6f68d9e96dde1aa0af45c69c3bec061c5615d81600bd2bd710d8135a500e37eb748fd296f7c568c26c0dcbe6afe8a2fc2bc3a7e530524c835128d76aa54b413efa035269fd6881497d5ab300ab4efda455f42a80ef39c6bc41931f46b891299040b6d0f3de893f68254be0841aae4f5112097e09db8ffc80c8523c79ea81c6c1adecd04115af9dbbcbc35a02dbe89db88eff6fff8cd6b1f335ef4fa720008fa0b2a5b14022193eb9e2cb7f0372fa9b7e881438ef7460fe1780ec653f2a3ce789c0f5cb6f7b2716148a2e1cb3edc1c6daa1e10a4c0b86741b1bfc8c4d2f35cbb0b0bc14cffbd677512fc15b0df93f76b22c32437c2751c8329cddd8a56eca7520072ef3d01acefc17bb38aa4d442bb56d3b06d0203010001(2:`b02c9e85f49da18147fd1353773baf0e71d72e22a007f1df9051aa8a4761ae87ad4f90ea4c3409811a1c4777cc2fc61fB ‹/¤ˆB #ÆÜK¤ˆB -#ÆÜK£ˆB +‹/£ˆB -‹/£ˆJ5Hosted for Ubisoft | Singapore, Republic of Singapore +#ÆÜK£ˆJ5Hosted for Ubisoft | Singapore, Republic of Singapore "Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009b18967c838877f85a6471ce9f164cef939b01830b9eb22c02cc6b72a907020b3e4c014dc711ea8e095b88d0b4858ec86b05a8c3a59ac12d2b9fabcac282ceb618db00eb59716611d6706c81aa32d9dddc6a6c7b396ba202fedeb33f289a887284ebfc07d166d02c2c6ed32c7324c3ec8ae22112854e18ab5ea07a615c5ef8004ec68ac70dc03003a47f7efe103edce257d28e7961f428f1cfa2e6cf71bf45c564b82ccbda14a183f30c2c3d5a7afba7a004079e87702c249e96a7b2fdd562fc16759efe75abe6a23d0d2f906a2df1d4b64cb2117a7304449c75319a7620c219a4ffc982e822b6e1a07be1cf98be9265d086dc271aa406310f8a846fd331239fe303bd5616c89080fb88639b7c0ceb14009381823e0433db6f9156e2bda1873d4aa9a3a639604bfbd11a6dd6ce03b4b0ceef95601c7d88a840397cdbca3ff214fbf58c9d9dbd79d39ea767e9ae5f6eab9fca05fc4800f557657c90c12c60e02164825d4c33af4737374ea235b50313ed0b75bf89a6b79001fba74cc1319e55150203010001(2:`fff800ea4280d62c9c1ff333cf430194e0f8af282b813b45211328533cf72f9f14644c0604aacf12b165b5a6b059acc3B -6J txResp; - com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute(client); + com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute( + client); assertThat(resp.nodeId).isEqualTo(new AccountId(3)); assertThat(resp.getValidateStatus()).isTrue(); @@ -305,14 +311,15 @@ void executeWithChannelFailure() throws PrecheckStatusException, TimeoutExceptio when(node3.isHealthy()).thenReturn(true); when(node4.isHealthy()).thenReturn(true); - when(node3.channelFailedToConnect()).thenReturn(true); - when(node4.channelFailedToConnect()).thenReturn(false); + when(node3.channelFailedToConnect(any(Instant.class))).thenReturn(true); + when(node4.channelFailedToConnect(any(Instant.class))).thenReturn(false); var now = java.time.Instant.now(); var tx = new DummyTransaction() { @Nullable @Override - TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response, AccountId nodeId, com.hedera.hashgraph.sdk.proto.Transaction request) { + TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response, + AccountId nodeId, com.hedera.hashgraph.sdk.proto.Transaction request) { return new TransactionResponse( new AccountId(4), TransactionId.withValidStart(new AccountId(4), now), @@ -335,10 +342,11 @@ TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionRespon .build(); tx.blockingUnaryCall = (grpcRequest) -> txResp; - com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute(client); + com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute( + client); - verify(node3).channelFailedToConnect(); - verify(node4).channelFailedToConnect(); + verify(node3).channelFailedToConnect(any(Instant.class)); + verify(node4).channelFailedToConnect(any(Instant.class)); assertThat(resp.nodeId).isEqualTo(new AccountId(4)); } @@ -354,9 +362,10 @@ void executeWithAllUnhealthyNodes() throws PrecheckStatusException, TimeoutExcep when(node4.isHealthy()).thenAnswer((Answer) inv -> i.get() == 0); when(node5.isHealthy()).thenAnswer((Answer) inv -> i.get() == 0); - when(node3.channelFailedToConnect()).thenAnswer((Answer) inv -> i.get() == 0); - when(node4.channelFailedToConnect()).thenAnswer((Answer) inv -> i.get() == 0); - when(node5.channelFailedToConnect()).thenAnswer((Answer) inv -> i.getAndIncrement() == 0); + when(node3.channelFailedToConnect(any(Instant.class))).thenAnswer((Answer) inv -> i.get() == 0); + when(node4.channelFailedToConnect(any(Instant.class))).thenAnswer((Answer) inv -> i.get() == 0); + when(node5.channelFailedToConnect(any(Instant.class))).thenAnswer( + (Answer) inv -> i.getAndIncrement() == 0); when(node3.getRemainingTimeForBackoff()).thenReturn(500L); when(node4.getRemainingTimeForBackoff()).thenReturn(600L); @@ -366,7 +375,8 @@ void executeWithAllUnhealthyNodes() throws PrecheckStatusException, TimeoutExcep var tx = new DummyTransaction() { @Nullable @Override - TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response, AccountId nodeId, com.hedera.hashgraph.sdk.proto.Transaction request) { + TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response, + AccountId nodeId, com.hedera.hashgraph.sdk.proto.Transaction request) { return new TransactionResponse( new AccountId(3), TransactionId.withValidStart(new AccountId(3), now), @@ -389,11 +399,12 @@ TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionRespon .build(); tx.blockingUnaryCall = (grpcRequest) -> txResp; - com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute(client); + com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute( + client); - verify(node3, times(2)).channelFailedToConnect(); - verify(node4).channelFailedToConnect(); - verify(node5).channelFailedToConnect(); + verify(node3, times(2)).channelFailedToConnect(any(Instant.class)); + verify(node4).channelFailedToConnect(any(Instant.class)); + verify(node5).channelFailedToConnect(any(Instant.class)); assertThat(resp.nodeId).isEqualTo(new AccountId(3)); } @@ -403,9 +414,9 @@ void executeExhaustRetries() { when(node4.isHealthy()).thenReturn(true); when(node5.isHealthy()).thenReturn(true); - when(node3.channelFailedToConnect()).thenReturn(true); - when(node4.channelFailedToConnect()).thenReturn(true); - when(node5.channelFailedToConnect()).thenReturn(true); + when(node3.channelFailedToConnect(any(Instant.class))).thenReturn(true); + when(node4.channelFailedToConnect(any(Instant.class))).thenReturn(true); + when(node5.channelFailedToConnect(any(Instant.class))).thenReturn(true); var tx = new DummyTransaction(); var nodeAccountIds = Arrays.asList( @@ -424,8 +435,8 @@ void executeRetriableErrorDuringCall() { when(node3.isHealthy()).thenReturn(true); when(node4.isHealthy()).thenReturn(true); - when(node3.channelFailedToConnect()).thenReturn(false); - when(node4.channelFailedToConnect()).thenReturn(false); + when(node3.channelFailedToConnect(any(Instant.class))).thenReturn(false); + when(node4.channelFailedToConnect(any(Instant.class))).thenReturn(false); var tx = new DummyTransaction(); var nodeAccountIds = Arrays.asList( @@ -436,16 +447,38 @@ void executeRetriableErrorDuringCall() { tx.setNodeAccountIds(nodeAccountIds); tx.blockingUnaryCall = (grpcRequest) -> { - if (i.getAndIncrement() == 0) + if (i.getAndIncrement() == 0) { throw new StatusRuntimeException(io.grpc.Status.UNAVAILABLE); - else + } else { throw new StatusRuntimeException(io.grpc.Status.ABORTED); + } }; assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> tx.execute(client)); - verify(node3).channelFailedToConnect(); - verify(node4).channelFailedToConnect(); + verify(node3).channelFailedToConnect(any(Instant.class)); + verify(node4).channelFailedToConnect(any(Instant.class)); + } + + @Test + void testChannelFailedToConnectTimeout() { + TransactionResponse transactionResponse = new TransactionResponse( + new AccountId(3), + TransactionId.withValidStart(new AccountId(3), java.time.Instant.now()), + new byte[]{1, 2, 3}, + null + ); + var tx = new DummyTransaction(); + + tx.blockingUnaryCall = (grpcRequest) -> { + throw new StatusRuntimeException(io.grpc.Status.UNAVAILABLE); + }; + + when(node3.isHealthy()).thenReturn(true); + when(node3.channelFailedToConnect(any(Instant.class))).thenReturn(true); + + assertThatExceptionOfType(MaxAttemptsExceededException.class).isThrownBy( + () -> transactionResponse.getReceipt(client, Duration.ofSeconds(2))); } @Test @@ -486,8 +519,8 @@ ExecutionState getExecutionState(Status status, Response response) { tx.blockingUnaryCall = (grpcRequest) -> resp; tx.execute(client); - verify(node3).channelFailedToConnect(); - verify(node4).channelFailedToConnect(); + verify(node3).channelFailedToConnect(any(Instant.class)); + verify(node4).channelFailedToConnect(any(Instant.class)); } @@ -518,7 +551,7 @@ Status mapResponseStatus(com.hedera.hashgraph.sdk.proto.TransactionResponse resp tx.blockingUnaryCall = (grpcRequest) -> txResp; assertThatExceptionOfType(PrecheckStatusException.class).isThrownBy(() -> tx.execute(client)); - verify(node3).channelFailedToConnect(); + verify(node3).channelFailedToConnect(any(Instant.class)); } @Test @@ -529,7 +562,8 @@ Status mapResponseStatus(com.hedera.hashgraph.sdk.proto.TransactionResponse resp void shouldRetryReturnsCorrectStates() { var tx = new DummyTransaction(); - assertThat(tx.getExecutionState(Status.PLATFORM_TRANSACTION_NOT_CREATED, null)).isEqualTo(ExecutionState.SERVER_ERROR); + assertThat(tx.getExecutionState(Status.PLATFORM_TRANSACTION_NOT_CREATED, null)).isEqualTo( + ExecutionState.SERVER_ERROR); assertThat(tx.getExecutionState(Status.PLATFORM_NOT_ACTIVE, null)).isEqualTo(ExecutionState.SERVER_ERROR); assertThat(tx.getExecutionState(Status.BUSY, null)).isEqualTo(ExecutionState.SERVER_ERROR); assertThat(tx.getExecutionState(Status.OK, null)).isEqualTo(ExecutionState.SUCCESS); @@ -548,7 +582,8 @@ void shouldSetMaxRetry() { } static class DummyTransaction> - extends Executable { + extends + Executable { @Override void onExecute(Client client) { @@ -568,7 +603,8 @@ com.hedera.hashgraph.sdk.proto.Transaction makeRequest() { @Nullable @Override - TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response, AccountId nodeId, com.hedera.hashgraph.sdk.proto.Transaction request) { + TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response, AccountId nodeId, + com.hedera.hashgraph.sdk.proto.Transaction request) { return null; } @@ -596,7 +632,8 @@ void onExecute(Client client) { } @Override - TransactionReceipt mapResponse(Response response, AccountId nodeId, com.hedera.hashgraph.sdk.proto.Query request) { + TransactionReceipt mapResponse(Response response, AccountId nodeId, + com.hedera.hashgraph.sdk.proto.Query request) { return null; } diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FeeSchedulesTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FeeSchedulesTest.java index 91ac4be15..c8566fbe6 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FeeSchedulesTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FeeSchedulesTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileAppendTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileAppendTransactionTest.java index 25953399b..b45a8f668 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileAppendTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileAppendTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileContentsQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileContentsQueryTest.java index 9b40ca87c..eaee5ae20 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileContentsQueryTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileContentsQueryTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileCreateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileCreateTransactionTest.java index f3823277d..43e91243a 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileCreateTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileCreateTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileDeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileDeleteTransactionTest.java index 2e30a7ceb..251f0f2c4 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileDeleteTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileDeleteTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileIdTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileIdTest.java index 754b42052..ab8850e26 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileIdTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileIdTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoQueryTest.java index 54dd0a002..c939a0a69 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoQueryTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoQueryTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoTest.java index ac168264e..ad6b531e0 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileUpdateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileUpdateTransactionTest.java index eb85fd528..b7ee03c94 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileUpdateTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileUpdateTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FreezeTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FreezeTransactionTest.java index 2c4f4bb07..fee6937a5 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FreezeTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FreezeTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/HbarTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/HbarTest.java index 320618af3..2423b5dad 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/HbarTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/HbarTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/HederaTrustManagerTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/HederaTrustManagerTest.java index 04610f834..42277ac0a 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/HederaTrustManagerTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/HederaTrustManagerTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/KeyTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/KeyTest.java index 028c2de14..9396abf1b 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/KeyTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/KeyTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/KeystoreTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/KeystoreTest.java index c332bf456..ee0779a32 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/KeystoreTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/KeystoreTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/ListInputTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/ListInputTest.java index 67bf979c5..0937da6f7 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/ListInputTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/ListInputTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededExceptionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededExceptionTest.java index c27108420..eb8f89487 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededExceptionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededExceptionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/MessageSubmitTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/MessageSubmitTransactionTest.java index 3d7859b31..031324b1f 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/MessageSubmitTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/MessageSubmitTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/MnemonicTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/MnemonicTest.java index 21f8ae978..81d24e608 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/MnemonicTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/MnemonicTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/Mocker.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/Mocker.java index a8995994e..4322d8dd6 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/Mocker.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/Mocker.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/MockingTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/MockingTest.java index bdcd5d938..9048440f6 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/MockingTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/MockingTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/NftIdTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/NftIdTest.java index ed76b590b..e44d99ce1 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/NftIdTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/NftIdTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/PrivateKeyTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/PrivateKeyTest.java index 0e2939ad3..a9cbb0fbf 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/PrivateKeyTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/PrivateKeyTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/PrngTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/PrngTransactionTest.java index f77335cc2..4fb15c896 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/PrngTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/PrngTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/RegenerateTransactionIdsTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/RegenerateTransactionIdsTest.java index 19ed5e5df..0a8e9ec85 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/RegenerateTransactionIdsTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/RegenerateTransactionIdsTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleCreateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleCreateTransactionTest.java index 371d9c18e..a9f238c64 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleCreateTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleCreateTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransactionTest.java index d7c55bc4c..dec9a6e5f 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleInfoQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleInfoQueryTest.java index 7d0c5be83..d355abb19 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleInfoQueryTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleInfoQueryTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleSignTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleSignTransactionTest.java index 0da728420..274e622a4 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleSignTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleSignTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/StatusTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/StatusTest.java index 50aad95da..a31112dd2 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/StatusTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/StatusTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemDeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemDeleteTransactionTest.java index 376c834b5..93c3075be 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemDeleteTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemDeleteTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemUndeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemUndeleteTransactionTest.java index 15212e34a..cd487631c 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemUndeleteTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemUndeleteTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestResponse.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestResponse.java index a4cb11554..3d243fe01 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestResponse.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestResponse.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestServer.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestServer.java index 4b5454ee9..559542b81 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestServer.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestServer.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestService.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestService.java index d7d0c3bec..60b5c912e 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestService.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestService.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAllowanceTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAllowanceTest.java new file mode 100644 index 000000000..995ee2454 --- /dev/null +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAllowanceTest.java @@ -0,0 +1,53 @@ +package com.hedera.hashgraph.sdk; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +public class TokenAllowanceTest { + + private static final TokenId testTokenId = TokenId.fromString("0.6.9"); + private static final AccountId testOwnerAccountId = AccountId.fromString("8.8.8"); + private static final AccountId testSpenderAccountId = AccountId.fromString("7.7.7"); + private static final long testAmount = 4L; + + @Test + void constructWithTokenIdOwnerSpenderAmount() { + TokenAllowance tokenAllowance = new TokenAllowance(testTokenId, testOwnerAccountId, testSpenderAccountId, + testAmount); + + assertThat(tokenAllowance.tokenId).isEqualTo(testTokenId); + assertThat(tokenAllowance.ownerAccountId).isEqualTo(testOwnerAccountId); + assertThat(tokenAllowance.spenderAccountId).isEqualTo(testSpenderAccountId); + assertThat(tokenAllowance.amount).isEqualTo(testAmount); + } + + @Test + void fromProtobuf() { + var tokenAllowanceProtobuf = new TokenAllowance(testTokenId, testOwnerAccountId, testSpenderAccountId, + testAmount).toProtobuf(); + var tokenAllowance = TokenAllowance.fromProtobuf(tokenAllowanceProtobuf); + + assertThat(tokenAllowance.tokenId).isEqualTo(testTokenId); + assertThat(tokenAllowance.ownerAccountId).isEqualTo(testOwnerAccountId); + assertThat(tokenAllowance.spenderAccountId).isEqualTo(testSpenderAccountId); + assertThat(tokenAllowance.amount).isEqualTo(testAmount); + } + + @Test + void toProtobuf() { + var tokenAllowanceProtobuf = new TokenAllowance(testTokenId, testOwnerAccountId, testSpenderAccountId, + testAmount).toProtobuf(); + + assertTrue(tokenAllowanceProtobuf.hasTokenId()); + assertThat(TokenId.fromProtobuf(tokenAllowanceProtobuf.getTokenId())).isEqualTo(testTokenId); + + assertTrue(tokenAllowanceProtobuf.hasOwner()); + assertThat(AccountId.fromProtobuf(tokenAllowanceProtobuf.getOwner())).isEqualTo(testOwnerAccountId); + + assertTrue(tokenAllowanceProtobuf.hasSpender()); + assertThat(AccountId.fromProtobuf(tokenAllowanceProtobuf.getSpender())).isEqualTo(testSpenderAccountId); + + } +} diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAssociateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAssociateTransactionTest.java index b30f9bbfa..361335a0b 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAssociateTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAssociateTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenBurnTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenBurnTransactionTest.java index 63e7f963f..774516788 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenBurnTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenBurnTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenCreateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenCreateTransactionTest.java index c63c0f8e5..9fa6d4981 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenCreateTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenCreateTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDeleteTransactionTest.java index b9da9484d..f92318385 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDeleteTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDeleteTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDissociateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDissociateTransactionTest.java index a87622b09..469e7830a 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDissociateTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDissociateTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransactionTest.java index cdb001076..29074be72 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFreezeTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFreezeTransactionTest.java index 9b9fc26b8..771fb8b2b 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFreezeTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFreezeTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.java index 93f712a40..e72037da9 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,22 +19,24 @@ */ package com.hedera.hashgraph.sdk; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody; import com.hedera.hashgraph.sdk.proto.TokenGrantKycTransactionBody; -import com.hedera.hashgraph.sdk.proto.TokenUnfreezeAccountTransactionBody; +import com.hedera.hashgraph.sdk.proto.TransactionBody; import io.github.jsonSnapshot.SnapshotMatcher; +import java.time.Instant; +import java.util.Arrays; import org.junit.AfterClass; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import java.time.Instant; - -import java.util.Arrays; - -import static org.assertj.core.api.Assertions.assertThat; public class TokenGrantKycTransactionTest { private static final PrivateKey unusedPrivateKey = PrivateKey.fromString( "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10"); + private static final TokenId testTokenId = TokenId.fromString("4.2.0"); + private static final AccountId testAccountId = AccountId.fromString("6.9.0"); final Instant validStart = Instant.ofEpochSecond(1554158542); @@ -50,19 +52,14 @@ public static void afterAll() { @Test void shouldSerialize() { - SnapshotMatcher.expect(spawnTestTransaction() - .toString() - ).toMatchSnapshot(); + SnapshotMatcher.expect(spawnTestTransaction().toString()).toMatchSnapshot(); } private TokenGrantKycTransaction spawnTestTransaction() { - return new TokenGrantKycTransaction() - .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) + return new TokenGrantKycTransaction().setNodeAccountIds( + Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) .setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart)) - .setAccountId(AccountId.fromString("0.0.222")) - .setTokenId(TokenId.fromString("6.5.4")) - .setMaxTransactionFee(new Hbar(1)) - .freeze() + .setAccountId(testAccountId).setTokenId(testTokenId).setMaxTransactionFee(new Hbar(1)).freeze() .sign(unusedPrivateKey); } @@ -76,11 +73,45 @@ void shouldBytes() throws Exception { @Test void fromScheduledTransaction() { var transactionBody = SchedulableTransactionBody.newBuilder() - .setTokenGrantKyc(TokenGrantKycTransactionBody.newBuilder().build()) - .build(); + .setTokenGrantKyc(TokenGrantKycTransactionBody.newBuilder().build()).build(); var tx = Transaction.fromScheduledTransaction(transactionBody); assertThat(tx).isInstanceOf(TokenGrantKycTransaction.class); } + + @Test + void constructTokenGrantKycTransactionFromTransactionBodyProtobuf() { + var transactionBody = TokenGrantKycTransactionBody.newBuilder().setAccount(testAccountId.toProtobuf()) + .setToken(testTokenId.toProtobuf()).build(); + + var tx = TransactionBody.newBuilder().setTokenGrantKyc(transactionBody).build(); + var tokenGrantKycTransaction = new TokenGrantKycTransaction(tx); + + assertThat(tokenGrantKycTransaction.getTokenId()).isEqualTo(testTokenId); + } + + @Test + void getSetAccountId() { + var tokenGrantKycTransaction = new TokenGrantKycTransaction().setAccountId(testAccountId); + assertThat(tokenGrantKycTransaction.getAccountId()).isEqualTo(testAccountId); + } + + @Test + void getSetAccountIdFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setAccountId(testAccountId)); + } + + @Test + void getSetTokenId() { + var tokenGrantKycTransaction = new TokenGrantKycTransaction().setTokenId(testTokenId); + assertThat(tokenGrantKycTransaction.getTokenId()).isEqualTo(testTokenId); + } + + @Test + void getSetTokenIdFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setTokenId(testTokenId)); + } } diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.snap index 45fc0c7a9..80980fb0b 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.snap +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.snap @@ -1,3 +1,3 @@ com.hedera.hashgraph.sdk.TokenGrantKycTransactionTest.shouldSerialize=[ - "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_grant_kyc {\n account {\n account_num: 222\n realm_num: 0\n shard_num: 0\n }\n token {\n realm_num: 5\n shard_num: 6\n token_num: 4\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}" + "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_grant_kyc {\n account {\n account_num: 0\n realm_num: 9\n shard_num: 6\n }\n token {\n realm_num: 2\n shard_num: 4\n token_num: 0\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}" ] \ No newline at end of file diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoQueryTest.java index e5c80e041..13ce9060c 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoQueryTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoQueryTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoTest.java index 2b0c75d30..86145b4f0 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.java index ef84da270..0e6a35321 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,23 +19,23 @@ */ package com.hedera.hashgraph.sdk; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody; -import com.hedera.hashgraph.sdk.proto.TokenFeeScheduleUpdateTransactionBody; import com.hedera.hashgraph.sdk.proto.TokenPauseTransactionBody; +import com.hedera.hashgraph.sdk.proto.TransactionBody; import io.github.jsonSnapshot.SnapshotMatcher; +import java.time.Instant; +import java.util.Arrays; import org.junit.AfterClass; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import java.time.Instant; - -import java.util.Arrays; - -import static org.assertj.core.api.Assertions.assertThat; public class TokenPauseTransactionTest { private static final PrivateKey unusedPrivateKey = PrivateKey.fromString( "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10"); - + private static final TokenId testTokenId = TokenId.fromString("4.2.0"); final Instant validStart = Instant.ofEpochSecond(1554158542); @BeforeAll @@ -49,20 +49,15 @@ public static void afterAll() { } TokenPauseTransaction spawnTestTransaction() { - return new TokenPauseTransaction() - .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) + return new TokenPauseTransaction().setNodeAccountIds( + Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) .setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart)) - .setTokenId(TokenId.fromString("1.23.4")) - .setMaxTransactionFee(new Hbar(1)) - .freeze() - .sign(unusedPrivateKey); + .setTokenId(testTokenId).setMaxTransactionFee(new Hbar(1)).freeze().sign(unusedPrivateKey); } @Test void shouldSerialize() { - SnapshotMatcher.expect(spawnTestTransaction() - .toString() - ).toMatchSnapshot(); + SnapshotMatcher.expect(spawnTestTransaction().toString()).toMatchSnapshot(); } @Test @@ -75,11 +70,33 @@ void shouldBytesNft() throws Exception { @Test void fromScheduledTransaction() { var transactionBody = SchedulableTransactionBody.newBuilder() - .setTokenPause(TokenPauseTransactionBody.newBuilder().build()) - .build(); + .setTokenPause(TokenPauseTransactionBody.newBuilder().build()).build(); var tx = Transaction.fromScheduledTransaction(transactionBody); assertThat(tx).isInstanceOf(TokenPauseTransaction.class); } + + @Test + void constructTokenPauseTransactionFromTransactionBodyProtobuf() { + var transactionBody = TokenPauseTransactionBody.newBuilder().setToken(testTokenId.toProtobuf()).build(); + + var tx = TransactionBody.newBuilder().setTokenPause(transactionBody).build(); + var tokenPauseTransaction = new TokenPauseTransaction(tx); + + assertThat(tokenPauseTransaction.getTokenId()).isEqualTo(testTokenId); + } + + @Test + void getSetTokenId() { + var tokenPauseTransaction = new TokenPauseTransaction().setTokenId(testTokenId); + assertThat(tokenPauseTransaction.getTokenId()).isEqualTo(testTokenId); + } + + @Test + void getSetTokenIdFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setTokenId(testTokenId)); + } + } diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.snap index ce4b3db49..6f138223e 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.snap +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.snap @@ -1,3 +1,3 @@ com.hedera.hashgraph.sdk.TokenPauseTransactionTest.shouldSerialize=[ - "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_pause {\n token {\n realm_num: 23\n shard_num: 1\n token_num: 4\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}" + "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_pause {\n token {\n realm_num: 2\n shard_num: 4\n token_num: 0\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}" ] \ No newline at end of file diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.java index 11f7de523..43a2066b8 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,22 +19,24 @@ */ package com.hedera.hashgraph.sdk; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody; -import com.hedera.hashgraph.sdk.proto.TokenGrantKycTransactionBody; import com.hedera.hashgraph.sdk.proto.TokenRevokeKycTransactionBody; +import com.hedera.hashgraph.sdk.proto.TransactionBody; import io.github.jsonSnapshot.SnapshotMatcher; +import java.time.Instant; +import java.util.Arrays; import org.junit.AfterClass; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import java.time.Instant; - -import java.util.Arrays; - -import static org.assertj.core.api.Assertions.assertThat; public class TokenRevokeKycTransactionTest { private static final PrivateKey unusedPrivateKey = PrivateKey.fromString( "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10"); + private static final TokenId testTokenId = TokenId.fromString("4.2.0"); + private static final AccountId testAccountId = AccountId.fromString("6.9.0"); final Instant validStart = Instant.ofEpochSecond(1554158542); @@ -50,19 +52,14 @@ public static void afterAll() { @Test void shouldSerialize() { - SnapshotMatcher.expect(spawnTestTransaction() - .toString() - ).toMatchSnapshot(); + SnapshotMatcher.expect(spawnTestTransaction().toString()).toMatchSnapshot(); } private TokenRevokeKycTransaction spawnTestTransaction() { - return new TokenRevokeKycTransaction() - .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) + return new TokenRevokeKycTransaction().setNodeAccountIds( + Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) .setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart)) - .setAccountId(AccountId.fromString("0.0.222")) - .setTokenId(TokenId.fromString("6.5.4")) - .setMaxTransactionFee(new Hbar(1)) - .freeze() + .setAccountId(testAccountId).setTokenId(testTokenId).setMaxTransactionFee(new Hbar(1)).freeze() .sign(unusedPrivateKey); } @@ -76,11 +73,45 @@ void shouldBytes() throws Exception { @Test void fromScheduledTransaction() { var transactionBody = SchedulableTransactionBody.newBuilder() - .setTokenRevokeKyc(TokenRevokeKycTransactionBody.newBuilder().build()) - .build(); + .setTokenRevokeKyc(TokenRevokeKycTransactionBody.newBuilder().build()).build(); var tx = Transaction.fromScheduledTransaction(transactionBody); assertThat(tx).isInstanceOf(TokenRevokeKycTransaction.class); } + + @Test + void constructTokenRevokeKycTransactionFromTransactionBodyProtobuf() { + var transactionBody = TokenRevokeKycTransactionBody.newBuilder().setAccount(testAccountId.toProtobuf()) + .setToken(testTokenId.toProtobuf()).build(); + + var tx = TransactionBody.newBuilder().setTokenRevokeKyc(transactionBody).build(); + var tokenRevokeKycTransaction = new TokenRevokeKycTransaction(tx); + + assertThat(tokenRevokeKycTransaction.getTokenId()).isEqualTo(testTokenId); + } + + @Test + void getSetAccountId() { + var tokenRevokeKycTransaction = new TokenRevokeKycTransaction().setAccountId(testAccountId); + assertThat(tokenRevokeKycTransaction.getAccountId()).isEqualTo(testAccountId); + } + + @Test + void getSetAccountIdFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setAccountId(testAccountId)); + } + + @Test + void getSetTokenId() { + var tokenRevokeKycTransaction = new TokenRevokeKycTransaction().setTokenId(testTokenId); + assertThat(tokenRevokeKycTransaction.getTokenId()).isEqualTo(testTokenId); + } + + @Test + void getSetTokenIdFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setTokenId(testTokenId)); + } } diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.snap index ab81b0e62..6c91f3c12 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.snap +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.snap @@ -1,3 +1,3 @@ com.hedera.hashgraph.sdk.TokenRevokeKycTransactionTest.shouldSerialize=[ - "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_revoke_kyc {\n account {\n account_num: 222\n realm_num: 0\n shard_num: 0\n }\n token {\n realm_num: 5\n shard_num: 6\n token_num: 4\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}" + "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_revoke_kyc {\n account {\n account_num: 0\n realm_num: 9\n shard_num: 6\n }\n token {\n realm_num: 2\n shard_num: 4\n token_num: 0\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}" ] \ No newline at end of file diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransactionTest.java index acf43fddd..5faefb763 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.java index 37730ea18..fd1b77126 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,22 +19,23 @@ */ package com.hedera.hashgraph.sdk; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody; -import com.hedera.hashgraph.sdk.proto.TokenPauseTransactionBody; import com.hedera.hashgraph.sdk.proto.TokenUnpauseTransactionBody; +import com.hedera.hashgraph.sdk.proto.TransactionBody; import io.github.jsonSnapshot.SnapshotMatcher; +import java.time.Instant; +import java.util.Arrays; import org.junit.AfterClass; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import java.time.Instant; - -import java.util.Arrays; - -import static org.assertj.core.api.Assertions.assertThat; public class TokenUnpauseTransactionTest { private static final PrivateKey unusedPrivateKey = PrivateKey.fromString( "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10"); + private static final TokenId testTokenId = TokenId.fromString("4.2.0"); final Instant validStart = Instant.ofEpochSecond(1554158542); @@ -49,20 +50,15 @@ public static void afterAll() { } TokenUnpauseTransaction spawnTestTransaction() { - return new TokenUnpauseTransaction() - .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) + return new TokenUnpauseTransaction().setNodeAccountIds( + Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) .setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart)) - .setTokenId(TokenId.fromString("1.23.4")) - .setMaxTransactionFee(new Hbar(1)) - .freeze() - .sign(unusedPrivateKey); + .setTokenId(testTokenId).setMaxTransactionFee(new Hbar(1)).freeze().sign(unusedPrivateKey); } @Test void shouldSerialize() { - SnapshotMatcher.expect(spawnTestTransaction() - .toString() - ).toMatchSnapshot(); + SnapshotMatcher.expect(spawnTestTransaction().toString()).toMatchSnapshot(); } @Test @@ -75,11 +71,32 @@ void shouldBytesNft() throws Exception { @Test void fromScheduledTransaction() { var transactionBody = SchedulableTransactionBody.newBuilder() - .setTokenUnpause(TokenUnpauseTransactionBody.newBuilder().build()) - .build(); + .setTokenUnpause(TokenUnpauseTransactionBody.newBuilder().build()).build(); var tx = Transaction.fromScheduledTransaction(transactionBody); assertThat(tx).isInstanceOf(TokenUnpauseTransaction.class); } + + @Test + void constructTokenUnpauseTransactionFromTransactionBodyProtobuf() { + var transactionBody = TokenUnpauseTransactionBody.newBuilder().setToken(testTokenId.toProtobuf()).build(); + + var tx = TransactionBody.newBuilder().setTokenUnpause(transactionBody).build(); + var tokenUnpauseTransaction = new TokenUnpauseTransaction(tx); + + assertThat(tokenUnpauseTransaction.getTokenId()).isEqualTo(testTokenId); + } + + @Test + void getSetTokenId() { + var tokenUnpauseTransaction = new TokenUnpauseTransaction().setTokenId(testTokenId); + assertThat(tokenUnpauseTransaction.getTokenId()).isEqualTo(testTokenId); + } + + @Test + void getSetTokenIdFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setTokenId(testTokenId)); + } } diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.snap index 265cf480e..019f591a2 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.snap +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.snap @@ -1,3 +1,3 @@ com.hedera.hashgraph.sdk.TokenUnpauseTransactionTest.shouldSerialize=[ - "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_unpause {\n token {\n realm_num: 23\n shard_num: 1\n token_num: 4\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}" + "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_unpause {\n token {\n realm_num: 2\n shard_num: 4\n token_num: 0\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}" ] \ No newline at end of file diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUpdateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUpdateTransactionTest.java index b5dca84e8..3786261a7 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUpdateTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUpdateTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenWipeTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenWipeTransactionTest.java index 3901eb84e..292abd10e 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenWipeTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenWipeTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicCreateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicCreateTransactionTest.java index c0bf4c26a..160385b0f 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicCreateTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicCreateTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicDeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicDeleteTransactionTest.java index c210bcc73..e325f87d3 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicDeleteTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicDeleteTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicIdTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicIdTest.java index 061a17456..e48e1ab06 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicIdTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicIdTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoQueryTest.java index 7c66458dc..43327c5e7 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoQueryTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoQueryTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoTest.java index 949bc3a3c..5914b0afc 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageChunkTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageChunkTest.java new file mode 100644 index 000000000..a8ee05dd9 --- /dev/null +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageChunkTest.java @@ -0,0 +1,36 @@ +package com.hedera.hashgraph.sdk; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.google.protobuf.ByteString; +import com.hedera.hashgraph.sdk.proto.ConsensusMessageChunkInfo; +import com.hedera.hashgraph.sdk.proto.Timestamp; +import com.hedera.hashgraph.sdk.proto.mirror.ConsensusTopicResponse; +import java.time.Instant; +import org.junit.jupiter.api.Test; + +public class TopicMessageChunkTest { + + private static final Instant testTimestamp = Instant.ofEpochSecond(1554158542); + private static final byte[] testContents = new byte[]{0x01, 0x02, 0x03}; + private static final byte[] testRunningHash = new byte[]{0x04, 0x05, 0x06}; + private static final long testSequenceNumber = 7L; + private static final TransactionId testTransactionId = new TransactionId(new AccountId(1), testTimestamp); + + @Test + void constructWithArgs() { + var consensusTopicResponse = ConsensusTopicResponse.newBuilder() + .setConsensusTimestamp(Timestamp.newBuilder().setSeconds(testTimestamp.getEpochSecond())) + .setMessage(ByteString.copyFrom(testContents)).setRunningHash(ByteString.copyFrom(testRunningHash)) + .setSequenceNumber(testSequenceNumber).setChunkInfo( + ConsensusMessageChunkInfo.newBuilder().setInitialTransactionID(testTransactionId.toProtobuf()).build()) + .build(); + + TopicMessageChunk topicMessageChunk = new TopicMessageChunk(consensusTopicResponse); + + assertThat(topicMessageChunk.consensusTimestamp).isEqualTo(testTimestamp); + assertThat(topicMessageChunk.contentSize).isEqualTo(testContents.length); + assertThat(topicMessageChunk.runningHash).isEqualTo(testRunningHash); + assertThat(topicMessageChunk.sequenceNumber).isEqualTo(testSequenceNumber); + } +} diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageQueryTest.java index 540e6577c..dbbd4a33c 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageQueryTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageQueryTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransactionTest.java new file mode 100644 index 000000000..8bee382f7 --- /dev/null +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransactionTest.java @@ -0,0 +1,100 @@ +package com.hedera.hashgraph.sdk; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import com.google.protobuf.ByteString; +import com.hedera.hashgraph.sdk.proto.ConsensusSubmitMessageTransactionBody; +import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody; +import com.hedera.hashgraph.sdk.proto.TransactionBody; +import io.github.jsonSnapshot.SnapshotMatcher; +import java.time.Instant; +import java.util.Arrays; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class TopicMessageSubmitTransactionTest { + private static final PrivateKey unusedPrivateKey = PrivateKey.fromString( + "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10"); + private static final TopicId testTopicId = new TopicId(0, 6, 9); + private static final byte[] testMessageBytes = {0x04, 0x05, 0x06}; + private static final Instant validStart = Instant.ofEpochSecond(1554158542); + + @BeforeAll + public static void beforeAll() { + SnapshotMatcher.start(); + } + + @AfterAll + public static void afterAll() { + SnapshotMatcher.validateSnapshots(); + } + + private TopicMessageSubmitTransaction spawnTestTransactionString() { + return new TopicMessageSubmitTransaction().setNodeAccountIds( + Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) + .setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart)) + .setTopicId(testTopicId).setMessage(new String(testMessageBytes)).freeze().sign(unusedPrivateKey); + } + + private TopicMessageSubmitTransaction spawnTestTransactionBytes() { + return new TopicMessageSubmitTransaction().setNodeAccountIds( + Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) + .setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart)) + .setTopicId(testTopicId).setMessage(testMessageBytes).freeze().sign(unusedPrivateKey); + } + + @Test + void fromScheduledTransaction() { + var transactionBody = SchedulableTransactionBody.newBuilder() + .setConsensusSubmitMessage(ConsensusSubmitMessageTransactionBody.newBuilder().build()).build(); + + var tx = Transaction.fromScheduledTransaction(transactionBody); + + assertThat(tx).isInstanceOf(TopicMessageSubmitTransaction.class); + } + + + @Test + void constructTopicMessageSubmitTransactionFromTransactionBodyProtobuf() { + var transactionBody = ConsensusSubmitMessageTransactionBody.newBuilder().setTopicID(testTopicId.toProtobuf()) + .setMessage(ByteString.copyFrom(testMessageBytes)).build(); + + var tx = TransactionBody.newBuilder().setConsensusSubmitMessage(transactionBody).build(); + + var topicSubmitMessageTransaction = new TopicMessageSubmitTransaction(tx); + assertThat(topicSubmitMessageTransaction.getTopicId()).isEqualTo(testTopicId); + } + + @Test + void getSetTopicId() { + var topicSubmitMessageTransaction = new TopicMessageSubmitTransaction().setTopicId(testTopicId); + assertThat(topicSubmitMessageTransaction.getTopicId()).isEqualTo(testTopicId); + } + + @Test + void getSetTopicIdFrozen() { + var tx = spawnTestTransactionString(); + assertThrows(IllegalStateException.class, () -> tx.setTopicId(testTopicId)); + } + + @Test + void getSetMessage() { + var topicSubmitMessageTransactionString = new TopicMessageSubmitTransaction().setMessage( + new String(testMessageBytes)); + var topicSubmitMessageTransactionBytes = new TopicMessageSubmitTransaction().setMessage(testMessageBytes); + assertThat(topicSubmitMessageTransactionString.getMessage().toByteArray()).isEqualTo(testMessageBytes); + assertThat(topicSubmitMessageTransactionBytes.getMessage().toByteArray()).isEqualTo(testMessageBytes); + } + + @Test + void getSetMessageFrozen() { + var topicSubmitMessageTransactionString = spawnTestTransactionString(); + var topicSubmitMessageTransactionBytes = spawnTestTransactionBytes(); + assertThrows(IllegalStateException.class, + () -> topicSubmitMessageTransactionString.setMessage(testMessageBytes)); + assertThrows(IllegalStateException.class, + () -> topicSubmitMessageTransactionBytes.setMessage(testMessageBytes)); + } +} diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransactionTest.snap new file mode 100644 index 000000000..e69de29bb diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageTest.java new file mode 100644 index 000000000..28e03da5f --- /dev/null +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageTest.java @@ -0,0 +1,86 @@ +package com.hedera.hashgraph.sdk; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.google.protobuf.ByteString; +import com.hedera.hashgraph.sdk.proto.ConsensusMessageChunkInfo; +import com.hedera.hashgraph.sdk.proto.Timestamp; +import com.hedera.hashgraph.sdk.proto.mirror.ConsensusTopicResponse; +import java.time.Instant; +import java.util.List; +import org.junit.jupiter.api.Test; + +public class TopicMessageTest { + + private static final Instant testTimestamp = Instant.ofEpochSecond(1554158542); + private static final byte[] testContents = new byte[]{0x01, 0x02, 0x03}; + private static final byte[] testRunningHash = new byte[]{0x04, 0x05, 0x06}; + private static final long testSequenceNumber = 7L; + private static final TransactionId testTransactionId = new TransactionId(new AccountId(1), testTimestamp); + + @Test + void constructWithArgs() { + TopicMessageChunk topicMessageChunk = new TopicMessageChunk(ConsensusTopicResponse.newBuilder() + .setConsensusTimestamp(Timestamp.newBuilder().setSeconds(testTimestamp.getEpochSecond())) + .setRunningHash(ByteString.copyFrom(testRunningHash)).setSequenceNumber(testSequenceNumber).build()); + + TopicMessageChunk[] topicMessageChunkArr = {topicMessageChunk, topicMessageChunk, topicMessageChunk}; + + TopicMessage topicMessage = new TopicMessage(testTimestamp, testContents, testRunningHash, testSequenceNumber, + topicMessageChunkArr, testTransactionId); + + assertThat(topicMessage.consensusTimestamp).isEqualTo(testTimestamp); + assertThat(topicMessage.contents).isEqualTo(testContents); + assertThat(topicMessage.runningHash).isEqualTo(testRunningHash); + assertThat(topicMessage.sequenceNumber).isEqualTo(testSequenceNumber); + assertThat(topicMessage.chunks).hasSize(3); + assertThat(topicMessage.transactionId).isEqualTo(testTransactionId); + } + + @Test + void ofSingle() { + var consensusTopicResponse = ConsensusTopicResponse.newBuilder() + .setConsensusTimestamp(Timestamp.newBuilder().setSeconds(testTimestamp.getEpochSecond())) + .setMessage(ByteString.copyFrom(testContents)).setRunningHash(ByteString.copyFrom(testRunningHash)) + .setSequenceNumber(testSequenceNumber).setChunkInfo( + ConsensusMessageChunkInfo.newBuilder().setInitialTransactionID(testTransactionId.toProtobuf()).build()) + .build(); + + TopicMessage topicMessage = TopicMessage.ofSingle(consensusTopicResponse); + + assertThat(topicMessage.consensusTimestamp).isEqualTo(testTimestamp); + assertThat(topicMessage.contents).isEqualTo(testContents); + assertThat(topicMessage.runningHash).isEqualTo(testRunningHash); + assertThat(topicMessage.sequenceNumber).isEqualTo(testSequenceNumber); + assertThat(topicMessage.chunks).hasSize(1); + assertThat(topicMessage.transactionId).isEqualTo(testTransactionId); + } + + @Test + void ofMany() { + var consensusTopicResponse1 = ConsensusTopicResponse.newBuilder() + .setConsensusTimestamp(Timestamp.newBuilder().setSeconds(testTimestamp.getEpochSecond())) + .setMessage(ByteString.copyFrom(testContents)).setRunningHash(ByteString.copyFrom(testRunningHash)) + .setSequenceNumber(testSequenceNumber).setChunkInfo( + ConsensusMessageChunkInfo.newBuilder().setInitialTransactionID(testTransactionId.toProtobuf()) + .setNumber(1).setTotal(2).build()).build(); + + var consensusTopicResponse2 = ConsensusTopicResponse.newBuilder() + .setConsensusTimestamp(Timestamp.newBuilder().setSeconds(testTimestamp.getEpochSecond() + 1)) + .setMessage(ByteString.copyFrom(testContents)).setRunningHash(ByteString.copyFrom(testRunningHash)) + .setSequenceNumber(testSequenceNumber + 1L) + .setChunkInfo(ConsensusMessageChunkInfo.newBuilder().setNumber(2).setTotal(2).build()).build(); + + TopicMessage topicMessage = TopicMessage.ofMany(List.of(consensusTopicResponse1, consensusTopicResponse2)); + + byte[] totalContents = new byte[testContents.length * 2]; + System.arraycopy(testContents, 0, totalContents, 0, testContents.length); + System.arraycopy(testContents, 0, totalContents, testContents.length, testContents.length); + assertThat(topicMessage.consensusTimestamp).isEqualTo(testTimestamp.plusSeconds(1)); + assertThat(topicMessage.contents).isEqualTo(totalContents); + assertThat(topicMessage.runningHash).isEqualTo(testRunningHash); + assertThat(topicMessage.sequenceNumber).isEqualTo(testSequenceNumber + 1L); + assertThat(topicMessage.chunks).hasSize(2); + assertThat(topicMessage.transactionId).isEqualTo(testTransactionId); + } +} diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.java index d33edf00e..81ff5cc1c 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,25 +19,38 @@ */ package com.hedera.hashgraph.sdk; -import com.hedera.hashgraph.sdk.proto.ConsensusCreateTopicTransactionBody; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import com.google.protobuf.StringValue; import com.hedera.hashgraph.sdk.proto.ConsensusUpdateTopicTransactionBody; +import com.hedera.hashgraph.sdk.proto.CryptoDeleteTransactionBody; import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody; +import com.hedera.hashgraph.sdk.proto.Timestamp; +import com.hedera.hashgraph.sdk.proto.TransactionBody; import io.github.jsonSnapshot.SnapshotMatcher; -import org.junit.AfterClass; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; import java.time.Duration; import java.time.Instant; - import java.util.Arrays; - -import static org.assertj.core.api.Assertions.assertThat; +import org.junit.AfterClass; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; public class TopicUpdateTransactionTest { private static final PrivateKey unusedPrivateKey = PrivateKey.fromString( "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10"); - - final Instant validStart = Instant.ofEpochSecond(1554158542); + private static final PublicKey testAdminKey = PrivateKey.fromString( + "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e11") + .getPublicKey(); + private static final PublicKey testSubmitKey = PrivateKey.fromString( + "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e12") + .getPublicKey(); + private static final TopicId testTopicId = TopicId.fromString("0.0.5007"); + private static final String testTopicMemo = "test memo"; + private static final Duration testAutoRenewPeriod = Duration.ofHours(10); + private static final Instant testExpirationTime = Instant.now(); + private static final AccountId testAutoRenewAccountId = AccountId.fromString("8.8.8"); + private static final Instant validStart = Instant.ofEpochSecond(1554158542); @BeforeAll public static void beforeAll() { @@ -51,40 +64,25 @@ public static void afterAll() { @Test void clearShouldSerialize() { - SnapshotMatcher.expect(new TopicUpdateTransaction() - .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) + SnapshotMatcher.expect(new TopicUpdateTransaction().setNodeAccountIds( + Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) .setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart)) - .setTopicId(TopicId.fromString("0.0.5007")) - .clearAdminKey() - .clearAutoRenewAccountId() - .clearSubmitKey() - .clearTopicMemo() - .freeze() - .sign(unusedPrivateKey) - .toString() - ).toMatchSnapshot(); + .setTopicId(testTopicId).clearAdminKey().clearAutoRenewAccountId().clearSubmitKey().clearTopicMemo() + .freeze().sign(unusedPrivateKey).toString()).toMatchSnapshot(); } @Test void setShouldSerialize() { - SnapshotMatcher.expect(spawnTestTransaction() - .toString() - ).toMatchSnapshot(); + SnapshotMatcher.expect(spawnTestTransaction().toString()).toMatchSnapshot(); } private TopicUpdateTransaction spawnTestTransaction() { - return new TopicUpdateTransaction() - .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) + return new TopicUpdateTransaction().setNodeAccountIds( + Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006"))) .setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart)) - .setTopicId(TopicId.fromString("0.0.5007")) - .setAdminKey(unusedPrivateKey) - .setAutoRenewAccountId(AccountId.fromString("0.0.5009")) - .setAutoRenewPeriod(Duration.ofHours(24)) - .setSubmitKey(unusedPrivateKey) - .setTopicMemo("Hello memo") - .setExpirationTime(validStart) - .freeze() - .sign(unusedPrivateKey); + .setTopicId(testTopicId).setAdminKey(testAdminKey).setAutoRenewAccountId(testAutoRenewAccountId) + .setAutoRenewPeriod(testAutoRenewPeriod).setSubmitKey(testSubmitKey).setTopicMemo(testTopicMemo) + .setExpirationTime(validStart).freeze().sign(unusedPrivateKey); } @Test @@ -97,11 +95,177 @@ void shouldBytes() throws Exception { @Test void fromScheduledTransaction() { var transactionBody = SchedulableTransactionBody.newBuilder() - .setConsensusUpdateTopic(ConsensusUpdateTopicTransactionBody.newBuilder().build()) - .build(); + .setConsensusUpdateTopic(ConsensusUpdateTopicTransactionBody.newBuilder().build()).build(); var tx = Transaction.fromScheduledTransaction(transactionBody); assertThat(tx).isInstanceOf(TopicUpdateTransaction.class); } + + @Test + void constructTopicUpdateTransactionFromTransactionBodyProtobuf() { + var transactionBody = ConsensusUpdateTopicTransactionBody.newBuilder().setTopicID(testTopicId.toProtobuf()) + .setMemo(StringValue.newBuilder().setValue(testTopicMemo).build()) + .setExpirationTime(Timestamp.newBuilder().setSeconds(testExpirationTime.getEpochSecond()).build()) + .setAdminKey(testAdminKey.toProtobufKey()).setSubmitKey(testSubmitKey.toProtobufKey()).setAutoRenewPeriod( + com.hedera.hashgraph.sdk.proto.Duration.newBuilder().setSeconds(testAutoRenewPeriod.toSeconds()) + .build()).setAutoRenewAccount(testAutoRenewAccountId.toProtobuf()).build(); + + var tx = TransactionBody.newBuilder().setConsensusUpdateTopic(transactionBody).build(); + var topicUpdateTransaction = new TopicUpdateTransaction(tx); + + assertThat(topicUpdateTransaction.getTopicId()).isEqualTo(testTopicId); + assertThat(topicUpdateTransaction.getTopicMemo()).isEqualTo(testTopicMemo); + assertThat(topicUpdateTransaction.getExpirationTime().getEpochSecond()).isEqualTo( + testExpirationTime.getEpochSecond()); + assertThat(topicUpdateTransaction.getAdminKey()).isEqualTo(testAdminKey); + assertThat(topicUpdateTransaction.getSubmitKey()).isEqualTo(testSubmitKey); + assertThat(topicUpdateTransaction.getAutoRenewPeriod().toSeconds()).isEqualTo(testAutoRenewPeriod.toSeconds()); + assertThat(topicUpdateTransaction.getAutoRenewAccountId()).isEqualTo(testAutoRenewAccountId); + } + + // doesn't throw an exception as opposed to C++ sdk + @Test + void constructTopicUpdateTransactionFromWrongTransactionBodyProtobuf() { + var transactionBody = CryptoDeleteTransactionBody.newBuilder().build(); + var tx = TransactionBody.newBuilder().setCryptoDelete(transactionBody).build(); + + new TopicUpdateTransaction(tx); + } + + @Test + void getSetTopicId() { + var topicUpdateTransaction = new TopicUpdateTransaction().setTopicId(testTopicId); + assertThat(topicUpdateTransaction.getTopicId()).isEqualTo(testTopicId); + } + + @Test + void getSetTopicIdFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setTopicId(testTopicId)); + } + + @Test + void getSetTopicMemo() { + var topicUpdateTransaction = new TopicUpdateTransaction().setTopicMemo(testTopicMemo); + assertThat(topicUpdateTransaction.getTopicMemo()).isEqualTo(testTopicMemo); + } + + @Test + void getSetTopicMemoFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setTopicMemo(testTopicMemo)); + } + + @Test + void clearTopicMemo() { + var topicUpdateTransaction = new TopicUpdateTransaction().setTopicMemo(testTopicMemo); + topicUpdateTransaction.clearTopicMemo(); + assertThat(topicUpdateTransaction.getTopicMemo()).isEmpty(); + } + + @Test + void clearTopicMemoFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.clearTopicMemo()); + } + + @Test + void getSetExpirationTime() { + var topicUpdateTransaction = new TopicUpdateTransaction().setExpirationTime(testExpirationTime); + assertThat(topicUpdateTransaction.getExpirationTime()).isEqualTo(testExpirationTime); + } + + @Test + void getSetExpirationTimeFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setExpirationTime(testExpirationTime)); + } + + @Test + void getSetAdminKey() { + var topicUpdateTransaction = new TopicUpdateTransaction().setAdminKey(testAdminKey); + assertThat(topicUpdateTransaction.getAdminKey()).isEqualTo(testAdminKey); + } + + @Test + void getSetAdminKeyFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setAdminKey(testAdminKey)); + } + + @Test + void clearAdminKey() { + var topicUpdateTransaction = new TopicUpdateTransaction().setAdminKey(testAdminKey); + topicUpdateTransaction.clearAdminKey(); + assertThat(topicUpdateTransaction.getAdminKey()).isEqualTo(new KeyList()); + } + + @Test + void clearAdminKeyFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.clearAdminKey()); + } + + @Test + void getSetSubmitKey() { + var topicUpdateTransaction = new TopicUpdateTransaction().setSubmitKey(testSubmitKey); + assertThat(topicUpdateTransaction.getSubmitKey()).isEqualTo(testSubmitKey); + } + + @Test + void getSetSubmitKeyFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setSubmitKey(testSubmitKey)); + } + + @Test + void clearSubmitKey() { + var topicUpdateTransaction = new TopicUpdateTransaction().setSubmitKey(testSubmitKey); + topicUpdateTransaction.clearSubmitKey(); + assertThat(topicUpdateTransaction.getSubmitKey()).isEqualTo(new KeyList()); + } + + @Test + void clearSubmitKeyFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.clearSubmitKey()); + } + + @Test + void getSetAutoRenewPeriod() { + var topicUpdateTransaction = new TopicUpdateTransaction().setAutoRenewPeriod(testAutoRenewPeriod); + assertThat(topicUpdateTransaction.getAutoRenewPeriod()).isEqualTo(testAutoRenewPeriod); + } + + @Test + void getSetAutoRenewPeriodFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setAutoRenewPeriod(testAutoRenewPeriod)); + } + + @Test + void getSetAutoRenewAccountId() { + var topicUpdateTransaction = new TopicUpdateTransaction().setAutoRenewAccountId(testAutoRenewAccountId); + assertThat(topicUpdateTransaction.getAutoRenewAccountId()).isEqualTo(testAutoRenewAccountId); + } + + @Test + void getSetAutoRenewAccountIdFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.setAutoRenewAccountId(testAutoRenewAccountId)); + } + + @Test + void clearAutoRenewAccountId() { + var topicUpdateTransaction = new TopicUpdateTransaction().setAutoRenewAccountId(testAutoRenewAccountId); + topicUpdateTransaction.clearAutoRenewAccountId(); + assertThat(topicUpdateTransaction.getAutoRenewAccountId()).isEqualTo(new AccountId(0)); + } + + @Test + void clearAutoRenewAccountIdFrozen() { + var tx = spawnTestTransaction(); + assertThrows(IllegalStateException.class, () -> tx.clearAutoRenewAccountId()); + } } diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.snap index c22790fbc..bc899ce78 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.snap +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.snap @@ -4,5 +4,5 @@ com.hedera.hashgraph.sdk.TopicUpdateTransactionTest.clearShouldSerialize=[ com.hedera.hashgraph.sdk.TopicUpdateTransactionTest.setShouldSerialize=[ - "# com.hedera.hashgraph.sdk.proto.TransactionBody\nconsensus_update_topic {\n admin_key {\n ed25519: \"\\340\\310\\354\\'X\\245\\207\\237\\372\\302&\\241<\\fQky\\236r\\343QA\\240\\335\\202\\217\\224\\323y\\210\\244\\267\"\n }\n auto_renew_account {\n account_num: 5009\n realm_num: 0\n shard_num: 0\n }\n auto_renew_period {\n seconds: 86400\n }\n expiration_time {\n seconds: 1554158542\n }\n memo {\n value: \"Hello memo\"\n }\n submit_key {\n ed25519: \"\\340\\310\\354\\'X\\245\\207\\237\\372\\302&\\241<\\fQky\\236r\\343QA\\240\\335\\202\\217\\224\\323y\\210\\244\\267\"\n }\n topic_i_d {\n realm_num: 0\n shard_num: 0\n topic_num: 5007\n }\n}\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntransaction_fee: 200000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}" + "# com.hedera.hashgraph.sdk.proto.TransactionBody\nconsensus_update_topic {\n admin_key {\n ed25519: \"\\332\\207p\\020\\227\\206ns\\360\\335\\224,\\273>\\227\\0063)\\371\\005X\\206!\\261x\\322\\027Yh\\215G\\374\"\n }\n auto_renew_account {\n account_num: 8\n realm_num: 8\n shard_num: 8\n }\n auto_renew_period {\n seconds: 36000\n }\n expiration_time {\n seconds: 1554158542\n }\n memo {\n value: \"test memo\"\n }\n submit_key {\n ed25519: \"\\373\\210\\2637\\337\\327ea{\\3442*\\347\\357\\2053\\326\\036d\\203\\005\\016 \\354HE\\2453\\275\\334\\244\\261\"\n }\n topic_i_d {\n realm_num: 0\n shard_num: 0\n topic_num: 5007\n }\n}\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntransaction_fee: 200000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}" ] \ No newline at end of file diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionIdTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionIdTest.java index 615368a69..7342666b7 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionIdTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionIdTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionReceiptQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionReceiptQueryTest.java index f449fa399..bee07c33e 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionReceiptQueryTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionReceiptQueryTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordQueryTest.java index 97c2e8362..b55c2e734 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordQueryTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordQueryTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordTest.java index 0707ec5e9..20ab3b7e4 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionTest.java index efef40ab3..1fc72603a 100644 --- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionTest.java +++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionTest.java @@ -2,7 +2,7 @@ * * Hedera Java SDK * - * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC + * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/version.gradle b/version.gradle index d0b19af45..3da30a4d7 100644 --- a/version.gradle +++ b/version.gradle @@ -2,4 +2,4 @@ // and `sdk/build.gradle` so I extracted them into another file and made both aforementioned // files import this one. group = "com.hedera.hashgraph" -version = "2.26.0" +version = "2.28.0"